ClickHouse集群安裝部署流程(踩坑解決)
- ClickHouse集群安裝部署
- Fisrt
- 1、安裝之前
- 1.1、SSE 4.2 指令集
- 1.2、設定用戶的檔案句柄數
- 2、單節點方式
- 2.1、yum方式安裝RPM安裝包方式一
- 2.1.1、推薦使用CentOS、RedHat和所有其他基于rpm的Linux發行版的官方預編譯rpm包,
- 2.1.2、查看安裝包命令:
- 2.1.3、然后運行命令安裝:
- 2.2、yum方式安裝RPM安裝包方式二
- 2.2.1、安裝curl工具
- 2.2.2、添加clickhouse的yum鏡像
- 2.2.3、檢查鏡像情況
- 2.2.4、安裝clickhouse的服務端和客戶端
- 2.3、啟動服務端
- 2.3.1、啟動服務端:
- 2.3.2、如果沒有service ,可以運行如下命令在后臺啟動服務:
- 2.3.3、如果提示: Init script is already running 則使用下面命令啟動:
- 2.3.4、查看服務狀態:
- 2.3.5、如果服務沒有啟動,檢查/etc/clickhouse-server/config.xml中的配置,您也可以手動從控制臺啟動服務:
- 2.4、啟動互動式客戶端(在機器根目錄下啟動)
- 2.4.1、啟動命令:
- 2.4.2、客戶端常見引數:
- 2.4.3、多行輸入 (加上-m 之后,在客戶端可以多行輸入):
- 2.5、升級
- 2.5.1、查看當前版本
- 2.5.2、升級命令:
- 2.6、目錄結構
- 2.7、服務端clickhouse-server常用命令
- 2.7.1、啟動
- 2.7.2、查看狀態
- 2.7.3、重啟
- 2.7.4、關閉
- 3、集群方式
- 3.1、每個節點都采用單節點方式安裝ClickHouse服務
- 3.2、集群配置
- 3.2.1、開啟遠程訪問權限
- 3.2.2、添加集群組態檔
- 3.2、重啟clickhouse-server服務
- 3.2.1、重啟服務命令
- 3.2.2、查看服務狀態
- 3.2.3、登錄客戶端驗證
- End
- 參考文章
ClickHouse集群安裝部署
Fisrt
第一次寫博客,有問題歡迎評論指出,
自己親手實踐安裝,踩了很多坑!!!
1、安裝之前
1.1、SSE 4.2 指令集
ClickHouse通過向量化執行引擎來加速查詢,向量化執行可以簡單的看作一項消除程式中回圈的優化,為了實作向量化需要利用 CPU 的 SIMD (Single Instruction Multiple Data)指令,通過單條指令可以實作操作多條資料,在現代計算機中是通過資料并行來提高性能,其原理就是在 CPU 暫存器層面實作資料的并行操作,ClickHouse 目前通過 SSE 4.2 指令集實作向量化執行的,
下面是檢查當前CPU是否支持SSE 4.2的命令:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
如果回傳SSE 4.2 supported表示支持:

1.2、設定用戶的檔案句柄數
調整一下CentOS系統對打開檔案數的限制,在/etc/security/limits.conf、/etc/security/limits.d/*-nproc.conf這2個檔案的末尾加入以下內容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
# 或者配置 clickhouse 用戶的檔案句柄數,clickhouse 會以 clickhouse 用戶運行
#clickhouse soft nofile 262144
#clickhouse hard nofile 262144
修改完畢之后,SSH工具重新連接,再次登錄后,執行如下命令查看,如果輸出的值是我們設定的則表示已生效,
# 查看
ulimit -n
2、單節點方式
在ClickHouse官方檔案中有很多安裝方式,本文采用其中二種方式介紹,更多方法的詳細內容請參見官方檔案:ClickHouse官方中文檔案
2.1、yum方式安裝RPM安裝包方式一
如果服務器可以連接網路,則可以直接通過yum方式安裝,執行如下命令,如果是普通用戶需要有sudo權限,
2.1.1、推薦使用CentOS、RedHat和所有其他基于rpm的Linux發行版的官方預編譯rpm包,
sudo yum install yum-utils
sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
如果您想使用最新的版本,請用testing替代stable(我們只推薦您用于測驗環境),prestable有時也可用,
2.1.2、查看安裝包命令:
yum list | grep clickhouse
主要有以下三個包:
clickhouse-client.noarch 21.3.4.25-2 @repo.clickhouse.tech_rpm_stable_x86_64
clickhouse-common-static.x86_64 21.3.4.25-2 @repo.clickhouse.tech_rpm_stable_x86_64
clickhouse-server.noarch 21.3.4.25-2 @repo.clickhouse.tech_rpm_stable_x86_64
2.1.3、然后運行命令安裝:
sudo yum install clickhouse-server clickhouse-client
2.2、yum方式安裝RPM安裝包方式二
2.2.1、安裝curl工具
yum install -y curl
2.2.2、添加clickhouse的yum鏡像
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
2.2.3、檢查鏡像情況
yum list | grep clickhouse
主要有以下三個包:
clickhouse-client.x86_64 20.8.3.18-1.el7 Altinity_clickhouse
clickhouse-server.x86_64 20.8.3.18-1.el7 Altinity_clickhouse
clickhouse-common-static.x86_64 20.8.3.18-1.el7 Altinity_clickhouse
2.2.4、安裝clickhouse的服務端和客戶端
yum install -y clickhouse-server clickhouse-client
2.3、啟動服務端
2.3.1、啟動服務端:
service clickhouse-server start
2.3.2、如果沒有service ,可以運行如下命令在后臺啟動服務:
sudo /etc/init.d/clickhouse-server start
2.3.3、如果提示: Init script is already running 則使用下面命令啟動:
systemctl start clickhouse-server
日志檔案將輸出在/var/log/clickhouse.server/檔案夾,
2.3.4、查看服務狀態:
systemctl status clickhouse-server
2.3.5、如果服務沒有啟動,檢查/etc/clickhouse-server/config.xml中的配置,您也可以手動從控制臺啟動服務:
clickhouse-server --config -file=/etc/clickhouse-server/config.xml
日志檔案將直接輸出在控制臺,
2.4、啟動互動式客戶端(在機器根目錄下啟動)
2.4.1、啟動命令:
clickhouse-client
啟動成功如下:
[root@bigdata01 ~]# clickhouse-client
ClickHouse client version 21.3.4.25 (official build).
Connecting to localhost:9001 as user default.
Connected to ClickHouse server version 21.3.4 revision 54447.bigdata01 😃 q;
Bye.
[root@bigdata01 ~]#
退出命令:q;
2.4.2、客戶端常見引數:
[root@bigdata01 ~]# clickhouse-client -help
Main options:
--help produce help message
-C [ --config-file ] arg config-file path
-c [ --config ] arg config-file path (another shorthand)
-h [ --host ] arg (=localhost) server host
--port arg (=9000) server port
-s [ --secure ] Use TLS connection
-u [ --user ] arg (=default) user
--password arg password
未設定密碼時 --database / -d 登錄的資料庫
–help 查看幫助資訊
–host / -h 服務端地址,默認是 localhost,如果修改 config.xml 中的 listen_host 值后可以使用此引數指定訪問的 ip
–multiline / -m 支持SQL多行陳述句,而不是回車就執行
–multiquery / -n 允許一次執行多條 SQL 陳述句 --password 登錄的密碼,默認值為空
–port 服務端的 TCP 埠,默認值為 9000
–query / -q 指定 SQL 陳述句
–time / -t 列印每條 SQL 的執行時間
–user / -u 登錄的用戶名,默認值為 default
–version / -V 查看版本資訊
2.4.3、多行輸入 (加上-m 之后,在客戶端可以多行輸入):
clickhouse-client -m
2.5、升級
如果需要在原有 ClickHouse 的基礎上升級也是非常方便,直接下載新版本的 RPM 包,執行如下命令安裝升級(可以不用關閉 ClickHouse 服務),升級的程序中,原有的 config.xml 等配置均會被保留,也可以參考官方資料使用其它方式升級 ClickHouse,
2.5.1、查看當前版本
clickhouse-server --version
2.5.2、升級命令:
rpm -Uvh clickhouse-*-20.8.3.18-1.el7.x86_64.rpm
安裝的程序可以看到,新包中的配置以 .rpmnew 后綴,舊的組態檔保留
2.6、目錄結構
/etc/clickhouse-server
:服務端的組態檔目錄,包括全域配置 config.xml和用戶配置 users.xml
/var/lib/clickhouse
:默認的資料存盤目錄,如果是生產環境可以將其修改到空間較大的磁盤掛載路徑,可以通過修改 /etc/clickhouse-server/config.xml 組態檔中path、tmp_path和user_files_path標簽值來設定,
/var/log/clickhouse-server
:默認的日志保存目錄,同樣可以通過修改 /etc/clickhouse-server/config.xml 組態檔中log和errorlog標簽值來設定,
/etc/cron.d/clickhouse-server
:clickhouse server 的一個定時配置,用于恢復因例外中斷的 ClickHouse 服務行程,
~/.clickhouse-client-history
:client 執行的 sql 歷史記錄,
2.7、服務端clickhouse-server常用命令
2.7.1、啟動
systemctl start clickhouse-server
可以在/var/log/clickhouse-server/目錄中查看日志,
或者基于指定的組態檔啟動服務,使用此命令時注意權限
clickhouse-server --config-file=/etc/clickhouse-server/my_config.xml
2.7.2、查看狀態
systemctl status clickhouse-server
2.7.3、重啟
systemctl restart clickhouse-server
2.7.4、關閉
systemctl stop clickhouse-server
3、集群方式
例如在三個節點(bigdata01、bigdata02、bigdata03)的機器上安裝部署ClickHouse,CentOS 7系統的防火墻和SELINUX已經關倍訓禁止或埠已開放,集群的方式需要依賴ZooKeeper服務,因此先要保證ZooKeeper服務正常啟動,
3.1、每個節點都采用單節點方式安裝ClickHouse服務
程序看上面,此處略,
3.2、集群配置
3.2.1、開啟遠程訪問權限
因為集群之間需要互相訪問其它節點的服務,需要開放ClickHouse服務的ip和埠
進入機器的根目錄下 /etc/clickhouse-server/ 目錄下
vi config.xml;
進入組態檔中,查找到<listen_host>標簽(注釋里)
如果集群ipv4和ipv6地址都支持,將:
<listen_host>::</listen_host> 取消注釋
如果集群支持ipv4和不支持ipv6,將:
<listen_host>0.0.0.0</listen_host> 取消注釋
下面這種方式我沒有成功,應該是我的服務器沒有設定支持ipv6
<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>
至于怎么看主機是否支持ipv4和ipv6以及如何開啟,可以去這里了解
查看服務器是否支持ipv6(Linux)
添加我們后面需要創建的metrika.xml檔案的路徑:
<include_from>/etc/clickhouse-server/metrika.xml</include_from>
再添加以下內容:
<remote_servers incl="clickhouse_remote_servers" optional="true" />
<zookeeper incl="zookeeper-servers" optional="true" />
注釋或者洗掉其中配置的用于測驗分布式存盤的分片配置:
<test_shard_localhost>
……
</test_unavailable_shard>
然后保存退出
3.2.2、添加集群組態檔
先在bigdata01節點配置/etc/clickhouse-server/metrika.xml(需要自己創建,默認為 /etc/metrika.xml,自己制定時需要在config.xml中指明),這個檔案主要將ClickHouse各個服務的host和port、ZooKeeper集群的各個節點配置到檔案中,bigdata02和bigdata03也同樣配置,只不過需要將macros標簽下的replica標簽中的值改為自己節點的主機名或者ip,
metrika.xml內容如下(復制過去請將里面所有的中文注釋刪掉,否則會報編碼錯誤,我們放這里是為了方便理解,不刪的話把編碼格式改為utf-8即可):
<yandex>
<!-- /etc/clickhouse-server/config.xml 中配置的remote_servers的incl屬性值,需要在config.xml中指定,默認為remote_servers-->
<clickhouse_remote_servers>
<clickhouse_cluster><!-- 自定義的集群名 -->
<!-- 資料分片1 -->
<shard>
<internal_replication>true</internal_replication>
<!-- 分片1的副本,只設定一個,就是它本身 -->
<replica>
<host>bigdata01</host>
<port>9000</port>
</replica>
</shard>
<!-- 資料分片2 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>bigdata02</host>
<port>9000</port>
</replica>
</shard>
<!-- 資料分片3 -->
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>bigdata03</host>
<port>9000</port>
</replica>
</shard>
</clickhouse_cluster><!-- 自定義的集群名 -->
</clickhouse_remote_servers>
<!-- /etc/clickhouse-server/config.xml 中配置的zookeeper的incl屬性值,需要在config.xml中指定,默認為zookeeper-->
<!--zookeeper相關配置-->
<zookeeper-servers>
<!--zookeeper中節點的index順序需要與主機名或者ip匹配,不一定一一對應,可以去查看一下你部署的zookeeper主機映射,保證節點映射匹配-->
<node index="1">
<host>bigdata02</host>
<port>2181</port>
</node>
<node index="2">
<host>bigdata03</host>
<port>2181</port>
</node>
<node index="3">
<host>bigdata01</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<replica>bigdata01</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>
劃重點:
使用這種方法需要在/etc/clickhouse-server/config.xml中指定你創建的metrika.xml檔案路徑,還要指定remote_servers和zookeeper的incl屬性值,比較麻煩,所以可以直接在全域組態檔/etc/clickhouse-server/config.xml中修改即可,
我采用的就是直接修改config.xml,
這里有個坑需要注意,如果你開始是用了配置metrika.xml檔案的方式,失敗了,然后想換用直接修改config.xml的方式,clickhouse-server重啟服務時一直失敗,查看日志就發現,明明我刪掉了指定路徑,怎么在重啟的時候它還是會去尋找metrika.xml檔案,因為默認路徑已經被修改到了你指定的路徑,不管在config.xml中怎么改,它都會去加載metrika.xml配置,如果metrika.xml原本就沒配置對的話,就會一直報錯,
解決辦法有兩種:
第一種:全部節點卸載clickhouse,怎么卸載請自行百度,這里就不給出了,網上很多,然后重新安裝,再按照上面我說的直接修改config.xml的方法開始部署,當然這種方法比較笨,不建議,但我是這么做的,🙃
第二種:刪掉你的metrika.xml檔案,哪怕默認路徑是這里,沒有檔案的話它就不會加載metrika.xml 了,在config.xml中直接刪掉指定路徑沒有用,或者你也可以直接將指定路徑改為默認路徑/etc/metrika.xml并刪掉你的metrika.xml檔案,再重啟即可,本人覺得這樣可行,但是沒試過,我是直接刪庫重來的,慎用,
3.2、重啟clickhouse-server服務
在三個節點的服務器上分別啟動ClickHouse服務,
啟動時請保證每個節點的9000埠未被占用
netstat -tunlp | grep 9000
如果占用請修改/etc/clickhouse-server/config.xml檔案中的埠(<tcp_port>9000</tcp_port>),同時記得/etc/clickhouse-server/metrika.xml中(<clickhouse_remote_servers>)的埠號也要統一,
如果你跟我一樣是直接修改/etc/clickhouse-server/config.xml的方式的話,其中(<remote_servers>)的埠號也要統一,
3.2.1、重啟服務命令
systemctl restart clickhouse-server
3.2.2、查看服務狀態
systemctl status clickhouse-server
如果Active 顯示的為 active,且資訊中沒有錯誤,則表示啟動成功,
3.2.3、登錄客戶端驗證
clickhouse-client
如果你的9000埠被占用,換成了其他埠 那么登錄客戶端的時候要指定埠號:- -port 埠號
例如你設定的9001,登錄命令為:
clickhouse-client --port 9001
當然你也可以修改客戶端的默認埠,一勞永逸,
clickhouse-client查找組態檔的順序:
1)通過–config-file指定的組態檔,
2)./clickhouse-client.xml
3)~/.clickhouse-client/config.xml
4)/etc/clickhouse-client/config.xml
不指定埠時,默認有以下埠
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 340/clickhouse-serv
tcp 0 0 127.0.0.1:9004 0.0.0.0:* LISTEN 340/clickhouse-serv
tcp 0 0 127.0.0.1:9009 0.0.0.0:* LISTEN 340/clickhouse-serv
tcp 0 0 127.0.0.1:8123 0.0.0.0:* LISTEN 340/clickhouse-serv
vim /etc/clickhouse-server/config.xml
修改:
<tcp_port>9001</tcp_port>
三個結點的都改好后,重新登錄客戶端
clickhouse-client
查看集群資訊
[root@bigdata01 ~]# clickhouse-client
ClickHouse client version 21.3.4.25 (official build).
Connecting to localhost:9001 as user default.
Connected to ClickHouse server version 21.3.4 revision 54447.
bigdata01 :) SELECT * FROM system.clusters
SELECT *
FROM system.clusters
Query id: d53821ac-d362-419d-9c51-c3772e6a1e33
┌─cluster────────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
│ clickhouse_cluster │ 1 │ 1 │ 1 │ bigdata01 │ xx.xx.xx.xx │ 9001 │ 1 │ default │ │ 0 │ 0 │
│ clickhouse_cluster │ 2 │ 1 │ 1 │ bigdata02 │ xx.xx.xx.xx │ 9001 │ 0 │ default │ │ 0 │ 0 │
│ clickhouse_cluster │ 3 │ 1 │ 1 │ bigdata03 │ xx.xx.xx.xx │ 9001 │ 0 │ default │ │ 0 │ 0 │
└────────────────────┴───────────┴──────────────┴─────────────┴───────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────────────┘
3 rows in set. Elapsed: 0.002 sec.
End
參考文章
參考文章:
[1]: ClickHouse官方中文檔案
[2]: ClickHouse介紹及安裝(含集群方式)和使用
[3]: ClickHouse之入門學習-單節點安裝 / 集群的建立 / 基本命令操作-日志系列引擎(2 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274178.html
標籤:其他
上一篇:Hadoop集群環境搭建
