📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
- 前言
- 📣 1.环境准备
- 📣 2.系统部署JDK
- 📣 3.zookeeper集群部署
- ✨ 3.1 解压安装
- ✨ 3.2 环境变量
- ✨ 3.3 集群配置
- ✨ 3.4 启动zookeeper
- 📣 4.ClickHouse集群部署
- ✨ 4.1 安装前准备
- ✨ 4.2 RPM包安装
- ✨ 4.3 修改配置文件
- ✨ 4.4. 启动集群
前言
近期大数据平台在选型分布式数据库,本文详细讲解了Clickhouse集群部署(3分片2副本)📣 1.环境准备
操作系统选择:CentOS7.8 x64,搭建一个3分片2副本Clickhouse集群
本次部署6台服务器,生产上推荐每台配置如下:
内存:64G+ CPU:32core+ 硬盘500G+
–ClickHouse的主要应用场景:
电信行业用于存储数据和统计数据使用
用户行为数据记录与分析
信息安全日志分析
商业智能与广告网络价值数据挖掘分析
网络游戏以及物联网的数据处理与分析
节点 | Hostname | ip地址 | 分片 |
---|---|---|---|
1 | clickhouse1 | 172.18.12.2 | 片1 |
2 | clickhouse2 | 172.18.12.3 | 片1 |
3 | clickhouse3 | 172.18.12.4 | 片2 |
4 | clickhouse4 | 172.18.12.5 | 片2 |
5 | clickhouse5 | 172.18.12.6 | 片3 |
6 | clickhouse6 | 172.18.12.7 | 片3 |
📣 2.系统部署JDK
##在所有节点均部署
1.下载Linux环境下的jdk1.8
https://www.oracle.com/java/technologies/downloads/#java8
2.rpm安装
[root@clickhouse1 /]# rpm -ivh jdk-8u381-linux-x64.rpm
warning: jdk-8u381-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Preparing… ################################# [100%]
Updating / installing…
1:jdk-1.8-2000:1.8.0_381-9 ################################# [100%]
–安装好后通常默认安装是在/usr/java目录下
[root@clickhouse1 ~]# cd /usr/java
[root@clickhouse1 java]# ll
total 0
lrwxrwxrwx. 1 root root 16 Oct 5 11:12 default -> /usr/java/latest
lrwxrwxrwx. 1 root root 31 Oct 5 11:12 jdk1.8.0-x64 -> /usr/lib/jvm/jdk-1.8-oracle-x64
lrwxrwxrwx. 1 root root 31 Oct 5 11:12 latest -> /usr/lib/jvm/jdk-1.8-oracle-x64
–编辑/etc/profile
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0-x64
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
–变量重新生效
source /etc/profile
3.确认安装是否成功
[root@clickhouse1 /]# java -version
java version “1.8.0_381”
Java™ SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot™ 64-Bit Server VM (build 25.381-b09, mixed mode)
📣 3.zookeeper集群部署
直接从这个网址下载即可:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
安装前注意事项:
1)zookeeper节点必须是奇数个,因为zookeeper选举的规则:leader选举,要求可用节点数量必须大于总节点数量/2
2)zookeeper 是使用 java 来运行的,所以需要依赖 JDK,所以安装 zookeeper 之前需要安装部署 JDK
3) 注意关闭节点服务器的防火墙
这里要注意!!!官网上有两个tar.gz文件,bin名称结尾的包就是我们要下载的,可以直接使用。里面有编译好的二进制包,上一个普通的tar.gz包只包含源码,不能直接使用。
在这里我们下载的是3.8.2版本
仅在clickhouse1,clickhouse3,clickhouse5 上面部署即可
✨ 3.1 解压安装
tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz
mv apache-zookeeper-3.8.2-bin /usr/local/zookeeper
✨ 3.2 环境变量
添加我们需要的配置信息,ZOOKEEPER_HOME 为你安装的zookeeper目录
vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
##使环境变量生效
source /etc/profile
##查看是否生效
echo $ZOOKEEPER_HOME
✨ 3.3 集群配置
1)创建相关目录
mkdir -p /usr/local/zookeeper/data
mkdir -p /usr/local/zookeeper/log
2)zookeeper配置文件
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
##修改以下内容
# 心跳时间
tickTime=2000
# follow连接leader的初始化连接时间,表示tickTime的倍数
initLimit=10
# syncLimit配置表示leader与follower之间发送消息,请求和应答时间长度。
如果followe在设置的时间内不能与leader进行通信,那么此follower将被丢弃,tickTime的倍数
syncLimit=5
# 客户端连接端口
clientPort=2181
# 节点数据存储目录,需要提前创建,注意myid添加,用于标识服务器节点
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
server.1=172.18.12.2:2888:3888
server.3=172.18.12.4:2888:3888
server.5=172.18.12.6:2888:3888
3)每台机器配置节点id
##每台机器分别执行
在机器1上执行:
echo 1 >/usr/local/zookeeper/data/myid
在机器3上执行:
echo 3 >/usr/local/zookeeper/data/myid
在机器5上执行:
echo 5 >/usr/local/zookeeper/data/myid
✨ 3.4 启动zookeeper
##启动zookeeper,在这里我们可以只启动节点1、节点3、节点5,或者5个节点启动都行
cd /usr/local/zookeeper/bin/
./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED
##查看zookeeper启动状态
sh zkServer.sh status
##验证zookeeper
启动成功后可以随便选择一个节点尝试连接另一个节点验证
sh zkCli.sh -server 172.18.12.2:2181
成功进入后显示:
[zk: 172.18.12.2:2181(CONNECTED) 0]
📣 4.ClickHouse集群部署
✨ 4.1 安装前准备
1)指令集检查
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。
官方预构建的二进制文件通常针对x86_64进行编译,并利用SSE 4.2指令集。
检查当前CPU是否支持SSE 4.2的命令:
[root@clickhouse1 /]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported
2)文件数限制修改
调整CentOS系统对打开文件数的限制,在/etc/security/limits.conf和/etc/security/limits.d/20-nproc.conf文件的末尾加上
soft nofile 65536
hard nofile 65536
soft nproc 131072
hard nproc 131072
cat >> /etc/security/limits.conf <<EOF
soft nofile 65536
hard nofile 65536
soft nproc 131072
hard nproc 131072
EOF
cat >> /etc/security/limits.d/20-nproc.conf <<EOF
soft nofile 65536
hard nofile 65536
soft nproc 131072
hard nproc 131072
EOF
✨ 4.2 RPM包安装
推荐使用CentOS、RedHat和所有其他基于rpm的Linux发行版的官方预编译rpm包。
##安装依赖
yum install -y yum-utils
yum install -y libtool
yum install -y unixODBC
##上传下载好的rpm包安装即可
rpm -ivh clickhouse-common-static-23.9.1.1854.x86_64.rpm
rpm -ivh clickhouse-client-23.9.1.1854.x86_64.rpm
rpm -ivh clickhouse-server-23.9.1.1854.x86_64.rpm
✨ 4.3 修改配置文件
ClickHouse提供了非常高级的基于zookeeper的表复制方式,同时也提供了基于Cluster的复制方式,本次我们使用表复制方式,所有节点均作相同的设置
## 修改config.xml
cd /etc/clickhouse-server/
vim config.xml
1)配置 listen_host
更改监听让所有正常ip可连接
<listen_host>0.0.0.0</listen_host>
2)配置zookeeper
host改成你自己的zookeeper 内网ip地址
<zookeeper>
<node index="1">
<host>172.18.12.2</host>
<port>2181</port>
</node>
<node index="3">
<host>172.18.12.4</host>
<port>2181</port>
</node>
<node index="5">
<host>172.18.12.6</host>
<port>2181</port>
</node>
</zookeeper>
3)密码设置
vi users.xml
-----
<password>ck123.com</password>
<networks>
<ip>::/0</ip>
</networks>
-----
4)配置 remote_server
<remote_servers>
<!--ck_cluster是集群名字,自己命名就可以,建库建表需要用到-->
<ck_cluster>
<!-- 数据分片1 -->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>172.18.12.2</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
<replica>
<host>172.18.12.3</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
</shard>
<!-- 数据分片2 -->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>172.18.12.4</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
<replica>
<host>172.18.12.5</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
</shard>
<!-- 数据分片3 -->
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>172.18.12.6</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
<replica>
<host>172.18.12.7</host>
<port>9000</port>
<user>default</user>
<password>ck123.com</password>
</replica>
</shard>
</ck_cluster>
</remote_servers>
5)配置macros
根据每台机器的分片副本配置,如第3分片的第1副本这样配置,每个服务器配置不相同
<macros>
<layer>02</layer>
<shard>03</shard>
<replica>172.18.12.6</replica>
</macros>
✨ 4.4. 启动集群
yum install sudo
[root@clickhouse1 ~]# /etc/init.d/clickhouse-server start
/etc/init.d/clickhouse-server status
[root@clickhouse1 ~]# /etc/init.d/clickhouse-server status
–验证集群状
[root@clickhouse1 ~]# clickhouse-client
clickhouse1 ) select * from system.clusters;
clickhouse1 ) select cluster,host_name from system.clusters;
clickhouse1 ) select * from system.macros;