目录
2.1.3 yum install 下载安装clickhouse
一、环境说明
系统环境描述:本教程基于CentOS 8.0版本虚拟机
ClickHose集群规划:
节点 | ClickHouse-server | ClickHouse-client | zookeeper | IP |
master | 192.168.31.215 | |||
node1 | 192.168.31.8 | |||
node2 | * | * | * | 192.168.31.9 |
node3 | * | * | 192.168.31.167 | |
node4 | * | * | 192.168.31.154 |
软件版本说明:
ClickHouse 23.8.2.7
jdk 1.8.0_211
zookeeper 3.8.2
提示:本次部署需要的zookeeper,我使用的是Hadoop集群中的,关于zookeeper的部署,这里不做描述。
二、安装部署
按照ClickHouse 官网文档说明显示,ClickHouse 的安装可有RPM安装包安装、Tgz安装包安装、DEB安装包安装、Docker安装包安装、使用源码安装等方式,本次我们使用RPM安装包方式安装
2.1 RPM方式安装
2.1.1 安装yum-utils
sudo yum install -y yum-utils
2.1.2 配置yum repo源
sudo yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
2.1.3 yum install 下载安装clickhouse
sudo yum install -y clickhouse-server clickhouse-client
2.2 信息配置
2.2.1 配置外网可访问地址
分别在node2、node3、node4节点的/etc/clickhouse-server/config.xml文件下,<listen_host>标签,如下:
<listen_host>0.0.0.0</listen_host>
配置成所有地址可访问
2.2.2 修改存储路径
2.2.2.1 新建存储目录
mkdir -pv /opt/clickhouse/{data,tmp}
2.2.2.2 授权
chown -R clickhouse:clickhouse /opt/clickhouse/
提示:这里需要授权下新建的目录,不然可能会导致服务启动异常
2.2.2.3 修改配置
<!-- Path to data directory, with trailing slash. -->
<path>/opt/clickhouse/data/</path> <!-- 修改存储路径 -->
<!-- Path to temporary data for processing hard queries. -->
<tmp_path>/opt/clickhouse/tmp/</tmp_path>
2.2.3 修改服务端口
查询下文件里面的默认端口:9000,替换成7000,我这里修改是因为9000端口和我的hadoop集群端口冲突了,如果没有端口冲突,可忽略。
<tcp_port>7000</tcp_port>
2.2.4 修改配置文件目录
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>
<zookeeper incl="zookeeper-servers" optional="false" />
2.2.5 配置metrika.xml文件
2.2.5.1 创建metrika.xml文件
分别在node2、node3、node4节点/etc/clickhouse-server/config.d/目录下创建metrika.xml文件
touch metrika.xml
2.2.5.2 添加配置信息
vim metrika.xml
添加如下配置信息:
<yandex>
<remote_servers>
<clickhouse_cluster_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node2</host>
<port>7000</port>
</replica>
</shard>
<shard>
<replica>
<internal_replication>true</internal_replication>
<host>node3</host>
<port>7000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node4</host>
<port>7000</port>
</replica>
</shard>
</clickhouse_cluster_3shards_1replicas>
</remote_servers>
<zookeeper-servers>
<node index="1">
<host>node2</host>
<port>2181</port>
</node>
<node index="2">
<host>node3</host>
<port>2181</port>
</node>
<node index="3">
<host>node4</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<replica>01</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>
注意:由于clickhouse 的版本更新较块,在以前的版本中,metrika.xml配置文件配置集群接副本分片的标签是<clickhouse_remote_servers>,新版本有做修改,标签变成<remote_servers>,如果还使用以前的<clickhouse_remote_servers>标签,登录客户端后执行
select * from system.clusters; 查询,会查询不到集群的信息。
2.2.5.3 配置说明
clickhouse_remote_servers:
clickhouse集群配置标签,固定写法(后续版本改成了remote_servers)。
clickhouse_cluster_3shards_1replicas:
配置clickhouse的集群名称,可自由定义名称,注意集群名称中不能包含点号。这里代表集群中有3个分片,每个分片有1个副本。
分片是指包含部分数据的服务器,要读取所有的数据,必须访问所有的分片。
副本是指存储分片备份数据的服务器,要读取所有的数据,访问任意副本上的数据即可。
shard:
分片,一个clickhouse集群可以分多个分片,每个分片可以存储数据,这里分片可以理解为clickhouse机器中的每个节点。
这里可以配置一个或者任意多个分片,在每个分片中可以配置一个或任意多个副本,不同分片可配置不同数量的副本。如果只是配置一个分片,这种情况下查询操作应该称为远程查询,而不是分布式查询。
replica:
每个分片的副本,默认每个分片配置了一个副本。也可以配置多个。如果配置了副本,读取操作可以从每个分片里选择一个可用的副本。如果副本不可用,会依次选择下个副本进行连接。该机制利于系统的可用性。
internal_replication:
默认为false,写数据操作会将数据写入所有的副本,设置为true,写操作只会选择一个正常的副本写入数据,数据的同步在后台自动进行。
zookeeper-servers:
配置的zookeeper集群
macros:
区分每台clickhouse节点的宏配置,每台clickhouse需要配置不同名称。
networks:
这里配置ip为“::/0”代表任意IP可以访问,包含IPv4和IPv6。
注意:允许外网访问还需配置/etc/clickhouse-server/config.xml 参照第三步骤。
clickhouse_compression:
MergeTree引擎表的数据压缩设置,
min_part_size:代表数据部分最小大小。
min_part_size_ratio:数据部分大小与表大小的比率。
method:数据压缩格式。
注意:需要在每台clickhouse节点上配置metrika.xml文件,并且修改每个节点的 macros配置名称。
2.3 启动服务
分别在node2、node3、node4节点上,启动clickhouse服务。
启动指令:
service clickhouse-server start
通过netstat -anp | grep 7000指令探测端口是否被监听占用,从图上可知,我们的7000端口,被clickhouse-server程序占用,表明服务启动成功。
2.4 检查集群配置是否完成
在node2、node3、node4任意一台节点进入clickhouse客户端
2.4.1 登录clickehouse
clickhouse-client --port 7000
2.4.2 查询集群信息
select * from system.clusters;
显示如上信息,集群成功。
好了,今天ClickHouse分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!