当前位置: 首页 > news >正文

docker安装clickhouse副本集群

docker安装clickhouse副本集群

  • 1、clickhouse副本集群搭建
    • 1.1、docker安装zookeeper集群
      • 1.1.1、zookeeper第一个节点安装
      • 1.1.2、zookeeper第二个节点安装
      • 1.1.3、zookeeper第三个节点安装
      • 1.1.4、zookeeper客户端命令
  • 2、Clickhouse副本集群搭建
    • 2.1、clickhouse搭建
    • 2.2、验证集群
  • 3、Clickhouse分片集群搭建

1、clickhouse副本集群搭建

1、Clickhouse的集群搭建依赖zookeeper。
2、官方建议,不要在clickhouse所在的服务器上运行zookeeper。因为zookeeper对数据延迟非常敏感,而clickhouse可能会占用所有可用的系统资源。咱们是资源缺少,zookeeper和clickhouse安装到一台机器了。

1、如果数据量不大,并且想要高可用,就使用副本集群,别搭建高可用集群,官网给出的建议是,30多亿条数据仅用200G磁盘,单机查询CPU性能是很高的。
2、Clickhouse副本集群目的是保证高可用,相当于备份服务器,访问哪个副本都可以增删改查,副本之间是没主从关系的。
3、clickhouse的副本是表级别的,根据表引擎来的。

下面案例是把clickhouse和zookeeper安装在一台机器上。

IP服务
192.168.52.7Zookeeper、Clickhouse
192.168.52.8Zookeeper 、Clickhouse
192.168.52.9Zookeeper 、Clickhouse

1.1、docker安装zookeeper集群

1.1.1、zookeeper第一个节点安装

docker pull wurstmeister/zookeeper
docker run --restart=always \
--name zk01 -d \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
wurstmeister/zookeeper

进入容器

docker exec -it zk01 bash

编辑配置文件,在文件末尾添加下面三行(容器内操作)

vi /opt/zookeeper-3.4.13/conf/zoo.cfg
server.1=0.0.0.0:2888:3888
server.2=192.168.52.8:2888:3888
server.3=192.168.52.9:2888:3888

创建myid文件,并填写内容(容器内操作)

echo 1 > /opt/zookeeper-3.4.13/data/myid

重启zk

docker restart zk01

查看zk状态(容器内操作)

./bin/zkServer.sh status
root:/opt/zookeeper-3.4.13# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower

1.1.2、zookeeper第二个节点安装

docker pull wurstmeister/zookeeper
docker run --restart=always \
--name zk02 -d \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
wurstmeister/zookeeper

进入容器

docker exec -it zk02 bash

编辑配置文件,在文件末尾添加下面三行(容器内操作)

vi /opt/zookeeper-3.4.13/conf/zoo.cfg
server.1=192.168.52.7:2888:3888
server.2=0.0.0.0:2888:3888
server.3=192.168.52.9:2888:3888

创建myid文件,并填写内容(容器内操作)

echo 2 > /opt/zookeeper-3.4.13/data/myid

重启zookeeper

docker restart zk02

查看zk状态(容器内操作)

./bin/zkServer.sh status
root:/opt/zookeeper-3.4.13# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower

1.1.3、zookeeper第三个节点安装

docker pull wurstmeister/zookeeper
docker run --restart=always \
--name zk03 -d \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
wurstmeister/zookeeper

进入容器

docker exec -it zk03 bash

编辑配置文件,在文件末尾添加下面三行(容器内操作)

vi /opt/zookeeper-3.4.13/conf/zoo.cfg
server.1=192.168.52.7:2888:3888
server.2=192.168.52.8:2888:3888
server.3=0.0.0.0:2888:3888

创建myid文件,并填写内容(容器内操作)

echo 3 > /opt/zookeeper-3.4.13/data/myid

重启zk

docker restart zk03

查看zk状态(容器内操作)

./bin/zkServer.sh status
root:/opt/zookeeper-3.4.13# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader

从上面查看zookeeper状态来看,集群是有两个角色的,分为leader和follower,如果是单机版,状态则是standalone

1.1.4、zookeeper客户端命令

进入操作客户端

./zkCli.sh -server 127.0.0.1:2181	
#查看根目录
ls /
#递归删除
rmr /clickhouse
#删除单个,如果有子节点则不能删除
delete /clickhouse

2、Clickhouse副本集群搭建

2.1、clickhouse搭建

参考本人写的单机版clicihouse搭建,三台机器都按照单机版搭建好,点击进入单机版搭建教程。

单机版clicihouse搭建后,需要做下面操作(三个节点都做 )

编辑配置文件config.xml

vi /data/clickhouse/clickhouse-server/config.xml

指定zookeeper地址

 <zookeeper><node><host>192.168.52.7</host><port>2181</port></node><node><host>192.168.52.8</host><port>2181</port></node><node><host>192.168.52.9</host><port>2181</port></node></zookeeper>

修改完配置文件,记得重启服务,三个节点都要重启

2.2、验证集群

副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表。


#进入容器
docker exec -it ck01 bash
#进入客户端交互界面,执行下面建表语句
clickhouse-client
下面建表ReplicatedMergeTree 参数解释:
第一个参数是分片的 zk_path 一般按照:/clickhouse/table/{shard}/{table_name} 的格式写,如果只有一个分片就写 01 即可。咱们这默认写/clickhouse/table/01/t_order_rep
第二个参数是副本名称,相同的分片副本名称不能相同,在每台建表时不能一样,咱们用rep_7,rep_8,rep_9。
create table t_order_rep  (id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime
) engine =ReplicatedMergeTree('/clickhouse/table/01/t_order_rep','rep_7')partition by toYYYYMMDD(create_time)primary key (id)order by (id,sku_id);

在任意一台机器上执行插入,然后在其他机器上查询。

insert into t_order_rep values
(101,'sku_001',1000.00,'2020-06-01 12:00:00'),
(102,'sku_002',2000.00,'2020-06-01 12:00:00'),
(103,'sku_004',2500.00,'2020-06-01 12:00:00'),
(104,'sku_002',2000.00,'2020-06-01 12:00:00'),
(105,'sku_003',600.00,'2020-06-02 12:00:00');

3、Clickhouse分片集群搭建

1、副本集群,实际就是对数据做了备份,达到了高可用。 分片集群是对数据做了横向扩展,就是如果一个机器装不下数据,就用分片的技术,分配到多台机器上。
2、其实很多场景都用不到分片集群。数据量不是太大的情况,就用副本集群吧。分片集群查询反正会消耗网络资源,从而降低查询速度。

这个后面有时间更新把》》》》》》

http://www.lryc.cn/news/495726.html

相关文章:

  • vue超过三行显示省略号和查看更多按钮
  • 【软考速通笔记】系统架构设计师⑤——软件工程基础知识
  • Qt 详解QRubberBand
  • HTB:Love[WriteUP]
  • 【RabbitMQ 消息列队测试之:调试技巧】
  • Ubuntu FTP服务器的权限设置
  • @Pattern (用于校验字符串是否符合特定正则表达式)
  • 5G学习笔记之随机接入
  • webGL入门教程_03GLSL、OpenGL、WebGL 定义及关系
  • git基本操作说明
  • 微知-git如何添加空目录的几种方式?(.gitkeep, githook, gitconfig)
  • MySQL 数据库学习教程一:开启数据库探索之旅
  • Vue+Elementui el-tree树只能选择子节点并且支持检索
  • Lumos学习王佩丰Excel第十八讲:LOOKUP函数与数组
  • Git的基本使用操作
  • 【C语言】结构体嵌套
  • PDF view | Chrome PDF Viewer |Chromium PDF Viewer等指纹修改
  • maxun爬虫工具docker搭建
  • JAVAWeb之javascript学习
  • vue3中是如何实现双向数据绑定的
  • JavaScript事件机制详解
  • k8s运行运行pod报错超出文件描述符表限制
  • vue 2 父组件根据注册事件,控制相关按钮显隐
  • 22智能 图
  • Springfox、Swagger 和 Springdoc
  • 编程基础篇
  • GPT视角下,如何在密码学研究中找到属于你的方向?
  • 【经典】星空主题的注册界面HTML,CSS,JS
  • Linux学习——4_WEB服务器的部署及优化
  • 《Vue 组件化开发:构建可复用的模块》