栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

clickhouse分布式三分片一副本部署

clickhouse分布式三分片一副本部署

clickhouse分布式三分片一副本部署 1、集群节点信息
192.168.18.237	ck1

192.168.18.238	ck2

192.168.18.239	ck3
2、安装zookeeper 2.1 下载 apache-zookeeper-3.6.2-bin.tar.gz安装包

放置在所有服务器上的 /opt/zk 目录下

2.2. 进入到/opt/zk目录下,解压tar包
tar -zxf apache-zookeeper-3.6.2-bin.tar.gz
2.3.修改zoo.cfg文件

进入zookeeper的conf目录,拷贝zoo_sample.cfg为zoo.cfg

cp zoo_sample.cfg zoo.cfg 

修改zoo.cfg文件:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

server.1=192.168.18.237:2888:3888
server.2=192.168.18.238:2888:3888
server.3=192.168.18.239:2888:3888
2.4. 创建需要的目录
mkdir -p /data/zookeeper/log

配置完成后将当前的zookeeper目录scp到其他两个节点

scp -r /opt/zk/zookeeper root@ck2:/opt/
scp -r /opt/zk/zookeeper root@ck3:/opt/
scp -r /data/zookeeper root@ck2:/opt/
scp -r /data/zookeeper root@ck3:/opt/
2.5. 设置myid
vi /data/zookeeper/myid

ck1的myid内容为1,ck2的myid内容为2,ck3的myid内容为3

2.6.启动zookeeper服务

进入zookeeper的bin目录,启动zookeeper服务,每个节点都需要启动

./zkServer.sh start
./zkServer.sh enable

使用zkServer.sh status 查看节点信息,其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的

3、安装clickhouse 3.1 在三个节点分别搭建单机版
rpm -ivh clickhouse-common-static-20.12.5.14-2.x86_64.rpm

rpm -ivh clickhouse-server-20.12.5.14-2.noarch.rpm

rpm -ivh clickhouse-client-20.12.5.14-2.noarch.rpm


cat > /etc/metrika.xml <
        
        ::/0
        

EOF


sed -i 's//::/g' /etc/clickhouse-server/config.xml

sed -i 's/9000/8999/g' /etc/clickhouse-server/config.xml

sed -i  's//123456/g' /etc/clickhouse-server/users.xml

此时,各节点的clickhouse服务端口号已经改为8999,default用户的密码改为123456

启动clickhouse-server服务

systemctl start clickhouse-server
systemctl enable clickhouse-server

可以使用命令单机登录验证

clickhouse-client --host localhost --user default --password 123456 --port 8999
3.2 集群部署

所有节点修改metrika.xml

首先以一个节点为例配置,vi /etc/clickhouse-server/metrika.xml,添加配置信息如下:





 


true

ck1
8999
default
123456






true
ck2
8999
default
123456





true

ck3
8999
default
123456








 
ck1
2182


ck2
2182


ck3
2182





ck1



::/0





10000000000
0.01
lz4




说明:

  • clickhouse_remote_servers与config.xml中的incl属性值对应
  • perftest_3shards_1replicas 是集群名,可以自定义。
  • shard即为数据分片
  • internal_replication =true 这个参数和数据的写入,自动复制相关。从生产环境角度考虑,我们都是复制表,通过本地表写入,这里配置true就好。不推荐也不需要考虑其他情况。
  • clickhouse_compression数据的压缩。
  • 无副本时,可以使用node标签代替shard标签来定义节点

所有节点重启clickhouse-server服务

systemctl restart clickhouse-server
3.3 验证集群

登录clickhouse客户端

clickhouse-client --host localhost --user default --password 123456 --port 8999

SQL查询

select * from system.clusters

这样集群就搭建好了

3.4 测试

在各个节点建库、本地表

create database testdb ;
create table person_local (ID Int8, Name String, BirthDate Date) ENGINE = MergeTree(BirthDate, (Name, BirthDate), 8192);

在各个节点建分布表

create table person_all as person_local ENGINE = Distributed(perftest_3shards_1replicas, testdb, person_local, rand());

分布表(Distributed)本身不存储数据,相当于路由,需要指定集群名、数据库名、数据表名、分片KEY.
这里分片用rand()函数,表示随机分片。

查询分布表,会根据集群配置信息,路由到具体的数据表,再把结果进行合并。

  • person_local 为本地表,数据只是在本地
  • person_all 为分布式表,查询这个表,引擎自动把整个集群数据计算后返回

插入数据

insert into person_all (*) valuses ('1','a','2021-10-01');
insert into person_all (*) valuses ('2','b','2021-10-01');
insert into person_all (*) valuses ('3','c','2021-10-01');
insert into person_all (*) valuses ('4','d','2021-10-01');
insert into person_all (*) valuses ('5','e','2021-10-01');
insert into person_all (*) valuses ('6','f','2021-10-01');
insert into person_all (*) valuses ('7','g','2021-10-01');
insert into person_all (*) valuses ('8','h','2021-10-01');
insert into person_all (*) valuses ('9','i','2021-10-01');
insert into person_all (*) valuses ('10','j','2021-10-01');
insert into person_all (*) valuses ('11','k','2021-10-01');
insert into person_all (*) valuses ('12','l','2021-10-01');

再查看分布式表和本地表的数据

select * from person_all;
select * from person_local;

可以发现数据分片到了三台机器的本地表。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号