ClickHouse(04)如何搭建ClickHouse集群

ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么安装和部署

ClickHouse集群部署流程大概如下:

  1. 环境准备
  2. 在每台机器上安装单机版ClickHouse
  3. config.xml配置
  4. Zookeeper配置
  5. 进入ClickHouse测试

环境准备

  1. 下载安装包

按照ClickHouse(03)ClickHouse怎么安装和部署中的介绍下载即可

  1. 设置FQDN,也就是主机名称,命令如下
bash 复制代码
# hostnamectl --static set-hostname ck1.com
  1. 配置hosts文件
bash 复制代码
# 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中配置

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中配置

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的配置文件(如果已存在,则直接往里面写入即可),新增内容:

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客户端

bash 复制代码
clickhouse-client --host="127.0.0.1" --port="9000" --user="****" --password="****"

当前节点所属集群的相关信息

sql 复制代码
select * from system.clusters where cluster = 'test_cluster1';

查询结果

bash 复制代码
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系列文章

相关推荐
Jacky(易小天)7 分钟前
MongoDB比较查询操作符中英对照表及实例详解
数据库·mongodb·typescript·比较操作符
Karoku0661 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
莫叫石榴姐1 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
小技与小术2 小时前
数据库表设计范式
数据库·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer2 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
魔珐科技2 小时前
以3D数字人AI产品赋能教育培训人才发展,魔珐科技亮相AI+教育创新与人才发展大会
大数据·人工智能
刘大浪3 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis