Docker中安裝ClickHouse
下文使用CH代替ClickHouse的稱呼。
單機版本
docker run -d \
--name clickhouse-server \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
--ulimit nofile=262144:262144 \
yandex/clickhouse-server
分布式集群版本
分布式集群結構圖
說明:
節點1和節點3為備份數據
節點2和節點4為備份數據
節點1和節點3為分片1
節點2和節點4為分片2
分片1和分片2為分布式
1、操作docker
每一台電腦都有兩個節點,我這邊只演示了一台機器的,請自行增加機器。
# 首先起一個單機的CH
docker run -d \
--name clickhouse-server \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
--ulimit nofile=262144:262144 \
yandex/clickhouse-server
# 將上面單機的CH中的配置文件復制到宿主機的目錄中。沒有/home/allspark/目錄的,請提前創建。
docker cp clickhouse-server:/etc/clickhouse-server/ /home/allspark/
# 停止單機CH
docker stop clickhouse-server
# 刪除單機CH
docker rm clickhouse-server
# 起一個CH,這里是將配置、日志、以及數據映射到宿主機
docker run --restart always \
-d \
--name clickhouse-server \
--ulimit nofile=262144:262144 \
--volume=/home/allspark/clickhouse/:/var/lib/clickhouse/ \
--volume=/home/allspark/clickhouse-server/:/etc/clickhouse-server/ \
--volume=/home/allspark/log/clickhouse-server/:/var/log/clickhouse-server/ \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
yandex/clickhouse-server
# 轉到以下目錄
cd /home/allspark/
# 復制配置文件一份,因為一台機器上面需要起兩個節點
cp -R clickhouse-server/ clickhouse-server2/
# 這里名字,日志、數據、配置都在不同的目錄,端口也加1
docker run --restart always \
-d \
--name clickhouse-server2 \
--ulimit nofile=262144:262144 \
--volume=/home/allspark/clickhouse2/:/var/lib/clickhouse/ \
--volume=/home/allspark/clickhouse-server2/:/etc/clickhouse-server/ \
--volume=/home/allspark/log/clickhouse-server2/:/var/log/clickhouse-server/ \
-p 9001:9000 \
-p 8124:8123 \
-p 9010:9009 \
yandex/clickhouse-server
# 起一個zookeeper,CH的集群分布式依賴與zookeeper
docker run --restart=always \
--name zookeeper -p 2181:2181 \
-v /home/allspark/zookeeper/conf/:/apache-zookeeper-3.5.6-bin/conf/ \
-v /home/allspark/zookeeper/data/:/data \
-v /home/allspark/zookeeper/datalog/:/datalog -v /home/allspark/zookeeper/logs/:/logs -d zookeeper
# 起一個ZKUI,便於查看zookeeper中的數據情況。
docker run --name zkui -p 9090:9090 --link zookeeper:zookeeper -e ZK_SERVER="zookeeper:2181" -d registry.cn-hangzhou.aliyuncs.com/wkaca7114/zkui
2、修改CH配置
每一個節點都需要配置,這里一台電腦兩個節點。
1、修改users.xml,用於修改CH的賬號密碼
1、找到users節點,找到下面的default節點,找到下面的password節點,這里就是密碼
2、添加修改賬號明就是將default節點完整復制一個或者在其基礎修改,為別的名字。例如將default節點名字改為admin,下面的password節點改為admin。就等於有了一個admin/admin的賬號。
在xusers.xml中默認情況在default下的密碼為空。
2、修改config.xml
1、找到interserver_http_host節點,修改為本機IP,不要使用127.0.0.1
2、listen_host修改為本機IP,不要使用127.0.0.1
3、在該文件的最后的前面一行添加
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
4、在
<timezone>Asia/Shanghai</timezone>
3、創建文件metrika.xml
在/home/allspark/clickhouse-server和/home/allspark/clickhouse-server2下分別創建文件metrika.xml文件,將下面的配置修改后復制到其中。路徑就是第1步中的路徑。
下面配置中有備注,請對應修改。
<yandex>
<!--ck集群節點-->
<clickhouse_remote_servers>
<clickhouse_cluster_name>
<!--分片1-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<!--這里寫節點1的IP4地址-->
<host>192.168.1.1</host>
<!--這里寫節點1的tcp端口-->
<port>9000</port>
<!--這里寫節點1的賬號-->
<user>default</user>
<!--這里寫節點1的賬號對應的密碼-->
<password>default</password>
</replica>
<!--復制集1-->
<replica>
<!--這里寫節點3的IP4地址-->
<host>192.168.1.2</host>
<!--這里寫節點3的tcp端口-->
<port>9000</port>
<!--這里寫節點3的賬號-->
<user>default</user>
<!--這里寫節點3的賬號對應的密碼-->
<password>default</password>
</replica>
</shard>
<!--分片2-->
<shard>
<internal_replication>true</internal_replication>
<replica>
<!--這里寫節點2的IP4地址-->
<host>192.168.1.1</host>
<!--這里寫節點2的tcp端口-->
<port>9001</port>
<!--這里寫節點2的賬號-->
<user>default</user>
<!--這里寫節點2的賬號對應的密碼-->
<password>default</password>
</replica>
<!--復制集2-->
<replica>
<!--這里寫節點4的IP4地址-->
<host>192.168.1.2</host>
<!--這里寫節點4的tcp端口-->
<port>9001</port>
<!--這里寫節點4的賬號-->
<user>default</user>
<!--這里寫節點4的賬號對應的密碼-->
<password>default</password>
</replica>
</shard>
</clickhouse_cluster_name>
</clickhouse_remote_servers>
<!--zookeeper相關配置-->
<zookeeper-servers>
<node index="1">
<!--這里寫Zookeeper的IP-->
<host>192.168.1.1</host>
<!--這里寫Zookeeper的端口-->
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<layer>01</layer>
<shard>01</shard> <!--這個節點配置的分片號-->
<replica>192.168.1.1</replica> <!--當前節點IP-->
</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> <!--壓縮算法lz4壓縮比zstd快, 更占磁盤-->
</case>
</clickhouse_compression>
</yandex>
4、重啟Docker,重新加載配置
docker restart $(docker ps -a)