在Ubuntu20.04安装单节点ClickHouse22.8.4
Ubuntu安装clickhouse集群
Clickhouse 集群安装(完整版)
ClickHouse集群安装
clickhouse集群搭建-三分片两副本模式
ClickHouse官网提供的安装文档
ClickHouse离线安装包下载地址
1 单机安装
1.1 指令集检查
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。官方预构建的二进制文件通常针对x86_64进行编译,并利用SSE 4.2指令集,因此,除非另有说明,支持它的CPU使用将成为额外的系统需求。
下面是检查当前CPU是否支持SSE 4.2的命令:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
输出SSE 4.2 supported
1.2 下载安装包
安装包列表:
clickhouse-common-static--ClickHouse编译的二进制文件。
clickhouse-server--创建clickhouse-server软连接,并安装默认配置服务
clickhouse-client--创建clickhouse-client客户端工具软连接,并安装客户端配置文件。
clickhouse-common-static-dbg--带有调试信息的ClickHouse二进制文件。
1.3 安装启动
一、安装
sudo dpkg -i clickhouse-common-static_22.8.4.7_amd64.deb
sudo dpkg -i clickhouse-server_22.8.4.7_amd64.deb
输入默认用户default的密码
sudo dpkg -i clickhouse-client_22.8.4.7_amd64.deb
二、启动
sudo service clickhouse-server start启动
sudo service clickhouse-server status查看状态
sudo service clickhouse-server stop停止
或者
sudo systemctl start clickhouse-server启动
sudo systemctl status clickhouse-server查看状态
sudo systemctl stop clickhouse-server停止
连接测试
clickhouse-client --user default --password bigdata
1.4 配置
安装后主要目录分布如下表:
/etc/clickhouse-server :clickhouse 服务端配置文件目录
/etc/clickhouse-client :clickhouse 客户端配置文件目录
/var/lib/clickhouse :clickhouse 默认数据目录
/var/log/clickhouse-server :clickhouse 默认日志目录
/etc/init.d/clickhouse-server :clickhouse 服务端启动脚本
(1)/etc/clickhouse-server:服务端的配置文件目录, 包括全局配置 config.xml 和用户配置 users.xml 等。
(2)/var/lib/clickhouse:默认的数据存储目录(通常会修改默认存储路径,将数据保存到大容量磁盘挂载的路径),通过 config.xml 进行修改。
(3)/var/log/clickhouse-server:默认保存日志的目录(通常会修改默认存储路径,将日志保存到大容量磁盘挂载的路径),通过 config.xml 进行修改。
一、配置远程访问
sudo vi /etc/clickhouse-server/config.xml
<listen_host>::</listen_host>
二、设置默认用户default的密码
sudo vi /etc/clickhouse-server/users.xml
<password></password>
2 集群安装
clickhouse各节点是独立平等的, 所谓的集群配置不过是在各节点配置其他节点的用户名密码以及分片和副本的信息。建表时指定表的分片和副本情况,所以有人说clickhouse集群是表级别的。
集群节点信息:
10.23.241.139 host1
10.23.241.212 host2
10.23.241.213 host3
ClickHouse的配置要求:
CPU: x86_64架构且支持SSE4.2指令集,16Core,2600MHz。
RAM: 最低4GB 。
Disk: 预留2GB安装ClickHouse,数据存储依据实际需求和压缩系数调整。
Network: 最低10G。
Environment: 官方推荐使用Ubuntu但centOS也可以,JDK1.8。
2.1 搭建zookeeper集群
2.2 单机安装clickhouse
三个节点均安装单机版clickhouse以一个为例。
一、安装后主要目录分布如下表:
/etc/clickhouse-server :clickhouse 服务端配置文件目录
/etc/clickhouse-client :clickhouse 客户端配置文件目录
/var/lib/clickhouse :clickhouse 默认数据目录
/var/log/clickhouse-server :clickhouse 默认日志目录
/etc/init.d/clickhouse-server :clickhouse 服务端启动脚本
二、配置远程访问
配置文件/etc/clickhouse-server/config.xml,去除注释
<listen_host>::</listen_host>
然后重启服务
systemctl restart clickhouse-server
2.3 集群配置组网metrika.xml
以一个节点为例配置。
2.3.1 集群配置文件
一、zookeeper 配置
如果Zookeeper为集群版,直接增加node节点即可。
二、remote_servers 配置
(1)remote_servers下级节点为集群,可配置多个集群。
(2)集群下级节点为分片(shard),可配置多个shard,不同shard不能用同一个ClickHouse实例。
(3)分片下级为副本(replica),可对分片配置多个副本,默认最少0个,不同副本不能用同一个ClickHouse实例。
(4)internal_replication 用来控制当数据写入时(必须是Replicated*的表),由分片自己负责副本间的数据复制,否则分布式表的副本数据写入需要由Distributed引擎来负责。
三、macros 配置
(1)本质上就是针对当前实例的全局变量的定义,可以被某些地方来引用。
(2)此配置需要在集群中全局唯一。
(3)此处的参数会在创建Replicated*的表时被引用。
(4)shard的值为当前节点在在集群中的分片编号,需要在集群中唯一。
(5)replica是副本的唯一标识,需要在单个分片的多个副本中唯一。
2.3.2 三分片一副本
配置/etc/metrika.xml
vi /etc/metrika.xml
<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>host1</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>host2</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>host3</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers>
<!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>host1</host>
<port>2181</port>
</node>
<node index="2">
<host>host2</host>
<port>2181</port>
</node>
<node index="3">
<host>host3</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- 其中大部分配置一样,以下的配置根据节点的IP/域名具体配置 -->
<macros>
<replica>host1</replica>
</macros>
<networks>
<ip>::/0</ip>
</networks>
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
注意:为什么直接vim /etc/metrika.xml一个新文件,这里很难去理解,有点莫名其妙,其实如果仔细看过clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白,有这么一段被注释的配置说明:
<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
-->
配置一个节点完成之后,将/etc/metrika.xml文件scp到其他两个节点并配置。
2.3.3 两分片两副本
<yandex>
<!--ck集群节点-->
<clickhouse_remote_servers>
<!-- 集群名称 -->
<test_ck_cluster>
<!--分片1-->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>yc-nsg-h20</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
<!--复制集1-->
<replica>
<host>yc-nsg-h21</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
<!--分片2-->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>yc-nsg-h22</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
<!--复制集2-->
<replica>
<host>yc-nsg-h3</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
</test_ck_cluster>
</clickhouse_remote_servers>
<!--zookeeper相关配置-->
<zookeeper-servers>
<node index="1">
<host>yc-nsg-h20</host>
<port>2181</port>
</node>
<node index="2">
<host>yc-nsg-h21</host>
<port>2181</port>
</node>
<node index="3">
<host>yc-nsg-h22</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<layer>01</layer>
<shard>02</shard> //分片名称,相同值则互为副本
<!--分片号,hostname-layer-shard -->
<replica>yc-nsg-h22-01-02</replica> //副本名称,每个节点不同
<!--当前节点IP-->
</macros>
<networks>
<ip>::/0</ip> //对外开放所有地址
</networks>
<!--压缩相关配置-->
<clickhouse_compression>
<case>
<min_part_size>1073741824</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
<!--压缩算法lz4压缩比zstd快, 更占磁盘-->
</case>
</clickhouse_compression>
</yandex>
2.3.4 三分片两副本
3分片2副本,2副本中一个节点故障时另外一个节点上还有完整副本数据。
clickhouse的分布式表使用zk做协调。
配置文件中macros若省略,则建复制表时每个分片需指定zookeeper路径及副本名称,同一分片 上路径相同,副本名称不同;若不省略需每个分片不同配置。
<yandex>
<clickhouse_remote_servers>
<cluster_3S_2R>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>10.167.85.24</host>
<port>9000</port>
<password>123456</password>
</replica>
<replica>
<host>10.167.85.25</host>
<port>9988</port>
<password>123456</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>10.167.85.25</host>
<port>9000</port>
<password>123456</password>
</replica>
<replica>
<host>10.167.85.26</host>
<port>9988</port>
<password>123456</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>10.167.85.26</host>
<port>9000</port>
<password>123456</password>
</replica>
<replica>
<host>10.167.85.24</host>
<port>9988</port>
<password>123456</password>
</replica>
</shard>
</cluster_3S_2R>
</clickhouse_remote_servers>
<zookeeper-servers>
<node>
<host>10.167.85.24</host>
<port>2181</port>
</node>
<node>
<host>10.167.85.25</host>
<port>2181</port>
</node>
<node>
<host>10.167.85.26</host>
<port>2181</port>
</node>
</zookeeper-servers>
<networks>
<ip>::/0</ip>
</networks>
<macros>
<shard>02</shard>
<replica>10.167.85.25</replica>
</macros>
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
2.4 每个节点都启动clickhouse的服务
systemctl restart clickhouse-server
在每个节点都启动clickhouse的服务,和单节点启动一样,当出现无误后,查看clickhouse的log文件,如果出现以下信息,就基本没有问题
在每个节点启动clickhouse客户端,和单节点启动完全一样,查询集群信息
select * from system.clusters;