目录
编辑
一、环境说明
二、安装部署
2.1 RPM方式安装
2.1.1 安装yum-utils
2.1.2 配置yum repo源
2.1.3 yum install 下载安装clickhouse
2.2 信息配置
2.2.1 配置外网可访问地址
2.2.2 修改存储路径
2.2.2.1 新建存储目录
2.2.2.2 授权
2.2.2.3 修改配置
2.2.3 修改服务端口
2.2.4 修改配置文件目录
2.2.5 配置metrika.xml文件
2.2.5.1 创建metrika.xml文件
2.2.5.2 添加配置信息
2.2.5.3 配置说明
2.3 启动服务
2.4 检查集群配置是否完成
2.4.1 登录clickehouse
2.4.2 查询集群信息
一、环境说明
系统环境描述:本教程基于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分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!