Clickhouse如何實(shí)現(xiàn)數(shù)據(jù)更新
1203
2022-05-29
系統(tǒng)要求
如果從官方倉庫安裝,需要確保您使用的是x86_64處理器構(gòu)架的Linux并且支持SSE 4.2指令集
檢查是否支持SSE 4.2:
命令:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
我們推薦使用Ubuntu或者Debian。終端必須使用UTF-8編碼。基于rpm的系統(tǒng),你可以使用第三方的安裝包:https://packagecloud.io/altinity/clickhouse 或者直接安裝debian安裝包。ClickHouse還可以在FreeBSD與Mac OS X上工作。同時它可以在不支持SSE 4.2的x86_64構(gòu)架和AArch64 CPUs上編譯。
來自packagecloud.io的ClickHouse RPM軟件包安裝(單節(jié)點(diǎn)安裝)
1.基于腳本的安裝
為方便起見,packagecloud.io提供了一個很好的,用戶友好的方式來添加他們腳本的回購。我們需要下載并運(yùn)行packagecloud的bash腳本,它將執(zhí)行所有必需的步驟。
安裝腳本
確保curl已安裝在系統(tǒng)上,
命令:
sudo yum install -y curl
下載并運(yùn)行packagecloud.io提供的安裝shell腳本,
命令:
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
腳本后安裝包
首先,確保我們有可用于安裝的ClickHouse軟件包,
命令:
sudo yum list 'clickhouse*'
ClickHouse包應(yīng)該列為可用,如下所示:
有多個軟件包可用(新版本和舊工具),其中一些已經(jīng)棄用,因此無需安裝所有可用的RPM。
現(xiàn)在讓我們安裝ClickHouse主要部件 - 服務(wù)器和客戶端應(yīng)用程序,
命令:
sudo yum install -y clickhouse-server clickhouse-client
并驗(yàn)證它是否已列為已安裝,
命令:
sudo yum install -y clickhouse-server clickhouse-client
并驗(yàn)證它是否已列為已安裝,
命令:
sudo yum list installed 'clickhouse*'
ClickHouse軟件包應(yīng)列為已安裝,如下所示,
確保ClicKhouse服務(wù)器正在運(yùn)行,
命令:
sudo /etc/init.d/clickhouse-server restart
然后連接到它 clickhouse-client,
命令:
clickhouse-client
ClickHouse服務(wù)器應(yīng)該響應(yīng),如下所示,
至此,單機(jī)版的ClickHouse完成安裝
2.手動安裝
參見官方文檔
分布式集群搭建
1.配置文件解析
ClickHouse有幾核心的配置文件:
*config.xml 端口配置、本地機(jī)器名配置、內(nèi)存設(shè)置等
*metrika.xml 集群配置、ZK配置、分片配置等
*users.xml 權(quán)限、配額設(shè)置
2.rpm啟動方式
rpm安裝后,會在服務(wù)器上生成如下幾個文件:
# 默認(rèn)配置文件位置
root@localhost.localdomain:/ ?# ls /etc/clickhouse-server
config.xml ?users.xml
# 上述文件定義了默認(rèn)數(shù)據(jù)目錄,臨時目錄位置,日志目錄
/var/lib/clickhouse
/var/lib/clickhouse/tmp/
/var/log/clickhouse-server
# 默認(rèn)啟動腳本,注意,這個名字雖然叫server,其實(shí)是個shell腳本
/etc/rc.d/init.d/clickhouse-server
root@localhost.localdomain:/ ?# file /etc/rc.d/init.d/clickhouse-server
/etc/rc.d/init.d/clickhouse-server: POSIX shell script, ASCII text executable, with very long lines
# 最大文件打開數(shù)
root@localhost.localdomain:/ ?# cat /etc/security/limits.d/clickhouse.conf
clickhouse ? ? ?soft ? ?nofile ?262144
clickhouse ? ? ?hard ? ?nofile ?262144
# 默認(rèn)crontab目錄(沒啥用)
/etc/cron.d/clickhouse-server
# 剩下就是/usr/bin下的二進(jìn)制文件,但其實(shí)都是軟鏈接到了clickhouse這個二進(jìn)制文件
root@localhost.localdomain:/usr/bin ?# ll | grep click -i
-rwxr-xr-x ? ?1 root root ? ? ?63M Sep 20 16:58 clickhouse
lrwxrwxrwx ? ?1 root root ? ? ? 10 Dec 11 17:14 clickhouse-client -> clickhouse
-rwxr-xr-x ? ?1 root root ? ? 3.3M Sep 20 16:58 clickhouse-compressor
lrwxrwxrwx ? ?1 root root ? ? ? 10 Dec 11 17:14 clickhouse-server -> clickhouse
3.注意幾個問題:
(1)默認(rèn)的數(shù)據(jù)目錄明顯不合理,特別是對于部分機(jī)器,系統(tǒng)盤和數(shù)據(jù)盤是不同的配置,需要單獨(dú)掛載,以我們?yōu)槔覀兘y(tǒng)一使用/data1來放數(shù)據(jù),數(shù)據(jù)目錄以clickhouse命名,考慮到不用單機(jī)多實(shí)例,不以clickhouse${port}來命名
(2)默認(rèn)的配置文件,對我們的管理也是個隱患,建議把配置文件、數(shù)據(jù)目錄、臨時目錄、日志文件,統(tǒng)一放到/data1/clickhouse里,即:
文件夾:cores、data、還有data_old、flags、log、metadata、tmp,文件:status,
啟動腳本:start_ck.sh(即 file /etc/rc.d/init.d/clickhouse-server)
(3)修改默認(rèn)的shell腳本,修改默認(rèn)配置文件的位置,即上面的start_ck.sh
4.CK里的引擎有十幾個,這里只推薦3個
*MergeTree,是CK里最A(yù)dvanced的引擎,性能超高,單機(jī)寫入可以達(dá)到50w峰值,查詢性能非常快,有興趣看我其他文章
*ReplicatedMergeTree,基于MergeTree,同時引入ZK,做了復(fù)制,下文會說
*Distributed,分布式引擎,本身不存儲數(shù)據(jù),可認(rèn)為就是一張View,如果寫入,會把請求丟到集群里的節(jié)點(diǎn)(有算法控制),如果查詢,會幫你做查詢轉(zhuǎn)發(fā)再聚合返回
5.修改配置文件
(1)修改config.xml里對數(shù)據(jù)目錄的定義
說明:remote_servers就是集群配置,可以直接在此處配置,也可以提出來配置到擴(kuò)展文件中。incl屬性表示可從外部文件中獲取節(jié)點(diǎn)名為clickhouse_remote_servers的配置內(nèi)容。
使用擴(kuò)展文件,首先,添加外部擴(kuò)展配置文件。
(2)metrika.xml
說明:
clickhouse_remote_servers與config.xml中的incl屬性值對應(yīng);
cluster_3shards_1replicas是集群名,可以隨便取名;
共設(shè)置3個分片,每個分片只有1個副本;
(3)user.xml
用于用戶管理
問題:端口占用
查看端口占用情況:
sudo netstat -nltp | grep 9000
sudo ?kill -9 3071
XML 存儲
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。