鲲鹏社区首页
中文
注册
ClickHouse混合部署测试指导

ClickHouse混合部署测试指导

安装部署ClickHouse

发表于 2025/09/12

0

作者 | 朱勇

1 环境信息

鲲鹏硬件环境信息:

CPU

鲲鹏920 5220处理器(32核)

内存

384G

硬盘

系统盘:1 * RAID 0(1 * 1.2T SAS HDD)

数据盘:12 * RAID 0(12 * 8T SATA HDD)

网卡

业务网络10GE

管理网络GE

操作系统

openEuler 22.03 LTS

x86硬件环境信息:

CPU

Intel 5218R(20核40线程)

内存

384G

硬盘

系统盘:1 * RAID 0(1 * 1.2T SAS HDD)

数据盘:12 * RAID 0(12 * 8T SATA HDD)

网卡

业务网络10GE

管理网络GE

操作系统

CentOS 7.4

如果仅仅是测试混合部署的功能,那么对Arm和x86的核数没有要求,只要是Arm和x86架构的机器就行。

软件信息:

软件

版本

Bisheng JDK

jdk8u342

ZooKeeper

3.8.0

ClickHouse

22.8.13.20

2 集群规划

使用2+2部署一个ClickHouse集群,验证混合部署的功能。

机器名称

用途

机器IP地址

Arm机器1(agent1)

分片1 副本1

xx.xx.xx.132

x86机器2(agent2)

分片1 副本2

xx.xx.xx.133

x86机器1(agent3)

分片2 副本1

xx.xx.xx.134

Arm机器2(agent4)

分片2 副本2

xx.xx.xx.138


3 部署

请参见《大数据OmniMV ClickHouse 性能测试指南》部署ClickHouse。注意分配/副本的写法,比如:

<remote_servers>

<ck_cluster>

<!-- 数据分片1 -->

<shard>

<internal_replication>true</internal_replication>

<replica>

<host>ARM节点1 IP</host>

<port>9000</port>

</replica>

<replica>

<host>X86节点2 IP</host>

<port>9000</port>

</replica>

</shard>

<!-- 数据分片2 -->

<shard>

<internal_replication>true</internal_replication>

<replica>

<host>X86节点1</host>

<port>9000</port>

</replica>

<replica>

<host>ARM节点2</host>

<port>9000</port>

</replica>

</shard>

</ck_cluster>

</remote_servers>

每个节点的<macros></macros>标签需要有差异,根据shard,replica来进行配置:

<macros>

<cluster>mycluster</cluster>

<shard>0x</shard>

<replica>0x</replica>

</macros>

集群验证:

在每个节点上启动ClickHouse Server节点。

cllickhouse start

进入ClickHouse Client节点。

clickhouse client -h 192.168.58.168 --port 19000 -n -m

如启动不成功或进入不了数据库,可通过以下命令启动。

/usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid

启动后关闭远程连接窗口。重新连接服务器再尝试进入数据库。

首先可以查看cluster信息。

select * from system.clusters where cluster='mycluster';

创建on cluster表。

CREATE TABLE customer on cluster mycluster

(

C_CUSTKEY UInt32,

C_NAME String,

C_ADDRESS String,

C_CITY LowCardinality(String),

C_NATION LowCardinality(String),

C_REGION LowCardinality(String),

C_PHONE String,

C_MKTSEGMENT LowCardinality(String)

)

ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default.customer','{replica}') ORDER BY (C_CUSTKEY);

创建分布式表。

CREATE TABLE default.customer_all on cluster mycluster as default.cusomer ENGINE = Distributed(mycluster, default, customer, rand());

查询分布式表,会利用所有的计算资源。

查询本地表,数据只会在同一个shard同步,然后计算资源也是只用到了本机的计算资源。

4 混合部署功能验证

4.1 ClickHouse标准数据集SSB测试验证

请参见《大数据OmniMV ClickHouse 性能测试指南》中的“SSB-分布式性能提升测试”章节。集群环境如下:






插入数据测试:




4.2 ClickHouse可靠性测试验证

须知:ClickHouse读写测试均需要验证。

验证机器的容错功能:关闭其中一个节点的clickhouse server服务,比如关闭ARM节点1或者X86节点1,其余3个节点仍然正常运行,预计SQL任务还是正常执行。

验证结果:

Arm节点1执行clickchouse stop

查询数据:



插入数据:


验证数据的完整性:关闭同一个shard分片的clickhouse server服务,比如关闭ARM节点1和X86节点2,如果失去了shard分片1,预计SQL任务会运行失败。

验证结果:

Arm节点1和x86节点2执行clickchouse stop


验证机器故障恢复功能:在ARM节点1和X86节点2同时故障的情况下,开始恢复其中一个节点,比如恢复ARM节点1,预计SQL任务还是会正常运行。

重新启动x86节点2:

关闭x86节点2,重新启动arm节点1:


插入数据验证时存在异常,重新启动x86节点2后数据恢复正常。

验证机器故障节点替换功能:ARM节点1故障了,使用另外一个节点ARM3节点去替换ARM节点1,数据进行备份转移之后,进行查询,预计SQL任务可以正常运行。

Arm节点1停止服务:

clickhouse stop

/usr/local/zookeeper/bin/zkServer.sh stop

修改agen2、agent3、agent4的配置文件并重启ClickHouse:

sed -i "s#10.44.119.181#10.44.119.132#g" /etc/clickhouse-server/config.xml

clickhouse restart

将arm节点1的“/etc/clickhouse-server/config.xml”复制到新增的节点arm3,启动ZooKeeper,启动ClickHouse。

sed -i "s#10.44.119.181#10.44.119.132#g" /etc/clickhouse-server/config.xml

/usr/local/zookeeper/bin/zkServer.sh start

clickhouse start

登录数据库。

clickhouse client -h localhost --port 19000 -n -m

创建本地表和分布式表,不要加“on cluster”,否则会报错,该表在其他节点已存在。

创建完本地表和分布式表后,会自动进行数据同步。期间可以在各节点上读写数据,但数据未同步完,但数据未同步完,在新节点上的数据会比较少,等同步完就和x86节点2数据一致了。

4.3 ClickHouse功能用例测试(主要是单节点功能测试)

请参见《ClickHouse功能测试初探》。主要是单节点的功能用例测试,可能不涉及分布式用例,优先级较低。

可以使用clickhouse-test --help查看具体测试命令

预期在混合部署的模式下,单节点功能用例可以正常执行。

5 约束和条件

  1. 节点扩容,历史数据不会自动同步。

    新增节点,重新配置“/etc/clickhouse-server/config.xml”配置文件,新增<remote_servers>配置项,可以新增shard分片配置,之前的数据不会同步,后续新插入的数据会同步到该节点。

    其余节点上的历史数据不会自动同步到该节点,需要手动插入数据。新增数据,会按照分片的数据插入到该节点。

  2. 修改配置文件,需要重启ClickHouse服务。

    比如,进行节点扩容,或者节点替换,过程中修改了“/etc/clickhouse-server/config.xml”配置文件,如果要生效配置,则需要重启clickhouse-server服务

    建议生产环境,集群规划相关的配置放在ZooKeeper配置项中,做到配置热生效。

  3. 如果副本节点1故障,副本节点2刚插入完数据,副本节点1恢复,数据在同步过程中副本节点2故障,则可能丢失部分数据。

本页内容