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工具

  1. /etc/init.d/clickhouse-server status
    clickhouse 自带了查看启动状态的命令。对于其它命令,可以使用 help 参数进行查看。如果正在运行,会打印 running 和 pid
  2. 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 搭建 单机 / 集群的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse集群搭建部署

ClickHouse集群搭建部署

Clickhouse入门学习单机集群安装部署

centos 8 clickhouse 单机版的安装

ClickHouse集群方案测评

Clickhouse 集群安装(完整版)