clickhouse集群搭建

本文详细介绍了如何在3台服务器上搭建ClickHouse分布式集群,包括JDK和Zookeeper环境的配置、ClickHouse的下载与安装、集群配置、端口调整、分布式表的创建和测试,以及在过程中遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

目录

前言

1.JDK环境

2.zk环境

2.1 下载解压

2.2 配置环境变量

2.3 集群配置

2.4 启动测试zk集群

3.clickhouse环境

3.1 下载安装

3.2 集群配置

3.3 启动clickhouse集群

3.4 测试

4.过程中遇到的问题

5.参考


前言

1.本文搭建基于3台服务器的clickhouse分布式集群

2.zk和clickhouse版本可能存在适配性问题,本文使用版本能成功搭建,若其他版本在clickhouse分布式部署时有相关报错,可能是版本问题。

1.JDK环境

不做赘述,查看是否安装

java -version

2.zk环境

本文使用的是 apache-zookeeper-3.8.3-bin.tar.gz

注:

     1.zk需要奇数服务器搭建,方便支持投票机制

     2.以下操作每台服务器都操作一遍

2.1 下载解压

下载地址:Index of /apache/zookeeper/zookeeper-3.8.3 或 apache-zookeeper-3.8.3-bin.tar.gz

(1)下载并上传到服务器指定文件夹,如:/opt/soft/ 下

(2)tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz

2.2 配置环境变量

vim /etc/profile
export ZK_HOME=/opt/soft/apache-zookeeper-3.8.3-bin
export PATH=$PATH:$ZK_HOME/bin

##使环境变量生效
source /etc/profile

##查看是否生效
echo $ZK_HOME

2.3 集群配置

1)创建相关目录

mkdir /opt/soft/apache-zookeeper-3.8.3-bin/data

mkdir /opt/soft/apache-zookeeper-3.8.3-bin/log

2)修改zk配置

cd apache-zookeeper-3.8.3-bin/conf/

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

<!-- 修改此处指定位置 -->
dataDir=/opt/soft/apache-zookeeper-3.8.3-bin/data
dataLogDir=/opt/soft/apache-zookeeper-3.8.3-bin/log

<!-- 末尾添加内容 -->
server.174=10.35.36.174:2888:3888
server.175=10.35.36.175:2888:3888
server.176=10.35.36.176:2888:3888

server.xx=ip:2888:3888

xx:自定义序列号,标识服务器

3)添加myid到刚才新建的data目录下

此处174为server.xx中的xx,每台服务器不一样,注意修改

echo 174 >/opt/soft/apache-zookeeper-3.8.3-bin/data/myid

2.4 启动测试zk集群

zkServer.sh start
zkServer.sh status

 三台服务器启动后查看启动状态,如下表示正常,一个leader,两个follower。

可尝试连接

zkCli.sh -server 10.35.36.176:2181,10.35.36.175:2181,10.35.36.176:2181

3.clickhouse环境

3.1 下载安装

本文中使用的是23.9.1.1854版本

方式一:

wget https://packages.clickhouse.com/rpm/stable/clickhouse-server-23.9.1.1854.x86_64.rpm

wget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-23.9.1.1854.x86_64.rpm

wget https://packages.clickhouse.com/rpm/stable/clickhouse-client-23.9.1.1854.x86_64.rpm

方式二:

clickhouse-client-23.9.1.1854.x86-64.rpm

clickhouse-common-static-23.9.1.1854.x86-64.rpm

clickhouse-server-23.9.1.1854.x86-64.rpm

(1)下载到指定文件夹,如:/opt/soft/clickhouse下

(2)rpm -ivh *.rpm,过程中会要求输入密码,可自行输入亦可不输入,本文直接回车不输入

3.2 集群配置

1)查看端口是否被占用,lsof -i:9000

clickhouse默认9000端口通常会和Python冲突

2)vim /etc/clickhouse-server/config.xml

<!-- 若第一步中9000端口被占用,则可以更改端口 -->
<tcp_port>6000</tcp_port>

<!-- 取消注释,更改监听让所有正常ip可连接 -->
<listen_host>0.0.0.0</listen_host>

<!-- 修改remote_servers中的内容如下 -->
<remote_servers>
    <!-- 可自定义clickhouse集群名 -->
    <ck_cluster>  
        <!-- 数据分片1  -->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>10.35.36.174</host>
                <port>6000</port>   <!-- 注意端口是否更改,默认9000 -->
            </replica>
        </shard>
        <!-- 数据分片2  -->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>10.35.36.175</host>
                <port>6000</port>   <!-- 注意端口是否更改,默认9000 -->
            </replica>
        </shard>
        <!-- 数据分片3  -->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>10.35.36.176</host>
                <port>6000</port>   <!-- 注意端口是否更改,默认9000 -->
            </replica>
        </shard>
    </ck_cluster>
</remote_servers>

<!-- 新增,每个机器shard分别为01,02,03,replica也为对应服务器地址174,175,176 -->
<macros>
    <layer>ck_cluster</layer>
    <shard>01</shard>
    <replica>10.35.36.176</replica>
</macros>

<zookeeper>
    <!-- index内容为server.xxx:ip:2888:3888中的xxx -->
    <node index="174">
        <host>10.35.36.174</host>
        <port>2181</port>
    </node>
    <node index="175">
        <host>10.35.36.175</host>
        <port>2181</port>
    </node>
    <node index="176">
        <host>10.35.36.176</host>
        <port>2181</port>
    </node>
</zookeeper>

3.3 启动clickhouse集群

systemctl start clickhouse-server
systemctl status clickhouse-server

启动成功,登录clickhouse集群:

#注:若未更改9000端口,则 clickhouse-client 即可
clickhouse-client --port 6000 -m

SELECT * from system.clusters;
SELECT * FROM system.zookeeper WHERE path = '/clickhouse';

如上表示clickhouse分布式部署成功,若返回KEEPER EXCEPTION之类的,则部署有问题。

3.4 测试

1)创建数据库

# 在自定义的ck_cluster集群上创建数据库,一台服务器执行即可部署clickhouse集群
CREATE DATABASE cluster_test ON CLUSTER ck_cluster;

2)创建表

# 创建测试表,每台服务器自己的本地表
CREATE TABLE cluster_test.cktest_local ON CLUSTER ck_cluster
(
    `id` Int64,
    `name` String,
    `age` Int32
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/cktest_local', '{replica}')
ORDER BY id;



# 创建测试表,分布式表(所有数据)
CREATE TABLE cluster_test.cktest_all ON CLUSTER ck_cluster
( 
   `id` Int64, 
   `name` String, 
   `age` Int32
)
ENGINE = Distributed('ck_cluster', 'cluster_test', 'cktest_local', rand());

3)插入数据

# 服务器174中,连接clickhouse,插入测试数据
insert into cktest_local values(1,'zhang',18),(2,'li',22),(3,'zhao',23),(4,'qian',24),(5,'sun',25),(6,'wang',26),(7,'tian',27),(8,'he',28),(9,'zheng',29),(10,'dong',30);

# 服务器175中,连接clickhouse,插入测试数据
insert into cktest_local values (14,'100',14),(15,'100',15);

# 服务器176中,连接clickhouse,插入测试数据
insert into cktest_local values (11,'100',11),(12,'100',12),(13,'100',13);

4)查询

# 在不同服务器中只能看到在本服务器上插入的数据
SELECT * FROM cktest_local;

# 无论在哪台服务器执行,都可看到三次插入的所有数据
SELECT * FROM cktest_all;

4.过程中遇到的问题

Coordination::Exception: Unexpected handshake length received: 37 (Marshalling error): while receiving handshake from ZooKeeper. (KEEPER_EXCEPTION) (version 22.6.3.35 (official build))

不清楚是不是版本问题,换了版本就行了,有知道的大佬可以说下。

5.参考

clickhouse集群部署以及分布式表引擎使用_clickhouse 集群部署-CSDN博客

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值