Clickhouse單機及集群部署詳解


一、ClickHouse簡介

ClickHouse是近年來備受關注的開源列式數據庫,主要用於數據分析(OLAP)領域。目前國內社區火熱,各個大廠紛紛跟進大規模使用:

  • 今日頭條 內部用ClickHouse來做用戶行為分析,內部一共幾千個ClickHouse節點,單集群最大1200節點,總數據量幾十PB,日增原始數據300TB左右。
  • 騰訊內部用ClickHouse做游戲數據分析,並且為之建立了一整套監控運維體系。
  • 攜程內部從18年7月份開始接入試用,目前80%的業務都跑在ClickHouse上。每天數據增量十多億,近百萬次查詢請求。
  • 快手內部也在使用ClickHouse,存儲總量大約10PB, 每天新增200TB, 90%查詢小於3S。

在國外,Yandex內部有數百節點用於做用戶點擊行為分析,CloudFlare、Spotify等頭部公司也在使用。

二、ClickHouse指定版本單機安裝與配置

1、查看cpu是否支持sse4

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

2、下載RPM離線安裝包 

(1)在線下載很慢,可以先下載離線rpm安裝包,推薦到https://packagecloud.io/Altinity/clickhouse/下載對應的版本號。

(2)在線下載RPM安裝包

sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-19.17.4.11-1.el7.x86_64.rpm/download.rpm
sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-19.17.4.11-1.el7.x86_64.rpm/download.rpm
sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm/download.rpm
sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-19.17.4.11-1.el7.x86_64.rpm/download.rpm
sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-test-19.17.4.11-1.el7.x86_64.rpm/download.rpm
sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-debuginfo-19.17.4.11-1.el7.x86_64.rpm/download.rpm

后面兩個RPM安裝包可以不用下載

3、使用rpm -ivh ./*.rpm 安裝clickhouse,安裝中可能會有依賴沒有下載導致報錯,安裝完依賴繼續安裝,可以使用rpm -e *.rpm 移除已安裝的安裝包

/etc/clickhouse-server   clickhouse服務的配置文件目錄,包括:config.xml和users.xml
/etc/clickhouse-client    clickhouse客戶端的配置文件目錄,里面只有一個config.xml並且默認為空
/var/lib/clickhouse     clickhouse默認數據目錄
/var/log/clickhouse-server    clickhouse默認日志目錄
/etc/init.d/clickhouse-server   clickhouse啟動shell腳本,用來方便啟動服務的.
/etc/security/limits.d/clickhouse.conf   最大文件打開數的配置,這個在config.xml也可以配置
/etc/cron.d/clickhouse-server    clickhouse定時任務配置,默認沒有任務,但是如果文件不存在啟動會報錯.
/usr/bin    clickhouse編譯好的可執行文件目錄,主要有下面幾個:
    clickhouse     clickhouse主程序可執行文件
    clickhouse-compressor
    clickhouse-client      是一個軟鏈指向clickhouse,主要是客戶端連接操作使用
    clickhouse-server     是一個軟鏈接指向clickhouse,主要是服務操作使用

4、配置clickhouse配置文件

主要需要配置的文件是/etc/clickhouse-server/config.xml、/etc/clickhouse-server/users.xml

(1)config.xml配置

這部分配置clickhouse-server的日志存放目錄以及http和tcp請求端口號

配置clickhouse可以被遠程ip訪問

這一部分是分別配置clickhouse的數據存放目錄、臨時文件存放目錄、用戶文件路徑

(2)users.xml

<users></users>里面默認會有一個用戶名為default的用戶,密碼默認為空,可以配置<password></password>設置用戶密碼

新增加一個用戶名為ck,密碼為ckreadonly的用戶,profile屬性為readonly表示該用戶是只讀用戶

三、clickhosue單機在線安裝最新版本clickhouse

sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
sudo yum install clickhouse-server clickhouse-client
sudo /etc/init.d/clickhouse-server start
clickhouse-client

按照上面步驟即可

四、ClickHouse單機版連接與操作

(1)啟動clickhouse服務

service clickhouse-server start/service clickhouse-server stop

(2)啟動clickhouse-client連接操作clickhouse

clickhouse-client -h 172.16.2.161 -u default – password default

(3)使用java操作clickhouse的jdbc驅動來訪問clickhouse

五、ClickHouse集群部署

1、上面的clickhouse單機版安裝比較容易,上面是從https://packagecloud.io/Altinity/clickhouse/下載的el7安裝包,可能由於時間原因現在訪問沒有centos6的rpm包,所以在centos6上安裝clickhouse的需要el6的rpm的安裝包,可以從http://repo.yandex.ru/clickhouse/rpm/stable/x86_64/這里下載指定版本的clickhouse rpm64位包,主要是從該倉庫中下載以下安裝包:

clickhouse-client-20.6.3.28-2.noarch.rpm
clickhouse-common-static-20.6.3.28-2.x86_64.rpm
clickhouse-server-20.6.3.28-2.noarch.rpm

下載完畢后按照上面步驟二進行各個服務器節點的單機版本安裝,對於配置config.xml和users.xml文件在一個節點配置后同步到其他集群節點中即可。

2、部署zookeeper集群,在這里就不說了

3、單機版和集群版的區別就是多了一個配置clickhouse分片和副本規則,創建配置文件/etc/metrika.xml,注意要在/etc目錄下面

<?xml version="1.0" encoding="utf-8"?>
<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
<perftest_3shards_1replicas>
<!-- 數據分片1 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.2.161</host>
<port>9003</port>
<user>default</user>
<password>default</password>
</replica>
</shard>
<!-- 數據分片2 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.2.165</host>
<port>9003</port>
<user>default</user>
<password>default</password>
</replica>
</shard>
<!-- 數據分片3 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>172.16.2.241</host>
<port>9003</port>
<user>default</user>
<password>default</password>
</replica>
</shard>
</perftest_3shards_1replicas>
</clickhouse_remote_servers>

<zookeeper-servers>
<node index="1">
<host>172.16.2.232</host>
<port>2181</port>
</node>
<node index="2">
<host>172.16.2.233</host>
<port>2181</port>
</node>
<node index="3">
<host>172.16.2.234</host>
<port>2181</port>
</node>
<node index="4">
<host>172.16.2.235</host>
<port>2181</port>
</node>
<node index="5">
<host>172.16.2.236</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<shard>01</shard> <replica>172.16.2.161</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>

配置文件中配置的3分片1副本模式,配置完畢后同步到其他節點即可。

4、按照步驟四里的方式在每一台集群節點上啟動clickhouse服務並進入clickhouse-client客戶端連接

5、測試集群是否安裝成功,使用select * from system.clusters

出現這個說明安裝成功,clickhouse tcp端口默認是9000我這因為端口占用所以修改成了9003端口了。

create database jikewang on cluster perftest_3shards_1replicas;
CREATE TABLE log_test ON CLUSTER perftest_3shards_1replicas
(
    `ts` DateTime,
    `uid` String,
    `biz` String
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/log_test', '{replica}')
PARTITION BY toYYYYMMDD(ts)
ORDER BY ts;

以上代碼為測試使用

六、集群版clickhouse通過jdbc連接操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM