目录
- 十、Linux二进制安装ClickHouse集群(含rpm安装,单机版使用rpm,集群使用tar包安装方式)
- 1 部署前服务器配置(集群的话三台都要配置)
- 1.2 配置hosts文件
- 1.3 打开文件数限制
- 1.4 取消 SELINUX
- 1.5 禁用透明大页
- 2 下载所需文件
- 2.1 tgz和rpm下载注意事项
- 3 单机版部署(rpm安装)
- 3.1 创建安装包目录
- 3.2 下载文件
- 3.3 依次安装
- 3.4 修改配置文件
- 3.5 启动Clickhouse
- 3.6 测试启动状态
- 4 集群部署Clickhouse(tar包安装)
- 4.1 安装zookeeper
- 4.2 创建安装包目录(三台服务器都需要安装)
- 4.3 下载安装包
- 4.4 安装Clickhouse(三台服务器都进执行)
- 4.5 修改配置文件
- 4.6 启动Clickhouse
- 4.7 验证集群状态
- 5 ClickHouse 配置文件解析
- 6 注意事项
十、Linux二进制安装ClickHouse集群(含rpm安装,单机版使用rpm,集群使用tar包安装方式)
1 部署前服务器配置(集群的话三台都要配置)
新增第一行:127.0.0.1 服务器名称(配置单机版只需要怕配置此步骤)
新增 集群服务器的服务器名称和ip(配置集群两个都需要配置)
查看本机服务器名称
hostname
sudo vi /etc/hosts
1.2 配置hosts文件
sudo vi /etc/hosts
1.3 打开文件数限制
sudo vi /etc/security/limits.conf
在 /etc/security/limits.conf 这个文件的末尾加入一下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
sudo vi /etc/security/limits.d/90-nproc.conf
在 /etc/security/limits.d/90-nproc.conf 这个文件的末尾加入一下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
重启服务器之后生效,用 ulimit -n 或者 ulimit -a 查看设置结果( 先不要重启,等后面配置修改完一起重启)
1.4 取消 SELINUX
vi /etc/selinux/config
修改 /etc/selinux/config 中的 SELINUX=disabled
将 SELINUX=enforcing 修改为:
SELINUX=disabled
重启服务器后查看 SELINUX 状态
[root@localhost ~]# sestatus
SELinux status: disabled
1.5 禁用透明大页
vi /etc/default/grub
在 GRUB_CMDLINE_LINUX 行最后加上
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_wjwcentos7/root rd.lvm.lv=centos_wjwcentos7/swap rhgb quiet transparent_hugepage=never"
紧接着执行生效命令
grub2-mkconfig -o /boot/grub2/grub.cfg
注意:如果 linux 开启透明巨页THP,则 I/O 读写性能降低 30%;如果关闭透明巨页 THP,I/O 读写性能则恢复正常。
Linux 下的大页分为两种类型:标准大页(Huge Pages)和透明巨页(Transparent Huge Pages)。
- 标准大页(Huge Pages)是从 Linux Kernel 2.6 后被引入的。目的是用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能
- 透明巨页(Transparent Huge Pages)缩写为 THP,透明超大页面(THP)在 RHEL 6 中默认情况下对所有应用程序都是启用的。内核试图尽可能分配巨大的页面,主内核地址空间本身被映射为巨大的页面,减少了内核代码的 TLB 压力。内核将始终尝试使用巨页来满足内存分配。如果没有可用的巨大页面(例如由于物理连续内存不可用),内核将回退到正常的 4KB 页面。THP 也是可交换的(不像 hugetlbfs)。这是通过将大页面分成更小的 4KB 页面来实现的,然后这些页面被正常地换出。
两者区别在于大页的分配机制,标准大页管理是预分配方式,而透明巨页管理则是动态分配方式。目前透明巨页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。ORACLE 官方不建议在使用 RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明巨页(THP),因为透明巨页存在一些问题:
-
在 RAC 环境下,透明巨页(THP)会导致异常节点重启和性能问题;
-
在单机环境中,透明巨页(THP)也会导致一些异常的性能问题;
完成这些设置就可以重启一下服务器了
2 下载所需文件
官网下载 tgz包:二进制包
2.1 tgz和rpm下载注意事项
tgz下载 clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client四个文件
可以找一台能联网的服务器使用下面脚本进行下载(百度网盘的downLoad.sh)
tar包下载脚本
LATEST_VERSION=$(curl -s https://packages.clickhouse.com/tgz/stable/ | \
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -V -r | head -n 1)
export LATEST_VERSION
case $(uname -m) in
x86_64) ARCH=amd64 ;;
aarch64) ARCH=arm64 ;;
*) echo "Unknown architecture $(uname -m)"; exit 1 ;;
esac
for PKG in clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client
do
curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION-${ARCH}.tgz" \
|| curl -fO "https://packages.clickhouse.com/tgz/stable/$PKG-$LATEST_VERSION.tgz"
done
rpm包下载脚本
LATEST_VERSION=$(curl -s https://packages.clickhouse.com/rpm/stable/ |
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' | sort -V -r | head -n 1)
case $(uname -m) in
x86_64) ARCH=x86_64 ;;
aarch64) ARCH=aarch64 ;;
*) echo "不支持的架构 $(uname -m)"; exit 1 ;;
esac
for PKG in clickhouse-common-static clickhouse-common-static-dbg clickhouse-server clickhouse-client
do
URL1="https://packages.clickhouse.com/rpm/stable/$PKG-$LATEST_VERSION.${ARCH}.rpm"
URL2="https://packages.clickhouse.com/rpm/stable/$PKG-$LATEST_VERSION.rpm"
if curl -fO "$URL1"; then
echo "成功下载: $URL1"
elif curl -fO "$URL2"; then
echo "成功下载: $URL2"
else
echo "无法下载 $PKG"
echo "尝试的 URL:"
echo "1. $URL1"
echo "2. $URL2"
fi
done
官网下载 rpm包:rpm下载
百度网盘下载:百度网盘
3 单机版部署(rpm安装)
3.1 创建安装包目录
mkdir /opt/Clickhouse
3.2 下载文件
通过上面的下载。
3.3 依次安装
rpm -ivh clickhouse-common-static-24.7.3.42.x86_64.rpm
rpm -ivh clickhouse-common-static-dbg-24.7.3.42.x86_64.rpm
rpm -ivh clickhouse-server-24.7.3.42.x86_64.rpm
rpm -ivh clickhouse-client-24.7.3.42.x86_64.rpm
目录结构
目录 | 说明 |
---|---|
/etc/ ClickHouse -server | 服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml |
/var/lib/ ClickHouse | 默认数据存储目录,通常会修改默认路径配置,将数据保存到大容量磁盘挂载路径 |
/var/log/ ClickHouse -server | 默认日志保存目录,通常会修改路径配置将日志保存到大容量磁盘挂载的路径 |
3.4 修改配置文件
注意:ClickHouse 默认使用 9000 端口,但是这个端口与 HDFS 发生冲突,所以如果安装了HDFS 建议修改
vi /etc/ ClickHouse -server/config.xml
listen_host 表示能监听的主机,:: 表示任意主机都可以访问,放开注释
IPV6:放开<listen_host>::</listen_host>的注释
IPV4:放开<listen_host>0.0.0.0</listen_host>的注释
二者只放开一个
文件句柄数量的配置(默认这样的话不需要修改)
cat /etc/security/limits.d/clickhouse.conf
配置密码
vi /etc/clickhouse-server/users.xml
3.5 启动Clickhouse
命令 | 释义 |
---|---|
systemctl start clickhouse-server | 启动 Clickchouse服务 |
systemctl stop clickhouse-server | 关闭 Clickchouse服务 |
systemctl restart clickhouse-server | 重启 Clickchouse服务 |
systemctl status clickhouse-server | 查看 Clickchouse服务状态 |
systemctl enable clickhouse-server | 设置开机自启 |
systemctl disenable clickhouse-server | 关闭开机自启 |
systemctl is-enabled clickhouse-server | 查看开机自启是否成功 |
3.6 测试启动状态
如果你修改了端口,就需要加上,默认是9000
clickhouse-client --port=9977
4 集群部署Clickhouse(tar包安装)
4.1 安装zookeeper
安装教程:zookeeper集群安装
4.2 创建安装包目录(三台服务器都需要安装)
mkdir /opt/Clickhouse
4.3 下载安装包
可以通过上面提供的脚本或者网盘进行下载
解压文件夹:
tar -zxvf clickhouse-client-23.12.6.19-amd64.tgz
tar -zxvf clickhouse-common-static-23.12.6.19-amd64.tgz
tar -zxvf clickhouse-common-static-dbg-23.12.6.19-amd64.tgz
tar -zxvf clickhouse-server-23.12.6.19-amd64.tgz
4.4 安装Clickhouse(三台服务器都进执行)
/opt/Clickhouse/clickhouse-client-23.12.6.19/install/doinst.sh
/opt/Clickhouse/clickhouse-common-static-23.12.6.19/install/doinst.sh
/opt/Clickhouse/clickhouse-common-static-dbg-23.12.6.19/install/doinst.sh
/opt/Clickhouse/clickhouse-server-23.12.6.19/install/doinst.sh
安装的时候会弹出输入密码,这个我们不做设置,直接回车。后续统一设置
4.5 修改配置文件
vi /etc/clickhouse-server/config.xml
这一步是为了下面的步骤:
将自带的remote_servers部分内容删除掉
修改后
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
<remote_servers incl="remote_servers" optional="true" />
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<compression incl="clickhouse_compression" optional="true"/>
vi /etc/clickhouse-server/users.xml
上面三台服务器是一样的设置,下面的是需要分别配置的
先看一下,再去下面设置。最好是粘出来修改后再去插入。
node1
vi /etc/clickhouse-server/metrika.xml
<yandex>
<remote_servers>
<!-- 自定义的集群名称 -->
<ck_cluster>
<!-- 分片信息 -->
<shard>
<weight>1</weight>
<!-- 分布式表写入数据是否只写入到一个副本,配合复制表引擎使用,默认false -->
<internal_replication>true</internal_replication>
<!-- 分片副本信息,这里指定的用户名密码只能是明文,如果需要密文密码需要将配置指向users.xml中的profile中 -->
<replica>
<host>192.168.200.161</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.200.162</host>
<port>9000</port>
<!-- 下面是用户名和密码 -->
<user>default</user>
<password>123456</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.200.163</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
</ck_cluster>
</remote_servers>
<!-- Replicated*MergeTree会用到zk -->
<zookeeper-servers>
<node index="1">
<host>192.168.200.161</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.200.162</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.200.163</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- Replicated*MergeTree建表语句的参数,指定zk的存储目录用 -->
<macros>
<!--集群名称-->
<layer>ck_cluster</layer>
<!--分片-->
<shard>shard01</shard>
<!--副本-->
<replica>replica01</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>
node2
vi /etc/clickhouse-server/metrika.xml
node3
vi /etc/clickhouse-server/metrika.xml
<yandex>
<remote_servers>
<!-- 自定义的集群名称 -->
<ck_cluster>
<!-- 分片信息 -->
<shard>
<weight>1</weight>
<!-- 分布式表写入数据是否只写入到一个副本,配合复制表引擎使用,默认false -->
<internal_replication>true</internal_replication>
<!-- 分片副本信息,这里指定的用户名密码只能是明文,如果需要密文密码需要将配置指向users.xml中的profile中 -->
<replica>
<host>192.168.200.161</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.200.162</host>
<port>9000</port>
<!-- 下面是用户名和密码 -->
<user>default</user>
<password>123456</password>
</replica>
</shard>
<shard>
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.200.163</host>
<port>9000</port>
<user>default</user>
<password>123456</password>
</replica>
</shard>
</ck_cluster>
</remote_servers>
<!-- Replicated*MergeTree会用到zk -->
<zookeeper-servers>
<node index="1">
<host>192.168.200.161</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.200.162</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.200.163</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- Replicated*MergeTree建表语句的参数,指定zk的存储目录用 -->
<macros>
<!--集群名称-->
<layer>ck_cluster</layer>
<!--分片-->
<shard>shard03</shard>
<!--副本-->
<replica>replica03</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>
4.6 启动Clickhouse
命令 | 释义 |
---|---|
systemctl start clickhouse-server | 启动 Clickchouse服务 |
systemctl stop clickhouse-server | 关闭 Clickchouse服务 |
systemctl restart clickhouse-server | 重启 Clickchouse服务 |
systemctl status clickhouse-server | 查看 Clickchouse服务状态 |
systemctl enable clickhouse-server | 设置开机自启 |
systemctl disenable clickhouse-server | 关闭开机自启 |
systemctl is-enabled clickhouse-server | 查看开机自启是否成功 |
4.7 验证集群状态
5 ClickHouse 配置文件解析
6 注意事项
ClickHouse : 每个节点在安装的时候,都是独立的。
每个节点的 ClickHouse 都是单独的服务器在运行,在有需要的时候,可以通过配置文件,把他们联合起来变成一个集群。甚至还可以,把你准备的所有的服务器,配置成多个集群。就算你配置成集群了,每个服务器依然还是单独运行的。
如果你创建了一张表,这张表的引擎是分布式的引擎,那么这个表所存储在那个集群里面的那个集群里面的机器,就是一个集群了。每个 ClickHouse 中的部分表是单机的, 部分表是分布式的。
ClickHouse 既是单独运行的,游离于集群之外,被包含在集群之类的表:分为单机的表和分布式的表