ClickHouse集群安装

前言

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

集群安装步骤如下:

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

安装步骤

一、安装Java

在线安装
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、将文件上传至服务器并解压到指定目录

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 中添加环境变量

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、将文件上传至服务器指定目录并解压

# 自定义安装路径为 /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、修改配置文件内容为如下

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、执行添加用户命令:

addauth digest username:password 
setAcl / auth:username:cdrwa
8、重启zk服务:$ZK_PATH/bin/zkServer.sh restart
 

三、安装单机ClickHouse

1、安装CK命令如下,在安装过程中会提示输入默认用户(用户名为default)的密码

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配置为集群版

备份默认配置文件:cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.bak
然后编辑默认配置文件  /etc/clickhouse-server/config.xml 并删除集群相关的配置
    • 文件中<remote_servers></remote_servers>标签里的全部内容
    • 文件中<zookeeper></zookeeper>标签里的全部内容
    • 文件中<macros></macros>标签里的全部内容
添加自定义配置文件:vi /etc/clickhouse-server/config.d/config.xml 内容如下
<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>
然后重启CK即可:service clickhouse-server restart

关键步骤解释

集群配置文件解释

zookeeper 配置

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

remote_servers 配置

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

macros 配置

参数解释 https://stackoverflow.com/questions/68272747/what-is-macros-in-clickhouse-and-what-is-use-of-macros-in-clickhouse

    1. 本质上就是针对当前实例的全局变量的定义,可以被某些地方来引用
    2. 此配置需要在集群中全局唯一
    3. 此处的参数会在创建Replicated*的表时被引用
    4. shard的值为当前节点在在集群中的分片编号,需要在集群中唯一
    5. replica是副本的唯一标识,需要在单个分片的多个副本中唯一
 

参考文档:

ClickHouse官方文档:
 
StackOverFlow关于macros的解释
 
一本书:
《ClickHouse原理解析与应用实践》

 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/dyfblog/p/15209114.html