搭建ClickHouse集群

网友投稿 1036 2022-05-29

系统要求

如果从官方仓库安装,需要确保您使用的是x86_64处理器构架的Linux并且支持SSE 4.2指令集

检查是否支持SSE 4.2:

命令:

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

我们推荐使用Ubuntu或者Debian。终端必须使用UTF-8编码。基于rpm的系统,你可以使用第三方的安装包:https://packagecloud.io/altinity/clickhouse 或者直接安装debian安装包。ClickHouse还可以在FreeBSD与Mac OS X上工作。同时它可以在不支持SSE 4.2的x86_64构架和AArch64 CPUs上编译。

来自packagecloud.io的ClickHouse RPM软件包安装(单节点安装)

1.基于脚本的安装

为方便起见,packagecloud.io提供了一个很好的,用户友好的方式来添加他们脚本的回购。我们需要下载并运行packagecloud的bash脚本,它将执行所有必需的步骤。

安装脚本

确保curl已安装在系统上,

命令:

sudo yum install -y curl

下载并运行packagecloud.io提供的安装shell脚本,

命令:

curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash

脚本后安装包

首先,确保我们有可用于安装的ClickHouse软件包,

命令:

sudo yum list 'clickhouse*'

ClickHouse包应该列为可用,如下所示:

有多个软件包可用(新版本和旧工具),其中一些已经弃用,因此无需安装所有可用的RPM。

现在让我们安装ClickHouse主要部件 - 服务器和客户端应用程序,

命令:

sudo yum install -y clickhouse-server clickhouse-client

并验证它是否已列为已安装,

命令:

sudo yum install -y clickhouse-server clickhouse-client

并验证它是否已列为已安装,

命令:

sudo yum list installed 'clickhouse*'

ClickHouse软件包应列为已安装,如下所示,

确保ClicKhouse服务器正在运行,

命令:

sudo /etc/init.d/clickhouse-server restart

然后连接到它 clickhouse-client,

命令:

clickhouse-client

ClickHouse服务器应该响应,如下所示,

至此,单机版的ClickHouse完成安装

2.手动安装

参见官方文档

分布式集群搭建

1.配置文件解析

ClickHouse有几核心的配置文件:

*config.xml 端口配置、本地机器名配置、内存设置等

*metrika.xml 集群配置、ZK配置、分片配置等

*users.xml 权限、配额设置

2.rpm启动方式

rpm安装后,会在服务器上生成如下几个文件:

# 默认配置文件位置

root@localhost.localdomain:/  # ls /etc/clickhouse-server

config.xml  users.xml

# 上述文件定义了默认数据目录,临时目录位置,日志目录

/var/lib/clickhouse

/var/lib/clickhouse/tmp/

/var/log/clickhouse-server

# 默认启动脚本,注意,这个名字虽然叫server,其实是个shell脚本

/etc/rc.d/init.d/clickhouse-server

root@localhost.localdomain:/  # file /etc/rc.d/init.d/clickhouse-server

/etc/rc.d/init.d/clickhouse-server: POSIX shell script, ASCII text executable, with very long lines

# 最大文件打开数

root@localhost.localdomain:/  # cat /etc/security/limits.d/clickhouse.conf

clickhouse      soft    nofile  262144

clickhouse      hard    nofile  262144

# 默认crontab目录(没啥用)

/etc/cron.d/clickhouse-server

# 剩下就是/usr/bin下的二进制文件,但其实都是软链接到了clickhouse这个二进制文件

root@localhost.localdomain:/usr/bin  # ll | grep click -i

-rwxr-xr-x    1 root root      63M Sep 20 16:58 clickhouse

lrwxrwxrwx    1 root root       10 Dec 11 17:14 clickhouse-client -> clickhouse

-rwxr-xr-x    1 root root     3.3M Sep 20 16:58 clickhouse-compressor

lrwxrwxrwx    1 root root       10 Dec 11 17:14 clickhouse-server -> clickhouse

3.注意几个问题:

(1)默认的数据目录明显不合理,特别是对于部分机器,系统盘和数据盘是不同的配置,需要单独挂载,以我们为例,我们统一使用/data1来放数据,数据目录以clickhouse命名,考虑到不用单机多实例,不以clickhouse${port}来命名

(2)默认的配置文件,对我们的管理也是个隐患,建议把配置文件、数据目录、临时目录、日志文件,统一放到/data1/clickhouse里,即:

文件夹:cores、data、还有data_old、flags、log、metadata、tmp,文件:status,

启动脚本:start_ck.sh(即 file /etc/rc.d/init.d/clickhouse-server)

(3)修改默认的shell脚本,修改默认配置文件的位置,即上面的start_ck.sh

4.CK里的引擎有十几个,这里只推荐3个

*MergeTree,是CK里最Advanced的引擎,性能超高,单机写入可以达到50w峰值,查询性能非常快,有兴趣看我其他文章

*ReplicatedMergeTree,基于MergeTree,同时引入ZK,做了复制,下文会说

*Distributed,分布式引擎,本身不存储数据,可认为就是一张View,如果写入,会把请求丢到集群里的节点(有算法控制),如果查询,会帮你做查询转发再聚合返回

5.修改配置文件

(1)修改config.xml里对数据目录的定义

说明:remote_servers就是集群配置,可以直接在此处配置,也可以提出来配置到扩展文件中。incl属性表示可从外部文件中获取节点名为clickhouse_remote_servers的配置内容。

使用扩展文件,首先,添加外部扩展配置文件。

(2)metrika.xml

说明:

clickhouse_remote_servers与config.xml中的incl属性值对应;

cluster_3shards_1replicas是集群名,可以随便取名;

共设置3个分片,每个分片只有1个副本;

(3)user.xml

用于用户管理

搭建ClickHouse集群

10000000000

0

random

10000000000

0

random

1

3600

0

0

0

0

0

967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e

::/0

default

default

967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e

::/0

readonly

default

问题:端口占用

查看端口占用情况:

sudo netstat -nltp | grep 9000

sudo  kill -9 3071

XML 存储

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Atlas 200DK系统折腾纪实:(1)论图片及18.04.1的诞生
下一篇:理解C++ STL栈实现的3个示例程序
相关文章