clickhouse 搭建 单机 / 集群
Posted 福州-司马懿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickhouse 搭建 单机 / 集群相关的知识,希望对你有一定的参考价值。
安装 clickhouse
首先,访问官网 https://clickhouse.com/#quick-start 根据你主机的类型,下载clickhouse
我这里是centos8,因此采用如下方式
sudo yum install yum-utils -y
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/clickhouse.repo
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start -y
clickhouse-client
修改数据存储目录
查看 clickhouse-server 的配置文件,默认的数据存储目录为 /var/lib/clickhouse
。可以修改为你自己的目录,但是必须保证目录的磁盘空间足够大
查看运行状态
有两种方式可以查看运行状态,一种是clickhouse自带的方法,还有一种是systemctl工具
/etc/init.d/clickhouse-server status
clickhouse 自带了查看启动状态的命令。对于其它命令,可以使用help
参数进行查看。如果正在运行,会打印 running 和 pid
systemctl status clickhouse-server
使用系统服务命令,可以查看 clickhouse-server 服务是否正在运行。正在运行的话,状态为 active(running);如果处于停止状态,则是 inactive(dead)。此外还会打印主进程PID,占用内存,启动参数等信息
单机模式
- 启动
/etc/init.d/clickhouse-server start
- 停止
/etc/init.d/clickhouse-server stop
- 重启
/etc/init.d/clickhouse-server restart
- client 连接 server
/usr/bin/clickhouse-client --host localhost --port 9000
集群模式
搭建zookeeper
由于服务器资源有限,zookeeper只需要部署一台机即可,并不需要做集群
下载并解压 zookeeper(https://downloads.apache.org/zookeeper/current/),然后进入bin目录,执行如下命令
# 启动zookeeper
sh zkServer.sh start ../conf/zoo_sample.cfg
# 查看zookeeper的运行状态
./zkServer.sh status ../conf/zoo_sample.cfg
# 查看zookeeper线程
jps
可以看到,启动的模式为 standalone,即单例模式
搭建clickhouse
网上搜到常见的做法是新建/etc/metrika.xml
文件,添加如下内容(所有的IP改为你集群中的IP,这里演示3个节点【节点必须是奇数个,这于zookeeper的选举机制有关】)。除了macros节点需要为每台主机分别进行配置外,其它都是一样的。
<yandex>
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.100.101</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.100.102</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.168.100.103</host>
<port>9000</port>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers>
<zookeeper-servers>
<node>
<host>192.168.100.101</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- 其它的配置都是一样,但macros节点,需要按照 “当前节点” 的IP/域名进行配置 -->
<macros>
<replica>192.168.100.101</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>
如果zookeeper用的是集群,则需要将 zookeeper-servers节点改为
<zookeeper-servers>
<node index="1">
<host>192.168.100.101</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.100.101</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.100.101</host>
<port>2181</port>
</node>
</zookeeper-servers>
然而,仅创建 /etc/metrika.xml
文件并不能使集群生效,我们查看 /etc/clickhouse-server/config.xml
- include_from 配置文件的默认位置在
/etc/metrika.xml
,可以设置此参数来改变它的位置 - remote_servers 配置分片及副本
- zookeeper 配置zookeeper的IP和端口
- macros 指定当前主机
- compression 配置压缩块的大小及压缩算法
在如图(左上角)位置加上下面这段(另外,必须删除 /etc/clickhouse-server/config.xml
中的 remote_servers 节点,不然若是在前面配的,会被覆盖掉,导致集群无效)
<include_from>/etc/metrika.xml</include_from>
<remote_servers incl="clickhouse_remote_servers"/>
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<compression incl="clickhouse_compression" optional="true" />
启动 clickhouse-server,然后用 clickhouse-clicent 连上去
#启动server
/etc/init.d/clickhouse-server start
#查看server状态
/etc/init.d/clickhouse-server status
#使用client连接server
/usr/bin/clickhouse-client --host localhost --port 9000
查询集群信息 select * from system.clusters
(若仅有 test 打头的字段,表示集群搭建失败)
以上是关于clickhouse 搭建 单机 / 集群的主要内容,如果未能解决你的问题,请参考以下文章