ClickHouse集群的搭建和部署和單機的部署是類似的,主要在於配置的不一致,如果需要瞭解ClickHouse單機的安裝設部署,可以看看這篇文章,ClickHouse(03)ClickHouse怎麼安裝和部署。 ClickHouse集群部署流程大概如下: 環境準備 在每台機器上安裝單機版Click ...
ClickHouse集群的搭建和部署和單機的部署是類似的,主要在於配置的不一致,如果需要瞭解ClickHouse單機的安裝設部署,可以看看這篇文章,ClickHouse(03)ClickHouse怎麼安裝和部署。
ClickHouse集群部署流程大概如下:
- 環境準備
- 在每台機器上安裝單機版ClickHouse
- config.xml配置
- Zookeeper配置
- 進入ClickHouse測試
環境準備
- 下載安裝包
按照ClickHouse(03)ClickHouse怎麼安裝和部署中的介紹下載即可
- 設置FQDN,也就是主機名稱,命令如下
# hostnamectl --static set-hostname ck1.com
- 配置hosts文件
# cat /etc/hosts
……
10.37.129.10 ck1
10.37.129.11 ck2
在每台機器上安裝單機版ClickHouse
按照ClickHouse(03)ClickHouse怎麼安裝和部署中的介紹安裝即可
config.xml配置
要配置集群,需要在 /etc/clickhouse-server/config.xml的 <remote_servers> 標簽下添加相關集群信息。或者在/etc/metrika.xml中進行配置,這二者選其中一個就可以。
每一臺機器的congfig.xml或者metrika.xml都要寫入這樣的配置。
如果在config.xml中配置
# 全局配置config.xml文件中引入metrika.xml
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
#引用zookeeper配置的定義
<zookeeper incl="zookeeper-servers" optional="true" />
<remote_servers>
<test_cluster1>
<shard>
<replica>
<host>ck1</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<host>ck2</host>
<port>9000</port>
</replica>
</shard>
</test_cluster1>
</remote_servers>
如果在metrika.xml中配置
<yandex>
<clickhouse_remote_servers>
<!--自定義集群名稱-->
<test_cluster1>
<!--定義集群的分片數量,2個shard標簽說明有2個節點-->
<shard>
<!--定義分片的副本數量,這裡副本只有1個-->
<replica>
<host>ck1</host>
<port>9000</port>
</replica>
</shard>
<shard>
<replica>
<host>ck2</host>
<port>9000</port>
</replica>
</shard>
</test_cluster1>
</clickhouse_remote_servers>
</yandex>
Zookeeper的配置
zookeeper在clickhouse中主要用在副本表數據的同步(ReplicatedMergeTree引擎)以及分散式表(Distributed)的操作上,zookeeper不參與任何實質性的數據傳輸。
在/etc/clickhouse-server目錄下創建一個metrika.xml的配置文件(如果已存在,則直接往裡面寫入即可),新增內容:
# 類似這樣子,host 和 port填上自己的
<zookeeper-servers>
<node index="1">
<host>10.10.1.20</host>
<port>2181</port>
</node>
<node index="2">
<host>10.10.1.21</host>
<port>2181</port>
</node>
<node index="3">
<host>10.10.1.22</host>
<port>2181</port>
</node>
</zookeeper-servers>
進入ClickHouse測試
配置完之後,無需重啟clickhouse服務,clickhouse會熱載入這些配置。我們可以分別登陸所有clickhouse,通過 select * from system.clusters; 查看當前節點所屬集群的相關信息:
進入ClickHouse客戶端
clickhouse-client --host="127.0.0.1" --port="9000" --user="****" --password="****"
當前節點所屬集群的相關信息
select * from system.clusters where cluster = 'test_cluster1';
查詢結果
SELECT *
FROM system.clusters
WHERE cluster = 'test_cluster1'
Query id: eb2064de-92f3-41b0-ac74-6b025d5082a1
┌─cluster──────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─────┬─host_address──┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─slowdowns_count─┬─estimated_recovery_time─┐
│ test_cluster1 │ 1 │ 1 │ 1 │ ck1 │ 10.37.129.10 │ 9000 │ 0 │ default │ │ 0 │ 0 │ 0 │
│ test_cluster1 │ 2 │ 1 │ 1 │ ck2 │ 10.37.129.11 │ 9000 │ 1 │ default │ │ 0 │ 0 │ 0 │
└──────────────┴───────────┴──────────────┴─────────────┴───────────────┴───────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────┴─────────────────────────┘
3 rows in set. Elapsed: 0.002 sec.
到了這裡,就完成clickhouse 2shard1replica集群部署。
註意,clickhouse集群是非主從結構,各個節點是相互獨立的。因此,和hdfs、yarn的集群不同,我們可以根據配置,靈活的配置集群,甚至可以將一個節點同時分配給多個集群。
ClickHouse相關資料分享
文章參考:ClickHouse(04)如何搭建ClickHouse集群
本文來自博客園,作者:張飛的豬,轉載請註明原文鏈接:https://www.cnblogs.com/the-pig-of-zf/p/16471577.html
作者公眾號:張飛的豬大數據分享,不定期分享大數據學習的總結和相關資料,歡迎關註。