ClickHouse集群安装
前言
- 目标:ClickHouse单机集群版安装
- 本文面向ClickHouse初学者
- 服务器环境 Ubuntu18.04
集群安装步骤如下:
- 安装java
- 安装Zookeeper(依赖Java)
- 安装单机ClickHouse
- 修改ClickHouse配置为集群版
安装步骤
一、安装Java
在线安装
1 | sudo apt update |
离线安装
- 下载安装包:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html 在当前页面寻找 jdk-8u301-linux-x64.tar.gz 并下载
- 将文件上传至服务器并解压到指定目录
1
2
3tar -zxvf jdk-8u301-linux-x64.tar.gz
mkdir /usr/local/src/jdk/
mv jdk1.8.0_301/ /usr/local/src/jdk/jdk1.8 - 在文件 /etc/profile 中添加环境变量
1
2
3export JAVA_HOME=/usr/local/src/jdk/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar - 执行source /etc/profile 使得环境变量生效
- 使用java -version命令验证是否安装成功
二、安装Zookeeper
- 下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
- 将文件上传至服务器指定目录并解压
1
2
3
4
5
6
7
8# 自定义安装路径为 /usr/local/zookeeper
ZK_PATH=/usr/local/zookeeper
mkdir -p $ZK_PATH
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin/* $ZK_PATH
# 修改配置
cd $ZK_PATH
cp conf/zoo_sample.cfg conf/zoo.cfg - 修改配置文件内容为如下
1
2
3
4
5
6tickTime=2000
initLimit=10
syncLimit=5
# 主要修改dataDir属性
dataDir=/data/zookeeper
clientPort=2181 - 启动服务:$ZK_PATH/bin/zkServer.sh start
- 此后命令如果不需要配置认证则可跳过
- 进入ZK命令行:$ZK_PATH/bin/zkCli.sh
- 执行添加用户命令:
1
2addauth digest username:password
setAcl / auth:username:cdrwa - 重启zk服务:$ZK_PATH/bin/zkServer.sh restart
三、安装单机ClickHouse
- 安装CK命令如下,在安装过程中会提示输入默认用户(用户名为default)的密码
1
2
3
4
5
6
7sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
# 此处使用清华源 加快安装速度
echo "deb https://mirrors.tuna.tsinghua.edu.cn/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start - 安装完成进行登录测试:clickhouse-client -u default –password password
四、修改ClickHouse配置为集群版
- 备份默认配置文件:cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.bak
- 然后编辑默认配置文件 /etc/clickhouse-server/config.xml 并删除集群相关的配置
文件中 remote_servers、zookeeper、macros 标签里的全部内容
- 添加自定义配置文件:vi /etc/clickhouse-server/config.d/config.xml 内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33<yandex>
<zookeeper>
<node index="1">
<host>此处改为ZK的HOST</host>
<port>2181</port>
</node>
<identity>zk_username:zk_password</identity>
<session_timeout_ms>600000</session_timeout_ms>
</zookeeper>
<remote_servers>
<test>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>本机IP</host>
<port>9000</port>
<user>default</user>
<password>password</password>
</replica>
</shard>
</test>
</remote_servers>
<networks>
<ip>::/0</ip>
</networks>
<macros>
<shard>01</shard>
<replica>node1</replica>
</macros>
</yandex>
关键步骤解释
集群配置文件解释
zookeeper 配置
- 如果Zookeeper为集群版,直接增加node节点即可
remote_servers 配置
- remote_servers下级节点为集群,可配置多个集群
- 集群下级节点为分片(shard),可配置多个shard,不同shard不能用同一个ClickHouse实例
- 分片下级为副本(replica),可对分片配置多个副本,默认最少0个,不同副本不能用同一个ClickHouse实例
- internal_replication 用来控制当数据写入时(必须是Replicated*的表),由分片自己负责副本间的数据复制,否则分布式表的副本数据写入需要由Distributed引擎来负责
macros 配置
- 参数解释 https://stackoverflow.com/questions/68272747/what-is-macros-in-clickhouse-and-what-is-use-of-macros-in-clickhouse
- 本质上就是针对当前实例的全局变量的定义,可以被某些地方来引用
- 此配置需要在集群中全局唯一
- 此处的参数会在创建Replicated*的表时被引用
- shard的值为当前节点在在集群中的分片编号,需要在集群中唯一
- replica是副本的唯一标识,需要在单个分片的多个副本中唯一
参考文档
ClickHouse官方文档:
StackOverFlow关于macros的解释
一本书
- 《ClickHouse原理解析与应用实践》