自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉

云計(jì)算 云原生
本小節(jié)主要介紹了虛擬數(shù)倉概念的來源和實(shí)現(xiàn),重點(diǎn)分析了NDH Impala在虛擬數(shù)倉這塊的探索、思考和使用。目前虛擬數(shù)倉在網(wǎng)易互聯(lián)網(wǎng)業(yè)務(wù)以及網(wǎng)易數(shù)帆的商業(yè)化客戶集群上均有成功的應(yīng)用案例。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

本文主要介紹網(wǎng)易數(shù)帆NDH在Impala上實(shí)現(xiàn)的虛擬數(shù)倉特性,包括資源分組、水平擴(kuò)展、混合分組和分時(shí)復(fù)用等功能,可以靈活配置集群資源、均衡節(jié)點(diǎn)負(fù)載、提高查詢并發(fā),并充分利用節(jié)點(diǎn)資源。

對(duì)于高性能分析型數(shù)倉,除了需要有優(yōu)秀的執(zhí)行引擎能夠讓查詢盡快完成外,還需避免因?yàn)椴樵冮g的相互干擾導(dǎo)致查詢性能下降的問題,比如對(duì)計(jì)算和IO資源的競(jìng)爭(zhēng)等。上節(jié)提到Impala可以通過資源池來進(jìn)行計(jì)算資源的管理。但在使用時(shí)發(fā)現(xiàn)光有資源池還不夠,仍然會(huì)出現(xiàn)不同的資源池競(jìng)爭(zhēng)同一個(gè)計(jì)算節(jié)點(diǎn)上內(nèi)存資源等問題。

1、基本概念

“虛擬數(shù)倉”來源于Snowflake的“virtual warehouse”,簡(jiǎn)稱VW。虛擬數(shù)倉能夠按需進(jìn)行水平和垂直擴(kuò)縮容,是一種高效的資源調(diào)度方法,是存算分離設(shè)計(jì)架構(gòu)下,計(jì)算資源彈性伸縮非常好的驗(yàn)證案例。如下圖所示,該Snowflake集群有兩個(gè)虛擬數(shù)倉,分別服務(wù)于BI和ETL用戶。其中BI虛擬數(shù)倉為了應(yīng)對(duì)報(bào)表查詢的高低峰,采用了單元化的水平擴(kuò)縮容模式,ETL主要關(guān)注計(jì)算能力,采用了改變虛擬數(shù)倉規(guī)格的模式。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

NDH的Impala組件也具備類似的能力,在開始之前,先結(jié)合Impala的實(shí)際來介紹兩個(gè)基本概念,首先是社區(qū)版Impala已有的executor group(執(zhí)行組)。然后是為支持虛擬數(shù)倉而引入的node group(節(jié)點(diǎn)組)概念。

Executor group

下圖是CDP文檔中關(guān)于Impala執(zhí)行組的示意圖,執(zhí)行組是Impala進(jìn)行彈性伸縮的基本單位,用戶可以配置執(zhí)行組規(guī)格(XSMALL, SMALL, MEDIUM, or LARGE)。若啟用自動(dòng)伸縮,則CDP每次會(huì)按指定的規(guī)格擴(kuò)展或縮小Impala的executor節(jié)點(diǎn)個(gè)數(shù)。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

執(zhí)行組為Impala集群提供了水平擴(kuò)縮容的能力。但與Snowflake所述的虛擬數(shù)倉還是有不小的區(qū)別,從目前的介紹看,執(zhí)行組是對(duì)用戶透明的概念,用戶無法通過執(zhí)行組將Impala集群劃分為不同用途的計(jì)算單元,如前述的用于BI和ETL。因此,NDH Impala引入了node group(節(jié)點(diǎn)組)的概念。

Node group

NDH Impala集群的impalad節(jié)點(diǎn)可以被劃分成多個(gè)獨(dú)立分組,我們稱之為節(jié)點(diǎn)組。節(jié)點(diǎn)組可以僅有executor組成,也可以有coordinator節(jié)點(diǎn)。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

上圖Impala集群包含3個(gè)節(jié)點(diǎn)組,每個(gè)節(jié)點(diǎn)組的impalad中必須至少有一個(gè)executor節(jié)點(diǎn)。此外還有2個(gè)coordinator節(jié)點(diǎn)獨(dú)立于節(jié)點(diǎn)組之外。獨(dú)立的coordinator節(jié)點(diǎn)可以將請(qǐng)求路由到任一節(jié)點(diǎn)組中的executor,節(jié)點(diǎn)組中的coordinator只能將請(qǐng)求分發(fā)給本分組內(nèi)的executor節(jié)點(diǎn)執(zhí)行。根據(jù)查詢路由規(guī)則的差異,有兩種虛擬數(shù)倉實(shí)現(xiàn)方式。

2、實(shí)現(xiàn)方式

NDH Impala支持兩個(gè)虛擬數(shù)倉實(shí)現(xiàn),分別是基于zookeeper地址的靜態(tài)配置方案和基于會(huì)話(session)參數(shù)的動(dòng)態(tài)配置方案,下面分別展開介紹。

(1)靜態(tài)配置

該方案將不同節(jié)點(diǎn)組的coordinator節(jié)點(diǎn)注冊(cè)到不同的zookeeper地址上,Hive JDBC客戶端連接不同的zookeeper地址即可獲取到不同業(yè)務(wù)組的coordinator,從而進(jìn)行連接并下發(fā)SQL請(qǐng)求。此種方式中每個(gè)節(jié)點(diǎn)組都會(huì)擁有自己獨(dú)有的一到多個(gè)coordinator節(jié)點(diǎn),負(fù)責(zé)將SQL生成的執(zhí)行計(jì)劃下發(fā)給組內(nèi)的executor節(jié)點(diǎn)執(zhí)行。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

上圖所示集群有3個(gè)虛擬數(shù)倉:group 1,group 2和group 3。它們共用相同的statestored和catalogd,共用同一份數(shù)倉元數(shù)據(jù)。虛擬數(shù)倉間的impalad資源是物理隔離的,某個(gè)虛擬數(shù)倉的coordinator節(jié)點(diǎn)只會(huì)將查詢下發(fā)到組內(nèi)的executor節(jié)點(diǎn)。在生產(chǎn)環(huán)境中,可通過配置多個(gè)虛擬數(shù)倉來接收不同類型業(yè)務(wù)的查詢請(qǐng)求,以便不同業(yè)務(wù)的查詢?cè)谟?jì)算資源的使用上互相隔離,互不影響,圖中g(shù)roup 1用于進(jìn)行ad-hoc查詢,group 2用于有數(shù)BI報(bào)表,group 3用于有數(shù)BI自助取數(shù)。相比多集群方式,多虛擬數(shù)倉的方式所需要資源更少,配置更靈活。

(2)動(dòng)態(tài)路由

本方案在會(huì)話連接中增加一個(gè)query option參數(shù)request_group,通過set request_group=xxx語句,coordinator會(huì)自動(dòng)將查詢路由到指定分組上執(zhí)行。request_group默認(rèn)為default,對(duì)應(yīng)group_name的默認(rèn)值也為default。換言之,若不指定request_group,那么查詢會(huì)下發(fā)到默認(rèn)的default分組執(zhí)行。

在本方案中coordinator節(jié)點(diǎn)是公共的,僅對(duì)executor節(jié)點(diǎn)進(jìn)行分組,在實(shí)現(xiàn)上更類似Snowflake的虛擬數(shù)倉。如下圖所示,有2個(gè)公共的coordinator,3個(gè)分組,由于不存在default分組,可將默認(rèn)分組配置為grp1??梢酝ㄟ^參數(shù)動(dòng)態(tài)配置,相比基于zookeeper的方案更加靈活,用戶能夠根據(jù)需要自由地將查詢?cè)诓煌奶摂M數(shù)倉上切換。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

上述兩種方案均已實(shí)現(xiàn),由于NDH的生產(chǎn)環(huán)境一般通過Hive JDBC連接zookeeper來訪問Impala,前者的使用方法兼容性更好,目前線上主要使用以該方式部署虛擬數(shù)倉。本小節(jié)接下來介紹的虛擬數(shù)倉進(jìn)階特性也主要圍繞前者展開。

3、主要特性

(1)水平擴(kuò)展

若虛擬數(shù)倉的單個(gè)節(jié)點(diǎn)組資源和并發(fā)數(shù)已經(jīng)達(dá)到瓶頸,單純?cè)诮M內(nèi)增加節(jié)點(diǎn)無法有效提升查詢并發(fā)數(shù),此時(shí)可以新增一個(gè)規(guī)格相同或相近的節(jié)點(diǎn)組加入該虛擬數(shù)倉中,需將新節(jié)點(diǎn)組中coordinator的zookeeper地址配置成與原節(jié)點(diǎn)組相同。借助Hive JDBC在選擇zookeeper下coordinator地址時(shí)的隨機(jī)性特點(diǎn),可將查詢負(fù)載均衡到新舊節(jié)點(diǎn)組上。這種方式可以接近線性地提升集群的查詢并發(fā)數(shù)。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

上圖所示Impala集群有2個(gè)虛擬數(shù)倉,對(duì)應(yīng)的節(jié)點(diǎn)組分別為group1和group3,承接的業(yè)務(wù)分別是業(yè)務(wù)的有數(shù)BI報(bào)表和ABTest場(chǎng)景。假設(shè)group1為原分組,有3個(gè)impalad節(jié)點(diǎn)(1個(gè)coordinator,2個(gè)executor)。新增分組group2,也是3個(gè)impalad節(jié)點(diǎn),使用與group1相同的配置,即可起到水平擴(kuò)展的效果。

(2)透明伸縮

NDH Impala可根據(jù)各虛擬數(shù)倉的負(fù)載情況,在線增加或減少虛擬數(shù)倉節(jié)點(diǎn)組中的impalad節(jié)點(diǎn)數(shù),從而實(shí)現(xiàn)分組間的資源動(dòng)態(tài)伸縮。通過Impala提供的graceful shutdown方式下線節(jié)點(diǎn)組中impalad進(jìn)程時(shí),會(huì)先禁止新的查詢請(qǐng)求發(fā)送到該impalad節(jié)點(diǎn)上,并等待其上正在執(zhí)行的查詢片段(fragment)完成后再關(guān)閉。因此不會(huì)導(dǎo)致其上正在執(zhí)行的查詢異常終止,做到對(duì)用戶無感。在生產(chǎn)環(huán)境中,配置了多個(gè)虛擬數(shù)倉的NDH Impala集群,可通過分析歷史查詢規(guī)律并結(jié)合分組中impalad節(jié)點(diǎn)的系統(tǒng)負(fù)載情況,在虛擬數(shù)倉間動(dòng)態(tài)增減節(jié)點(diǎn)數(shù),以求更充分得利用各節(jié)點(diǎn)資源。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

舉網(wǎng)易云音樂為例,有數(shù)BI自助取數(shù)(easyfetch)的查詢一般發(fā)生在工作時(shí)間,有數(shù)BI報(bào)表需要在用戶上班前進(jìn)行大量報(bào)表結(jié)果預(yù)加載操作(提前下發(fā)報(bào)表查詢SQL并緩存查詢結(jié)果從而提升報(bào)表查看體驗(yàn))。我們可將easyfetch和BI報(bào)表兩種場(chǎng)景配置為同一個(gè)NDH Impala集群的兩個(gè)虛擬數(shù)倉,在上班前,將easyfetch虛擬數(shù)倉的大部分impalad節(jié)點(diǎn)挪到BI報(bào)表虛擬數(shù)倉上,這樣可以大大提高報(bào)表的預(yù)加載效率。

當(dāng)然,透明伸縮不僅僅適用在虛擬數(shù)倉之間。對(duì)于云上環(huán)境,通過k8s或類似調(diào)度機(jī)制,在負(fù)載高峰時(shí)可以便捷地申請(qǐng)容器或虛擬機(jī)資源,快速補(bǔ)充到線上。待高峰過后,再將所增加的資源釋放給云廠商。

4、進(jìn)階功能

相比Impala資源隊(duì)列,虛擬數(shù)倉的節(jié)點(diǎn)組中coordinator節(jié)點(diǎn)絕對(duì)不會(huì)使用到其他組的計(jì)算資源(executor),資源隔離更加徹底,使得不同業(yè)務(wù)模塊的查詢性能不會(huì)相互影響。但不同虛擬數(shù)倉所屬的業(yè)務(wù)會(huì)存在負(fù)載差異,可能導(dǎo)致資源利用不充分。為了提高空閑節(jié)點(diǎn)組的資源利用率,對(duì)虛擬數(shù)倉特性做了進(jìn)一步增強(qiáng),引入混合分組、分時(shí)復(fù)用等功能。

(1)混合分組

混合分組就是讓一個(gè)executor節(jié)點(diǎn)同時(shí)在2個(gè)或以上的節(jié)點(diǎn)組中,如下圖所示。左子圖為普通模式,假設(shè)NDH Impala集群分為有數(shù)BI報(bào)表和Ad-Hoc查詢2個(gè)虛擬數(shù)倉,Ad-Hoc查詢有明顯的時(shí)間性,查詢集中在工作時(shí)間,且查詢的并發(fā)度較低。通過混合分組,可將虛擬數(shù)倉部署方式改造為右子圖的模式。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

圖中,n1~n2為group1節(jié)點(diǎn)組coordinator節(jié)點(diǎn),其會(huì)注冊(cè)到zookeeper路徑y(tǒng)oudata上,Hive JDBC客戶端從該路徑獲取任意coordinator節(jié)點(diǎn)向其提交查詢,coordinator將查詢進(jìn)行解析,優(yōu)化并指定分布式執(zhí)行計(jì)劃,最終下發(fā)給n3n7執(zhí)行。n6n7同時(shí)還是group4的executor節(jié)點(diǎn),group4的coordinator為n8n9,其會(huì)接收從zookeeper路徑Ad-Hoc進(jìn)入的查詢,指定分布式執(zhí)行計(jì)劃,并會(huì)發(fā)送到n6n8上。

(2)分時(shí)復(fù)用

分時(shí)復(fù)用是另一個(gè)能夠提高資源利用率的進(jìn)階功能。通過在特定的時(shí)間段自動(dòng)配置集群的分組資源,緩解某些高負(fù)載分組的查詢壓力,提升用戶體驗(yàn)。

基于Impala的高性能數(shù)倉建設(shè)實(shí)踐之虛擬數(shù)倉-開源基礎(chǔ)軟件社區(qū)

在實(shí)現(xiàn)上,支持將同一個(gè)coordinator注冊(cè)到多個(gè)zookeeper地址下,且可以配置注冊(cè)到每個(gè)地址的有效時(shí)間,如上圖所示,可以每天晚上八點(diǎn)到早上八點(diǎn)將Ad-Hoc虛擬數(shù)倉的n8和n9兩個(gè)coordinator(或其中一個(gè))注冊(cè)到BI報(bào)表虛擬數(shù)倉相同的zookeeper地址下,分?jǐn)侭I報(bào)表的查詢負(fù)載。

與混合分組相比,分時(shí)復(fù)用功能僅適合在規(guī)格相似的節(jié)點(diǎn)組之間使用,確保不同分組上的查詢性能沒有明顯的差距。

(3)基于負(fù)載的節(jié)點(diǎn)選擇

executor節(jié)點(diǎn)會(huì)出現(xiàn)多種原因?qū)е掠?jì)算資源使用不均衡的問題,比如數(shù)據(jù)傾斜導(dǎo)致某些executor節(jié)點(diǎn)需要消耗更多計(jì)算資源掃描和處理數(shù)據(jù),或引入混合分組特性導(dǎo)致某些節(jié)點(diǎn)組上節(jié)點(diǎn)負(fù)載過高等等。

針對(duì)該問題,NDH Impala進(jìn)行了兩個(gè)優(yōu)化。第一個(gè)是支持基于executor節(jié)點(diǎn)負(fù)載的查詢分布式執(zhí)行,實(shí)現(xiàn)方法為在為查詢SQL確定分布式執(zhí)行計(jì)劃時(shí),考慮executor節(jié)點(diǎn)當(dāng)前可用的計(jì)算資源情況,剔除可用資源較少的executor節(jié)點(diǎn);第二個(gè)是存在多隊(duì)列時(shí),限制同個(gè)隊(duì)列上的查詢請(qǐng)求在一個(gè)executor上的資源使用總量,避免executor資源被某個(gè)隊(duì)列獨(dú)占。

5、小結(jié)

本小節(jié)主要介紹了虛擬數(shù)倉概念的來源和實(shí)現(xiàn),重點(diǎn)分析了NDH Impala在虛擬數(shù)倉這塊的探索、思考和使用。目前虛擬數(shù)倉在網(wǎng)易互聯(lián)網(wǎng)業(yè)務(wù)以及網(wǎng)易數(shù)帆的商業(yè)化客戶集群上均有成功的應(yīng)用案例。

筆者認(rèn)為,虛擬數(shù)倉應(yīng)該是新一代分析性數(shù)倉必備的一個(gè)能力,它能夠剝離復(fù)雜多樣的業(yè)務(wù)負(fù)載,充分發(fā)揮執(zhí)行引擎自身的能力。最后需要指出的是,虛擬數(shù)倉是一種云原生的特性,計(jì)算資源能夠靈活伸縮的環(huán)境能夠最大化其價(jià)值。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-09-15 09:32:42

數(shù)據(jù)倉處理

2022-12-08 10:16:58

數(shù)據(jù)模型

2024-03-06 14:48:54

云原生

2022-03-01 17:16:16

數(shù)倉建模ID Mapping

2022-02-18 09:02:04

數(shù)據(jù)倉庫治理

2022-12-06 17:52:57

離線數(shù)倉治理

2023-06-28 16:10:09

Dataleap數(shù)倉建設(shè)

2022-07-26 15:38:58

數(shù)據(jù)倉數(shù)據(jù)治理數(shù)據(jù)團(tuán)隊(duì)

2021-01-31 23:54:23

數(shù)倉模型

2021-06-11 07:26:16

數(shù)據(jù)倉庫機(jī)器學(xué)習(xí)

2018-10-19 14:16:09

Flink數(shù)據(jù)倉庫數(shù)據(jù)系統(tǒng)

2021-12-02 08:41:30

數(shù)倉建模設(shè)計(jì)

2025-04-09 10:24:36

2023-08-15 08:12:12

數(shù)倉建模數(shù)倉建設(shè)

2021-01-04 05:42:48

數(shù)倉模型設(shè)計(jì)

2023-01-03 17:43:39

網(wǎng)易郵箱數(shù)倉

2024-11-21 16:46:12

2024-08-20 08:39:41

大數(shù)據(jù)天穹數(shù)倉數(shù)據(jù)治理

2021-08-11 07:53:22

數(shù)倉維度建模

2023-02-20 07:33:47

Teradata數(shù)據(jù)倉庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)