ClickHouse集群安装

前言

  • 目标:ClickHouse单机集群版安装
  • 本文面向ClickHouse初学者
  • 服务器环境 Ubuntu18.04

集群安装步骤如下:

  1. 安装java
  2. 安装Zookeeper(依赖Java)
  3. 安装单机ClickHouse
  4. 修改ClickHouse配置为集群版

安装步骤

一、安装Java

在线安装

1
2
sudo apt update
sudo apt install openjdk-8-jdk

离线安装

  1. 下载安装包:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html 在当前页面寻找 jdk-8u301-linux-x64.tar.gz 并下载
  2. 将文件上传至服务器并解压到指定目录
    1
    2
    3
    tar -zxvf jdk-8u301-linux-x64.tar.gz
    mkdir /usr/local/src/jdk/
    mv jdk1.8.0_301/ /usr/local/src/jdk/jdk1.8
  3. 在文件 /etc/profile 中添加环境变量
    1
    2
    3
    export JAVA_HOME=/usr/local/src/jdk/jdk1.8
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  4. 执行source /etc/profile 使得环境变量生效
  5. 使用java -version命令验证是否安装成功

二、安装Zookeeper

  1. 下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
  2. 将文件上传至服务器指定目录并解压
    1
    2
    3
    4
    5
    6
    7
    8
    # 自定义安装路径为 /usr/local/zookeeper
    ZK_PATH=/usr/local/zookeeper
    mkdir -p $ZK_PATH
    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
    mv apache-zookeeper-3.7.0-bin/* $ZK_PATH
    # 修改配置
    cd $ZK_PATH
    cp conf/zoo_sample.cfg conf/zoo.cfg
  3. 修改配置文件内容为如下
    1
    2
    3
    4
    5
    6
    tickTime=2000
    initLimit=10
    syncLimit=5
    # 主要修改dataDir属性
    dataDir=/data/zookeeper
    clientPort=2181
  4. 启动服务:$ZK_PATH/bin/zkServer.sh start
  5. 此后命令如果不需要配置认证则可跳过
  6. 进入ZK命令行:$ZK_PATH/bin/zkCli.sh
  7. 执行添加用户命令:
    1
    2
    addauth digest username:password
    setAcl / auth:username:cdrwa
  8. 重启zk服务:$ZK_PATH/bin/zkServer.sh restart

三、安装单机ClickHouse

  1. 安装CK命令如下,在安装过程中会提示输入默认用户(用户名为default)的密码
    1
    2
    3
    4
    5
    6
    7
    sudo apt-get install apt-transport-https ca-certificates dirmngr
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
    # 此处使用清华源 加快安装速度
    echo "deb https://mirrors.tuna.tsinghua.edu.cn/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
    sudo apt-get update
    sudo apt-get install -y clickhouse-server clickhouse-client
    sudo service clickhouse-server start
  2. 安装完成进行登录测试:clickhouse-client -u default –password password

四、修改ClickHouse配置为集群版

  1. 备份默认配置文件:cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.bak
  2. 然后编辑默认配置文件 /etc/clickhouse-server/config.xml 并删除集群相关的配置

    文件中 remote_servers、zookeeper、macros 标签里的全部内容

  3. 添加自定义配置文件:vi /etc/clickhouse-server/config.d/config.xml 内容如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <yandex>
    <zookeeper>
    <node index="1">
    <host>此处改为ZK的HOST</host>
    <port>2181</port>
    </node>
    <identity>zk_username:zk_password</identity>
    <session_timeout_ms>600000</session_timeout_ms>
    </zookeeper>

    <remote_servers>
    <test>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>本机IP</host>
    <port>9000</port>
    <user>default</user>
    <password>password</password>
    </replica>
    </shard>
    </test>
    </remote_servers>

    <networks>
    <ip>::/0</ip>
    </networks>

    <macros>
    <shard>01</shard>
    <replica>node1</replica>
    </macros>
    </yandex>

关键步骤解释

集群配置文件解释

zookeeper 配置

  1. 如果Zookeeper为集群版,直接增加node节点即可

remote_servers 配置

  1. remote_servers下级节点为集群,可配置多个集群
  2. 集群下级节点为分片(shard),可配置多个shard,不同shard不能用同一个ClickHouse实例
  3. 分片下级为副本(replica),可对分片配置多个副本,默认最少0个,不同副本不能用同一个ClickHouse实例
  4. internal_replication 用来控制当数据写入时(必须是Replicated*的表),由分片自己负责副本间的数据复制,否则分布式表的副本数据写入需要由Distributed引擎来负责

macros 配置

  1. 参数解释 https://stackoverflow.com/questions/68272747/what-is-macros-in-clickhouse-and-what-is-use-of-macros-in-clickhouse
  2. 本质上就是针对当前实例的全局变量的定义,可以被某些地方来引用
  3. 此配置需要在集群中全局唯一
  4. 此处的参数会在创建Replicated*的表时被引用
  5. shard的值为当前节点在在集群中的分片编号,需要在集群中唯一
  6. replica是副本的唯一标识,需要在单个分片的多个副本中唯一

参考文档

ClickHouse官方文档:

StackOverFlow关于macros的解释

一本书

  • 《ClickHouse原理解析与应用实践》