这里博主准备了4台阿里云服务器,其中一台部署ZooKeeper,另外3台部署ClickHouse集群
Docker部署ZK命令:
docker run -d --name zookeeper -p 2181:2181 -t zookeeper:3.7.0
下载地址:https://clickhouse.com/docs/zh/getting-started/install/.
下载下面4个即可,采用22.1.2.2-2版本的
下载完毕就是这样
我这里上传的路径是:/software/clickhouse
服务器安装clickhouse
1. 进入到目录
cd ../software/clickhouse
2. 安装(过程中会让输入用户名,密码。可以直接回车不输入)
sudo rpm -ivh *.rpm
3. 启动
systemctl start clickhouse-server
4. 状态查看(一定要加sudo)
sudo systemctl status clickhouse-server
5. 停止
systemctl stop clickhouse-server
6. 重启
systemctl restart clickhouse-server
7. 查看端口,默认是8123
lsof -i :8123
8. 查看正常日志 与 错误日志
tail -f /var/log/clickhouse-server/clickhouse-server.log
tail -f /var/log/clickhouse-server/clickhouse-server.err.log
启动成功截图:sudo systemctl status clickhouse-server
1. 进入配置文件
vim /etc/clickhouse-server/config.xml
2. 解除下面配置的注释
0.0.0.0
3. 保存即可
4. 重启
systemctl restart clickhouse-server
1. 进入hosts文件
sudo vim /etc/hosts
2. 配置每个节点ip : 主机名——->注意:为了安全起见,一定要使用内网ip,不要使用公网ip
172.31.13.102 iZwz9bg08mzvezp7qumh70Z
172.28.124.76 iZwz9bg08mzvezp7qumh71Z
172.31.13.103 iZwz9bg08mzvezp7qumh72Z
3. 如何查看机器名称?
服务器任意地方输入 hostname 命令
4. 把第二步骤的3条复制到每个节点上即可
5. 重启clickhouse
systemctl restart clickhouse-server
6. 进入配置文件
vim /etc/clickhouse-server/config.xml
7. 配置zookeeper地址,每台服务器都配置,解开注释或者重新写都可以, 多个zookeeper可以加多个node
zookeeper的公网/内网ip
2181
8. 重启
systemctl restart clickhouse-server
9. 开放阿里云端口
网络安全组记得开放http端口是8123,tcp端口是9000, 同步端口9009
验证点1:
连接上zookeeper时,system库中,会多一张zookeeper表
验证点2:实战
1. 在所有节点上创建表
#节点一,zk路径一致,副本名称不一样
CREATE TABLE tb_product
(
userId UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/1/tb_product', 'product-replica-1')
ORDER BY (userId)
#节点二,zk路径一致,副本名称不一样
CREATE TABLE tb_product
(
userId UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/1/tb_product', 'product-replica-2')
ORDER BY (userId)
#节点三,zk路径一致,副本名称不一样
CREATE TABLE tb_product
(
userId UInt32
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/1/tb_product', 'product-replica-3')
ORDER BY (userId)
2. 在节点1上添加几条数据
INSERT into tb_product values(1),(2),(3)
3. 去节点2,3上查询,依然能够看到节点1插入的数据(达到此效果,表示配置成功)
select * from tb_product
4. 查看下zk
select * from system.zookeeper where path='/'
注意1,3个节点的zk路径一定要【都一样】,副本名称一定【不能一样】
注意2,副本间同步只针对数据,表是不会同步的,所以建表的时候,每个节点都要执行建表语句
注意3,所有节点互为副本,没有什么主从之分
1. 进入配置文件,3台服务器都要写
vim /etc/clickhouse-server/config.xml
2. 找到标签为,在其内部复制如下内容, 3台服务器都要写以下内容
172.31.13.102
9000
172.28.124.76
9000
172.31.13.103
9000
注释:
cluster_3shards_1replicas:集群cluster的名称,随便起
shard:每有一个shard块,就代表一个分片
replica:每个shard分片的副本,shard下有几个replica块,就表示每个shard有多少个副本,这里有一个
host: 服务器的内网地址
port: tcp通信端口,默认是9000
3. 重启
systemctl restart clickhouse-server
4. 验证集群是否成功,在clickhouse中执行如下sql命令:看看是否存在cluster_3shards_1replicas这个集群
select * from system.clusters
建表实操
1. 【选一个节点】创建好【本地表】后,在1个节点创建,会在其他节点都存在
create table default.cluster_order on cluster cluster_3shards_1replicas
(id Int8,name String) engine =MergeTree order by id;
2. 【选一个节点】创建【分布式表名】 cluster_order_all,在1个节点创建,会在其他节点都存在
create table cluster_order_all on cluster cluster_3shards_1replicas (
id Int8,name String
)engine = Distributed(cluster_3shards_1replicas,default, cluster_order,hiveHash(id));
3.分布式表插入-->会按照权重等策略分配到不同的分片
insert into cluster_order_all values(1,'冰冰'),(2,'大钊'),(3,'小D'),(4,'老王');
4. 【任意节点查询-分布式,全部数据】 【查询的是全部的数据】
SELECT * from cluster_order_all
5. 【任意本地节点查询,部分数据】 【查询的是部分数据,仅能查到自己库里面的数据】
SELECT * from cluster_order
注意:分布式表创建的格式如下:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = Distributed(cluster, database, table[, sharding_key[, policy_name]])
[SETTINGS name=value, ...]
cluster集群名: cluster_3shards_1replicas 【clickhouse配置文件中配置的那个集群名称】
database库名:default 是数据库的名,即default.cluster_order
table表名:cluster_order(每个节点表都叫这个名)
sharding_key:hiveHash(id) 对id做hash
向分布式表插入数据后,通过分布式表查询, 可以查到全部数据:
使用本地表查询,只能查到部分数据
# 卸载及删除安装文件(需root权限)
yum list installed | grep clickhouse
yum remove -y clickhouse-common-static
yum remove -y clickhouse-server-common
rm -rf /var/lib/clickhouse
rm -rf /etc/clickhouse-*
rm -rf /var/log/clickhouse-server
rpm -e clickhouse-common-static-dbg-22.1.2.2-2.x86_64