vector自动扩容如何实现_腾讯云ClickHouse如何实现自动化的数据均衡?
?一、引言
ClickHouse 是一個(gè)用于聯(lián)機(jī)分析( OLAP )的列式數(shù)據(jù)庫(kù)管理系統(tǒng)( DBMS )。它于 2016 年以 Apache 2.0 協(xié)議開(kāi)源,以?xún)?yōu)秀的查詢(xún)性能,深受廣大大數(shù)據(jù)工程師歡迎。
為了服務(wù)客戶(hù)業(yè)務(wù),騰訊云于 2020 年 4 月正式上線 ClickHouse 服務(wù)。服務(wù)上線以來(lái),迅速獲得內(nèi)外客戶(hù)廣泛支持,服務(wù)業(yè)務(wù)數(shù)量成規(guī)模增長(zhǎng)。與此同時(shí),運(yùn)維與管控壓力也隨之而來(lái),用戶(hù)對(duì)彈性伸縮能力的呼聲越來(lái)越大。
事實(shí)上,ClickHouse 是典型的 Share-Nothing 架構(gòu),天然支持彈性伸縮能力。無(wú)論是增加節(jié)點(diǎn)數(shù)量,還是增加數(shù)據(jù)分片副本數(shù)量都非常容易。
圖1 ClickHouse Share-Nothing 架構(gòu)
但是,ClickHouse 集群在增加節(jié)點(diǎn)后,集群上的數(shù)據(jù)集無(wú)法自動(dòng)均衡分布。需要人工干預(yù),確保數(shù)據(jù)均衡。同理,下線集群節(jié)點(diǎn)前,也需要人工干預(yù),將被下線節(jié)點(diǎn)的機(jī)器遷移到其他節(jié)點(diǎn)。
在生產(chǎn)環(huán)境中,運(yùn)維工作強(qiáng)度隨著集群中表的數(shù)量,數(shù)據(jù)規(guī)模增加而急劇增強(qiáng)。為了緩解云上 ClickHouse 用戶(hù)運(yùn)維壓力,將 ClickHouse 數(shù)據(jù)均衡運(yùn)維工作自動(dòng)化是非常有價(jià)值的。
本文將帶大家了解騰訊云 ClickHouse 是如何實(shí)現(xiàn)無(wú)人值守的數(shù)據(jù)均衡服務(wù),希望與大家一同交流。
二、ClickHouse集群數(shù)據(jù)均衡功能缺失
在生產(chǎn)環(huán)境中,通常 ClickHouse 通常以集群模式部署。在 ClickHouse 集群中,用戶(hù)根據(jù)業(yè)務(wù)需求將集群節(jié)點(diǎn)劃分為若干子集合。每個(gè)集合存儲(chǔ)若干數(shù)據(jù)集,在使用層面,用戶(hù)通過(guò)分布式表( Distributed Engine )來(lái)查詢(xún)整個(gè)數(shù)據(jù)集。
在 ClickHouse 的語(yǔ)義中,有一個(gè) Cluster 概念,它是一個(gè)節(jié)點(diǎn)的集合,并且定義了存儲(chǔ)在該 Cluster 上的數(shù)據(jù)集的分片數(shù)量,以及分片的副本數(shù)量,以及其存儲(chǔ)節(jié)點(diǎn)。
如上圖 1 所示,一個(gè)名為 cluster-dataset 的 Cluster, 定義了 4 個(gè)分片( SHARD ), 每個(gè)分片有 2 個(gè)副本。當(dāng)存儲(chǔ)在這個(gè) Cluster 上的數(shù)據(jù)集,通常會(huì)分散存儲(chǔ)在 4 個(gè)分片中,并且每個(gè)分片數(shù)據(jù)會(huì)存儲(chǔ) 2 個(gè)副本。
為 Cluster 增加分片是非常容易,分配機(jī)器,修改配置即可。如下圖所示,給 cluster-dataset 增加一個(gè)分片。但是已存的數(shù)據(jù)數(shù)據(jù)集仍然在分片 SHARED1-4 上。很明顯,新增的節(jié)點(diǎn)存在資源浪費(fèi)的問(wèn)題,包括計(jì)算資源和存儲(chǔ)資源。
圖2:擴(kuò)容節(jié)點(diǎn)示意圖
為了解決這樣問(wèn)題,有若干方案解決:
- 將數(shù)據(jù)全部刪除掉,從后備數(shù)據(jù)源重新導(dǎo)入數(shù)據(jù)到 ClickKhouse;
- 增加新節(jié)點(diǎn)的權(quán)重,過(guò)一定時(shí)間后待數(shù)據(jù)均衡后,重新調(diào)整新增節(jié)點(diǎn)權(quán)重;
- 其他,如人工搬運(yùn)數(shù)據(jù)到新增節(jié)點(diǎn)
但是無(wú)論使用上述哪一種種方法,都存在缺陷。比如對(duì)于第一個(gè)方案而言,如果 ClickHouse 中數(shù)據(jù)并無(wú)后備數(shù)據(jù)源,那么該方案不可行。即使有后備數(shù)據(jù)源,重新導(dǎo)入數(shù)據(jù)耗時(shí),且停服時(shí)間與數(shù)據(jù)量成正比,代價(jià)大。
對(duì)于第二種方案,需要對(duì)新節(jié)點(diǎn)進(jìn)行多次權(quán)限調(diào)整。在調(diào)整期間,數(shù)據(jù)存儲(chǔ)壓力向新增節(jié)點(diǎn)傾斜,無(wú)法充分利用集群優(yōu)勢(shì)。且容易導(dǎo)致新近數(shù)據(jù)集中在新增節(jié)點(diǎn)上,導(dǎo)致集群資源浪費(fèi),降低查詢(xún)效率。
對(duì)于第三種方案而言,操作繁雜,在表多,數(shù)據(jù)量大的情況下,易出錯(cuò)。
三、云上ClickHouse解決方案
為了解決 ClickHouse 集群數(shù)據(jù)均衡功能缺失,帶來(lái)的運(yùn)維壓力,騰訊云 ClickHouse 提供了數(shù)據(jù)自動(dòng)均衡功能。
簡(jiǎn)而言之,在獲得用戶(hù)授權(quán)后,用戶(hù)在控制臺(tái)上簡(jiǎn)單配置,填寫(xiě)數(shù)據(jù)遷移網(wǎng)絡(luò)帶寬上限,即可啟動(dòng)數(shù)據(jù)均衡任務(wù)。
后臺(tái)管控系統(tǒng)根據(jù)機(jī)器當(dāng)期磁盤(pán)可用容量,合理安排數(shù)據(jù)遷移計(jì)劃。然后,根據(jù)網(wǎng)絡(luò)帶寬上限,執(zhí)行遷移計(jì)劃。最終,使得數(shù)據(jù)在節(jié)點(diǎn)上分布趨于均衡。
舉一個(gè)例子來(lái)進(jìn)行說(shuō)明,在云上申請(qǐng)一個(gè) ClickHouse 實(shí)例,2 個(gè)節(jié)點(diǎn)。在其中一個(gè)節(jié)點(diǎn)上創(chuàng)建一個(gè)名為 lineorder 的表,并導(dǎo)入測(cè)試數(shù)據(jù)。查看該表在該節(jié)點(diǎn)上的存儲(chǔ)容量,結(jié)果如下所示:
另外一個(gè)節(jié)點(diǎn)上沒(méi)有該表的數(shù)據(jù),也沒(méi)有表的 schema。我們通過(guò)數(shù)據(jù)遷移功能完成數(shù)據(jù)均衡。接下來(lái)通過(guò)控制臺(tái),我們完成數(shù)據(jù)遷移。具體步驟如下:
1. 選擇Cluster
選擇 Cluster,選擇 ClickHouse 實(shí)例,點(diǎn)擊集群服務(wù),選擇 ClickHouse 組件,在"操作"下拉列表中,選擇數(shù)據(jù)遷移菜單項(xiàng)。選擇數(shù)據(jù)均衡模式。
2. 選擇遷移節(jié)點(diǎn)
在確定 Cluster 后,可以選擇數(shù)據(jù)遷出與遷入節(jié)點(diǎn)。
3. 選擇遷移數(shù)據(jù)表
在確定了遷移節(jié)點(diǎn)后,我們可以選擇待遷移的表。
4. 確認(rèn)信息
最后,提交任務(wù)。ClickHouse 就開(kāi)始數(shù)據(jù)遷移工作。在任務(wù)中心可以看到數(shù)據(jù)遷移進(jìn)度。
任務(wù)結(jié)束時(shí)候,也可以查看遷移任務(wù)詳情信息。
待數(shù)據(jù)遷移完成后,我們可以查看數(shù)據(jù)在兩個(gè)節(jié)點(diǎn)上數(shù)據(jù)分布情況。在集群節(jié)點(diǎn)上數(shù)據(jù)量情況如下:
可以看到,數(shù)據(jù)遷移完成后,數(shù)據(jù)條數(shù)和數(shù)據(jù)量是完全吻合的。
四、結(jié)語(yǔ)
云上數(shù)據(jù)遷移功能旨在解決 ClickHouse 彈性伸縮時(shí)數(shù)據(jù)遷移問(wèn)題。使用場(chǎng)景包括:
- 新擴(kuò)容節(jié)點(diǎn)后,使用數(shù)據(jù)遷移功能,遷移部分?jǐn)?shù)據(jù)至新節(jié)點(diǎn),讓數(shù)據(jù)在集群節(jié)點(diǎn)上趨于均衡;
- 縮容節(jié)點(diǎn)前,將待下線節(jié)點(diǎn)上的數(shù)據(jù)遷移到其他節(jié)點(diǎn),避免數(shù)據(jù)丟失。
數(shù)據(jù)遷移功能極大的緩解了集群版 ClickHouse 運(yùn)維壓力。需要注意的是,數(shù)據(jù)均衡任務(wù)運(yùn)行過(guò)程中,被遷移的表無(wú)法被業(yè)務(wù)訪問(wèn)。
總結(jié)
以上是生活随笔為你收集整理的vector自动扩容如何实现_腾讯云ClickHouse如何实现自动化的数据均衡?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端 验证码隐藏怎么实现_Python爬
- 下一篇: 如何用PPT编制方案 (2)PPT