ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么安装和部署。
ClickHouse集群部署流程大概如下:
按照ClickHouse(03)ClickHouse怎么安装和部署中的介绍下载即可
# hostnamectl --static set-hostname ck1.com# cat /etc/hosts……10.37.129.10 ck110.37.129.11 ck2按照ClickHouse(03)ClickHouse怎么安装和部署中的介绍安装即可
要配置集群,需要在 /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在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,通过 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.clustersWHERE 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
作者公众号:张飞的猪大数据分享,不定期分享大数据学习的总结和相关资料,欢迎关注。