天天看點

使用Docker安裝ClickHouse

什麼是ClickHouse

相對行式資料庫,像Mysql、Oracle、SqlServer等都是行式存儲,是把同一行的資料放到相鄰同一資料塊種,而列式存儲是把同一列的資料放到相鄰同一資料塊種,這樣在進行計算類查詢時,可以大大減少IO消耗,傳回結果更快,采用列式存儲後在進行資料記錄寫入的時候會麻煩一些。

列式資料庫VS 行式資料庫

使用Docker安裝ClickHouse

列式存儲的主要優點之一就是可以大幅降低系統的I/O,尤其是在海量資料查詢時,I/O向來是系統的主要瓶頸之一。通過下面這張圖,相信大家能夠徹底明白這一點。

使用Docker安裝ClickHouse

ClickHouse 很多大廠都在用,本篇主要使用Docker進行安裝

安裝配置

  • 建立目錄并更改權限
mkdir -p /app/cloud/clickhouse/data
mkdir -p /app/cloud/clickhouse/conf
mkdir -p /app/cloud/clickhouse/log
 
chmod -R 777 /app/cloud/clickhouse/data
chmod -R 777 /app/cloud/clickhouse/conf
chmod -R 777 /app/cloud/clickhouse/log      
  • 拉取鏡像
docker pull yandex/clickhouse-server:20.3.5.21      

檢視

https://hub.docker.com/r/yandex/clickhouse-server/dockerfile

檔案,EXPOSE  9000  8123  9009 了三個端口,而主控端9000端口已被 MinIO 對象存儲伺服器占用,是以建立容器暴露該端口用9090替換

root@jazz-pc:~# docker ps --format "table {{.Names}} ------> {{.Ports}}" | grep minio
minio ------> 0.0.0.0:9000->9000/tcp      
  • 建立臨時容器
docker run --rm -d --name=clickhouse-server \
--ulimit nofile=262144:262144 \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
yandex/clickhouse-server:20.3.5.21      
  • 複制臨時容器内配置檔案到主控端
docker cp clickhouse-server:/etc/clickhouse-server/config.xml /app/cloud/clickhouse/conf/config.xml
docker cp clickhouse-server:/etc/clickhouse-server/users.xml /app/cloud/clickhouse/conf/users.xml      
  • 停掉臨時容器
docker stop clickhouse-server      
  • 建立default賬号密碼
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'      

會輸出明碼和SHA256密碼 SEGByR98 211371f5bc54970907173acf6facb35f0acbc17913e1b71b814117667c01d96d

  • 建立root賬号密碼
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'      

會輸出明碼和SHA256密碼 092j3AnV 35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e

  • 修改 /app/cloud/clickhouse/conf/users.xml

    把default賬号設為隻讀權限,并設定密碼 yandex-->users-->default-->profile 節點設為 readonly 注釋掉 yandex-->users-->default-->password 節點 新增  yandex-->users-->default-->password_sha256_hex 節點,填入生成的密碼

  • 新增root賬号
<root>
<password_sha256_hex>35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e</password_sha256_hex>
     <networks incl="networks" replace="replace">
        <ip>::/0</ip>
    </networks>
    <profile>default</profile>
    <quota>default</quota>
</root>      
  • 建立容器
docker run -d --name=clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
--ulimit nofile=262144:262144 \
-v /app/cloud/clickhouse/data:/var/lib/clickhouse:rw \
-v /app/cloud/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v /app/cloud/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v /app/cloud/clickhouse/log:/var/log/clickhouse-server:rw \
yandex/clickhouse-server:20.3.5.21      
  • 用 DataGrip 連接配接
使用Docker安裝ClickHouse
  • 用 dbeaver 連接配接
使用Docker安裝ClickHouse