Clickhouse 安装部署
部署为3个节点的集群,数据无副本。单机则不需要配置metrika.xml文件即可。
环境
- centos7
- ClickHouse 19.14
- 可以采用安装yum源的方式,但是下载较慢,不如自己下载需要的RPM,直接安装,官方yum源安装方式参见
https://clickhouse.tech/docs/en/getting_started/install/
RPM方式
- 下载地址
https://packagecloud.io/altinity/clickhouse
- 需要的包
# 需要的依赖 yum install -y libicu unixODBC
clickhouse-server-common-*
clickhouse-server-*
clickhouse-common-static-*
clickhouse-client-*
-
安装下载的包
image
rpm -ivh ./*
编写配置文件
- RPM安装之后,默认会在 /etc/clickhouse-server/ 创建基础配置文件,我们依然使用这个目录作为配置文件目录即可,当然也可以将自己新建目录,启动clickhouse-server 的时候知道配置文件路径即可,这里采用默认路径来管理配置文件,需要编写3个配置文件,
config.xml
,metrika.xml
,users.xml
, 其中metrika.xml
和users.xml
是为了方便管理配置自己创建的,在config.xml
中引用这两个配置文件即可 -
具体配置文件信息在集群目录下查看即可,这里选择一台机器配置放置如下
config.yaml
主要配置服务端口、ip、文件存储目录,系统配置、zk配置等参数。本文不涉及zk配置。并且开启query_log,方便后期做监控。
文件中注释很详细,根据需要配置即可。
metrika.yaml
集群配置、压缩算法配置。本示例集群名为default_cluster,可定义多个。名称自定义,创建分布式表时指定对应的集群名称实现灵活使用数据。
<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
<default_cluster>
<!-- 数据分片1 -->
<shard>
<internal_replication>false</internal_replication>
<replica>
<host>机器host</host>
<port>9000</port>
<user>账号</user>
<password>密码</password>
</replica>
</shard>
<!-- 数据分片2 -->
<shard>
<replica>
<host>机器host</host>
<port>9000</port>
<user>账号</user>
<password>密码</password>
</replica>
</shard>
<!-- 数据分片3 -->
<shard>
<replica>
<host>机器host</host>
<port>9000</port>
<user>账号</user>
<password>密码</password>
</replica>
</shard>
</default_cluster>
</clickhouse_remote_servers>
<macros>
<cluster>default_cluster</cluster>
<replica>机器host‘</replica>
<shard>1</shard>
</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>
users.xml
-
主要定义用户名密码<users>标签中配置。
结构资料:
<users>
<!-- If user name was not specified, 'default' user is used. -->
<user_name>
<password></password>
<!-- Or -->
<password_sha256_hex></password_sha256_hex>
<networks incl="networks" replace="replace">
</networks>
<!-- 指定引用profiles配置 -->
<profile>profile_name</profile>
<!-- 指定引用quotas配置 -->
<quota>default</quota>
<databases>
<database_name>
<table_name>
<filter>expression</filter>
<table_name>
</database_name>
</databases>
</user_name>
<!-- Other users settings -->
</users>
密码可以以明文或SHA256(十六进制格式)指定
不建议使用明文;
- 铭文密码把密码写入password标签中
- 要使用其SHA256散列分配密码,请将其放置在 password_sha256_hex标签中
密码生成示例:`PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
结果的第一行是密码。 第二行是相应的SHA256哈希
-
用户在使用时的配置参数<profiles>中配置。
官方配置文档介绍很详细,在实际使中还需要自己优化。自己就踩过不少坑,以后有机会和大家分享。
load_balancing指定用于分布式查询处理的副本选择算法
* 随机(默认情况下)load_balancing = random
* 最近的主机名 load_balancing = nearest_hostname
* 按顺序 load_balancing = in_order
* 第一次或随机 load_balancing = first_or_random
-
配额设置,单个用户最大能用的资源多少<quotas>。配额文档
start.sh (启动脚本由supervisor调用)
#!/bin/sh
TZ=Asia/Shanghai clickhouse-server --config-file=/etc/clickhouse-server/config.xml --pid-file=/etc/clickhouse-server/clickhouse.pid
Supervisor 管理clickhouse
-
安装部署
设置
# 具体 nofile大小,根据你们实际情况定
echo 12553500 > /proc/sys/fs/file-max
echo 12553500 > /proc/sys/fs/nr_open
vi /etc/security/limits.conf 加入
* soft nofile 1000000
* hard nofile 1000000
echo 0 | sudo tee /proc/sys/vm/overcommit_memory
echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
vi /usr/lib/systemd/system/supervisord.service 加入
LimitNOFILE=409600
LimitNPROC=409600
yum安装
yum install epel-release
yum install -y supervisor
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
Supervisor管理clickhouse进程配置
- 进入/etc/supervisord.d/ 目录下创建如下配置文件
- clickhouse.ini
[program:clickhouse]
redirect_stderr=true
stdout_logfile=/var/log/supervisor/clickhouse-server.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
command= sh /etc/clickhouse-server/start.sh
timeout = 60*60
user=root
autostart=true
autorestart=true
startsecs=10
startretries=1
stopasgroup=true
killasgroup=true
environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8',LC_LANG='en_US.UTF-8'
- 执行命令启动Clickhouse
supervisorctl reread
supervisorctl update clickhouse
- clicent 连接 默认default用户|非默认 -u
clickhouse-client --host 127.0.0.1 --password yourpass --port 9000 -m
- 日志的分布式表
以后做clickhouse监控可以用到。
根据system.query_log表结构创建query_log_all表。
CREATE TABLE system.query_log_all AS system.query_log ENGINE = Distributed(default_cluster, system, query_log);
结语
- 至此Clickhouse在其中一台机器上就安装完毕了,其他各台机器同样的方式安装即可,上边列出的配置信息,是列出了三个分片,无副本,不依赖zk。
网友评论