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

如何用好云原生數(shù)據(jù)湖?

開發(fā) 開發(fā)工具 云原生 數(shù)據(jù)湖
阿里云從2018年起就開始布局?jǐn)?shù)據(jù)湖,推出了云原生數(shù)據(jù)湖分析Data Lake Analytics(DLA),從數(shù)據(jù)湖管理(幫助客戶高效管理構(gòu)建數(shù)據(jù)湖),Serverless Spark(提供高性價比的大規(guī)模計(jì)算),Serverless SQL(提供高性價比的在線交互式分析)三個方面幫助客戶挖掘數(shù)據(jù)價值。

 ????數(shù)據(jù)湖可以很好地幫助企業(yè)應(yīng)對當(dāng)前數(shù)據(jù)場景越來越多、數(shù)據(jù)結(jié)構(gòu)越來越復(fù)雜、數(shù)據(jù)處理需求越來越多樣化的問題。阿里云從2018年起就開始布局?jǐn)?shù)據(jù)湖,推出了云原生數(shù)據(jù)湖分析Data Lake Analytics(DLA),從數(shù)據(jù)湖管理(幫助客戶高效管理構(gòu)建數(shù)據(jù)湖),Serverless Spark(提供高性價比的大規(guī)模計(jì)算),Serverless SQL(提供高性價比的在線交互式分析)三個方面幫助客戶挖掘數(shù)據(jù)價值。本文分享相關(guān)技術(shù)挑戰(zhàn)及解決方案。

一 數(shù)據(jù)湖的機(jī)遇與挑戰(zhàn)

數(shù)據(jù)湖可以很好地幫助企業(yè)應(yīng)對當(dāng)前數(shù)據(jù)場景越來越多、數(shù)據(jù)結(jié)構(gòu)越來越復(fù)雜、數(shù)據(jù)處理的需求越來越多樣化的問題。Gartner 2020年發(fā)布的報告顯示目前已經(jīng)有39%的用戶在使用數(shù)據(jù)湖,34%的用戶考慮在1年內(nèi)使用數(shù)據(jù)湖。

從2018年起,阿里云就開始布局?jǐn)?shù)據(jù)湖,推出了云原生數(shù)據(jù)湖分析Data Lake Analytics(簡稱:DLA)產(chǎn)品,結(jié)合對象存儲OSS一起,從彈性擴(kuò)展、按需付費(fèi)、服務(wù)化等方面打造有競爭力的產(chǎn)品。通過采用存儲計(jì)算分離模式,存儲和計(jì)算完全按需付費(fèi),用戶只需要為實(shí)際產(chǎn)生價值的計(jì)算買單;DLA深度定制云原生彈性能力,實(shí)現(xiàn)作業(yè)級彈性,一分鐘可彈300個節(jié)點(diǎn)。云原生數(shù)據(jù)湖分析DLA從成本、彈性、交付能力方面相對傳統(tǒng)數(shù)據(jù)分析方案,獲得了較大的提升。

??

??

 

在云上也已經(jīng)有數(shù)千家企業(yè)使用數(shù)據(jù)湖服務(wù)滿足數(shù)據(jù)應(yīng)用,如友盟+ 的U-DOP數(shù)據(jù)開放平臺根據(jù)友盟+多年沉淀的大數(shù)據(jù)領(lǐng)域經(jīng)驗(yàn),形成了以APP、WEB、小程序、廣告營銷、社會化分享和推送為基礎(chǔ)的多端主題數(shù)據(jù)的采集和處理能力,為客戶形成規(guī)范化的多端數(shù)據(jù)資產(chǎn)。尤其是利用了數(shù)據(jù)湖的彈性能力,應(yīng)對了雙十一峰值期間DAU暴漲的業(yè)務(wù)變化,例如,通過實(shí)施分析搜索關(guān)鍵詞的變化,改變首頁廣告推薦信息,對活躍用戶和下單用戶分不同渠道的分析梳理,及時調(diào)整優(yōu)惠策略,以吸引更多的客戶新購及復(fù)購等。

數(shù)據(jù)庫與大數(shù)據(jù)一體化趨勢在加強(qiáng),傳統(tǒng)的數(shù)據(jù)庫使用者與DBA,也可以使用及維護(hù)大數(shù)據(jù)系統(tǒng),一體化解決大數(shù)據(jù)的問題。具體在DLA體現(xiàn)在數(shù)據(jù)庫的數(shù)據(jù)無縫與大數(shù)據(jù)結(jié)合,比如DLA提供的一鍵入湖建倉的功能;DLA Serverless SQL兼容MySQL協(xié)議及部分語法。

DLA Serverless產(chǎn)品形態(tài),開發(fā)者只需要使用平臺接口即可,如使用DLA SQL的JDBC接口提交SQL,使用DLA Spark的OpenAPI提交Spark作業(yè)。開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯本身,不需要關(guān)心平臺的復(fù)雜邏輯。原來使用開源組件遇到的很多痛點(diǎn)都可以迎刃而解:

入門門檻高

Hadoop生態(tài)往往需要多個組件同時使用,比如Yarn、HDFS、Spark、Hive、Kerberos、Zookeeper等等。開發(fā)者需要了解所有組件,因?yàn)殚_發(fā)過程中這些組件往往都會接觸到。

開發(fā)維護(hù)困難

開發(fā)者在開發(fā)過程中會遇到各個組件帶來的使用問題,開發(fā)者需要了解所有這些組件以應(yīng)對這些問題。這些加重了開發(fā)者的使用負(fù)擔(dān)。

穩(wěn)定性難以保障

開源組件本身都必須經(jīng)過細(xì)致的調(diào)參并加上合適的硬件資源配置,才能良好運(yùn)行,并且需要修復(fù)不少BUG,出現(xiàn)問題沒有兜底。

缺乏適應(yīng)云的性能優(yōu)化

云上的OSS、PolarDB等組件都是云原生的組件,開源組件對這部分的改造適應(yīng)不足,沒有充分挖掘出更高的性能。

DLA從數(shù)據(jù)湖管理(幫助客戶高效管理構(gòu)建數(shù)據(jù)湖),Serverless Spark(提供高性價比的大規(guī)模計(jì)算),Serverless SQL(提供高性價比的在線交互式分析)三個方面幫助客戶挖掘數(shù)據(jù)價值。整體架構(gòu)如下所示。接下來,本文將從這三個方面,分別講述相關(guān)技術(shù)挑戰(zhàn)以及解決方案。

??

??

 

二 如何管理與構(gòu)建數(shù)據(jù)湖?

數(shù)據(jù)湖中數(shù)據(jù)難以管理主要體現(xiàn)在兩個方面:

已經(jīng)在數(shù)據(jù)湖存儲OSS上面的數(shù)據(jù)如何高效的構(gòu)建元數(shù)據(jù)。

非OSS數(shù)據(jù)如何高效的入湖建倉。

數(shù)據(jù)湖管理相關(guān)的主要功能包括元數(shù)據(jù)管理、元數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)庫入湖建倉、實(shí)時數(shù)據(jù)入湖。接下來重點(diǎn)介紹“海量文件元數(shù)據(jù)自動構(gòu)建技術(shù)”和“入湖建倉數(shù)據(jù)管理技術(shù)”兩個關(guān)鍵技術(shù)。

1 海量文件元數(shù)據(jù)自動構(gòu)建技術(shù)

當(dāng)以O(shè)SS作為數(shù)據(jù)湖存儲,存儲的數(shù)據(jù)文件具有以下幾個特性:

  • 格式豐富:包括CSV、Text、JSON、Parquet、Orc、Avro、hudi、Delta Lake等格式,其中CSV、Text又包含多種自定義的分隔符等。
  • 文件數(shù)在百萬級別:OSS的擴(kuò)展性及性價比較好,用戶存儲在OSS的文件會是百萬級別。
  • 文件動態(tài)上傳:存儲在OSS上面數(shù)據(jù)文件具有動態(tài)持續(xù)上傳的特性,新的文件如何快速增量修改元數(shù)據(jù)。

為了高效的為OSS上面的海量數(shù)據(jù)構(gòu)建元數(shù)據(jù),阿里云DLA提出并實(shí)現(xiàn)了“海量文件元數(shù)據(jù)自動構(gòu)建技術(shù)”。具體技術(shù)如下圖所示,核心解決了:萬表萬分區(qū)識別、增量感知更新元數(shù)據(jù)兩個問題。

??

??

 

萬表萬分區(qū)識別

用戶OSS上面的文件數(shù)量會到百萬級別,這些文件不僅格式不同,比如JSON、CSV、Text等,而且同一種格式由于業(yè)務(wù)屬性不同具體的Schema字段也不一樣。該技術(shù)通過文件Schema識別器搭配文件分類器支持自動生成萬表萬分區(qū)。其中文件Schema識別器比如針對JSON單文件識別到0.15s、CSV單文件識別0.2s,搭配可插拔的智能采樣策略及分布式策略,百萬文件的Schema識別可以到分鐘級別。文件分類器通過樹的結(jié)構(gòu)進(jìn)行聚合、剪枝、壓縮,百萬級別文件的分類識別需要290ms左右。

增量感知更新

戶會往OSS上面持續(xù)不斷的上傳文件,元數(shù)據(jù)自動構(gòu)建既要把屬于已經(jīng)創(chuàng)建表的文件Schema變化更新到已有的表,同時對獨(dú)立新增的文件創(chuàng)建新的表。這里一方面“文件Schema識別器”通過獲取OSS上面文件的增加、刪除變化對變化的文件進(jìn)行識別,同時“文件分類器”對新增的文件Schema和已經(jīng)創(chuàng)建的表進(jìn)行對別生成變化策略,目前支持增加分區(qū)、增加字段、字段不更改、不感知文件刪除4種策略,后續(xù)可以持續(xù)添加新的策略。

2 入湖建倉數(shù)據(jù)組織技術(shù)

把DataBase及消息日志服務(wù)的數(shù)據(jù)統(tǒng)一存儲到數(shù)據(jù)湖存儲OSS進(jìn)行管理,能夠滿足計(jì)算加速、構(gòu)建數(shù)倉歸檔、冷熱分離等業(yè)務(wù)需求。DLA的入湖建倉數(shù)據(jù)組織技術(shù)包括三種數(shù)據(jù)組織管理模式:鏡像模式、分區(qū)模式、增量模式,三種模式能夠搭配友好支持這些業(yè)務(wù)場景。

??

??

 

鏡像模式

每次全量同步源庫一個Database下面所有表的數(shù)據(jù)到數(shù)據(jù)湖存儲OSS之上,同步期間可以做到源庫負(fù)載增加控制在10%以內(nèi)。這里主要使用了全局統(tǒng)一數(shù)據(jù)分片調(diào)度算法。保持?jǐn)?shù)據(jù)湖的數(shù)據(jù)和源庫一致。

分區(qū)模式

面對歸檔場景支持按天全量及增量同步源庫數(shù)據(jù)到數(shù)據(jù)湖,并以時間分區(qū)的方式進(jìn)行組織,方便歸檔管理。這種模式能夠做到小時級別的時間延遲。

增量模式

這種模式通過行列混存技術(shù)、commitlog及index管理技術(shù),可以做到T+10min的數(shù)據(jù)入湖。其中通過delta的增量文件及異步compaction技術(shù)解決了小文件問題;通過delta增量文件及索引技術(shù)可以支持Database場景更新、刪除日志的增量實(shí)時寫入;通過commitlog的方式記錄分區(qū)文件的映射,解決百萬分區(qū)在傳統(tǒng)Catalog管理模式性能慢的問題。

三 云原生數(shù)據(jù)湖平臺需打通云基礎(chǔ)設(shè)施

DLA整體是一個多租戶的架構(gòu),分Region部署,每個Region的用戶共享一套控制邏輯。虛擬集群VC是邏輯的隔離單元。平臺支持 Serverless Spark、Serverless SQL等引擎,打造云原生服務(wù)。

??

??

 

如上圖所示,平臺主要面臨的挑戰(zhàn)有:資源高效供給、安全防護(hù)、訪問數(shù)據(jù)源的帶寬保障。

1 資源高效供給

云原生平臺基于阿里云的底座ECS&ACK&ECI,與阿里云IAAS資源大池打通,本Region跨可用區(qū)資源調(diào)度,保障資源的供給。支持1分鐘彈300個節(jié)點(diǎn),單客戶在大Region 5w計(jì)算節(jié)點(diǎn)資源的保障。

2 安全防護(hù)

用戶可以寫任意的代碼平臺內(nèi)運(yùn)行,可能是故意惡性的攻擊行為,如果沒有任何保護(hù),則平臺面臨安全危險。在安全方面,我們通過如下技術(shù)保障安全性:

  • 一次密鑰:每個Job任務(wù)都會去TokenServer申請臨時的Token,Job失效Token會過期,如果存在攻擊行為,則平臺會直接讓Token過期,則訪問Meta等服務(wù)會被拒絕。
  • 預(yù)防DDOS&注入攻擊:所有的訪問平臺服務(wù)的請求,都會對接到安全防護(hù)中心,安全防護(hù)中心檢測有任何攻擊或者注入行為,直接關(guān)閉網(wǎng)絡(luò)端口。
  • 計(jì)算容器隔離:計(jì)算節(jié)點(diǎn)間采用阿里云自研的安全容器,容器本身可以實(shí)現(xiàn)VM相同的安全隔離級別。
  • 安全白名單:用戶互相之間的網(wǎng)絡(luò)是完全隔離的。
  • ENI虛擬網(wǎng)卡:打通VPC需要配置自己賬號下的安全組和虛擬交換機(jī)(VSwitch),配置之后結(jié)算節(jié)點(diǎn)容器會分配用戶VPC對應(yīng)VSwitch網(wǎng)段的的IP,并掛載用戶的安全組。

3 高吞吐網(wǎng)絡(luò)帶寬

訪問OSS服務(wù)是通過高吞吐的帶寬服務(wù)。

使用ENI技術(shù)訪問自持VPC,跟在自持VPC內(nèi)ECS上部署計(jì)算引擎訪問自持VPC內(nèi)數(shù)據(jù)一樣,帶寬同樣是VPC內(nèi)網(wǎng)帶寬。

四 Serverless Spark服務(wù)的技術(shù)挑戰(zhàn)

Apache Spark是目前社區(qū)最為流行的開源引擎,不但具備流、SQL、機(jī)器學(xué)習(xí)以及圖等計(jì)算能力,也可以連接豐富的數(shù)據(jù)源。但是,面對數(shù)據(jù)湖場景,傳統(tǒng)集群版Spark方案,除了面臨前面提到的數(shù)據(jù)管理困難、運(yùn)維成本、計(jì)算資源彈性能力不足、企業(yè)級能力弱等問題外,還面臨訪問OSS的性能不佳、復(fù)雜作業(yè)難以調(diào)試等問題。

借助于第二章節(jié)提到的數(shù)據(jù)湖管理機(jī)制,可以很好地解決數(shù)據(jù)管理難題。借助于第三章節(jié)提到的多租戶安全平臺,DLA Spark實(shí)現(xiàn)了全新的云原生Serverless產(chǎn)品形態(tài),很好地解決了彈性問題、運(yùn)維成本問題以及企業(yè)級需求問題。本章節(jié)對Spark訪問OSS的性能優(yōu)化以多租戶UI服務(wù)做進(jìn)一步展開。

1 Spark訪問OSS優(yōu)化

社區(qū)版本的問題

開源版Spark訪問OSS數(shù)據(jù)默認(rèn)采用Hadoop FileFormat接口直接對接OSSFileSystem實(shí)現(xiàn)。該方法在實(shí)踐中發(fā)現(xiàn)存在性能差,一致性難以保證等問題。

(1)Spark訪問OSS性能差

核心原因在于OSS KV模型跟HDFS文件樹模型的差異。FileFormat算法最初設(shè)計(jì)是基于HDFS文件系統(tǒng),然而對象存儲如OSS,為了解決擴(kuò)展性,本質(zhì)上采用的是KV模型。KV模型相對于HDFS文件系統(tǒng)差異較大,比如RenameDirectory接口,在HDFS中只是指針操作,但在KV中,需要將所有子文件和目錄的KV執(zhí)行Rename,性能開銷很大,并且保證不了原子性。Hadoop FileOutputFormat在寫入數(shù)據(jù)的時候先寫到臨時目錄,最后寫入最終目錄,臨時目錄到最終目錄的過程中需要做文件樹合并,合并過程中有大量Rename操作。

(2)一致性難保證

FileFormat v1算法中,合并文件樹操作全部在AppMaster單點(diǎn)執(zhí)行,效率非常低,尤其是動態(tài)分區(qū)場景。為了解決AppMaster單點(diǎn),社區(qū)提供了算法2,其核心思路是將合并過程并行到Task中執(zhí)行,在性能上會有一定的提高,但是,如果Job執(zhí)行失敗,部分成功的Task會將數(shù)據(jù)寫入最終數(shù)據(jù)目錄,導(dǎo)致臟數(shù)據(jù)問題。

Spark OSS訪問優(yōu)化

??

??

 

(1)基于MultipartUpload的FileOutputFormat實(shí)現(xiàn)

針對Spark訪問OSS的特點(diǎn),我們?nèi)聦?shí)現(xiàn)了Hadoop FileOutputFormat接口,如上圖所示。算法的改進(jìn)重點(diǎn)在優(yōu)化合并操作,合并的核心是解決文件何時可見的問題。OSS提供MultipartUpload接口,也就是斷點(diǎn)續(xù)傳功能,文件可以分片上傳,上傳沒有結(jié)束,分片文件是不可見的。借助該特性,我們可以讓Task直接將數(shù)據(jù)寫入到最終目錄,只有作業(yè)成功才讓文件最終可見,該方法不用先寫入臨時目錄,也就大大減少了元數(shù)據(jù)的操作。對于執(zhí)行失敗的Task寫入的臨時分片,我們在作業(yè)結(jié)束時,執(zhí)行Abort操作,就可以將其刪除,這也就降低了空間占用。

針對Spark典型ETL Benchmark Terasort,在1TB輸入數(shù)據(jù)量的情況下,DLA FileOutputFormat執(zhí)行時間縮短62%,性能提升163%。而針對動態(tài)分區(qū)場景,社區(qū)算法1運(yùn)行失敗,算法2可以執(zhí)行成功,DLA FileOutputFormat算法相比算法2性能還要進(jìn)一步提升124%。

(2)OSS元數(shù)據(jù)Cache

Spark讀取OSS的過程中,在ResolveRelation階段,Spark會遍歷OSS的目錄,解析表結(jié)構(gòu)和分區(qū)結(jié)構(gòu),以及解析Schema,該過程中同樣會有大量元數(shù)據(jù)操作,并且同一個OSS 對象的元數(shù)據(jù)會被訪問多次。針對該問題,我們實(shí)現(xiàn)了對OSS元數(shù)據(jù)的緩存,第一次訪問到的OSS對象元數(shù)據(jù)就會被緩存到本地,后續(xù)如果訪問該對象直接讀取本地緩存。這種方式可以最大限度降低對OSS元數(shù)據(jù)的訪問。Cache機(jī)制可以讓ResolveRelation有1倍左右的性能提升,針對典型的Spark查詢場景,該機(jī)制整體可以提升60%的性能。

2 多租戶UI服務(wù)

UI服務(wù)對于開發(fā)者來說至關(guān)重要,開發(fā)人員依賴UI服務(wù)進(jìn)行作業(yè)調(diào)試,以及生產(chǎn)作業(yè)的問題排查。好的UI服務(wù)可以很好地加速研發(fā)效率。

HistoryServer的痛點(diǎn)

Spark社區(qū)提供HistoryServer提供對Spark歷史作業(yè)的UI和日志服務(wù),在實(shí)際應(yīng)用中遇到諸多痛點(diǎn),典型如下:

(1)Eventlog空間開銷大

HistoryServer依賴Spark引擎將運(yùn)行中的Event信息全部記錄到FileSystem中,然后后臺回放并繪出UI頁面。對于復(fù)雜作業(yè)和長作業(yè)Eventlog量較大,可以達(dá)到百GB甚至TB級別。

(2)復(fù)雜作業(yè)和長作業(yè)不支持

復(fù)雜作業(yè)或者長作業(yè)的Eventlog很大,HistoryServer會解析失敗,甚至OOM。再加上空間開銷大的原因,用戶一般都只能關(guān)閉Eventlog。

(3)Replay效率差,延遲高

HistoryServer采用后臺Replay Eventlog的方式還原Spark UI,相當(dāng)于把Spark引擎的事件全部重放一遍,開銷大,會有延遲。特別是作業(yè)較多或者較復(fù)雜的情況下,延遲可達(dá)分鐘甚至十分鐘級別。

DLA多租戶SparkUI

??

??

 

SparkUI服務(wù)是DLA平臺自研的多租戶UI服務(wù),針對社區(qū)方案做了深度優(yōu)化:

(1)去Eventlog

DLA Spark去掉了Eventlog依賴,在作業(yè)結(jié)束的時候,Spark Driver只是dump UI的Meta到OSS,保存作業(yè)結(jié)束前的頁面元信息。這部分信息只是相對于Eventlog來說,會大大減少,即使非常復(fù)雜的作業(yè)也只有MB級別。UiServer讀取OSS上的UI Meta,將其反序列化出來即可展示SparkUI頁面。

(2)UIServer水平擴(kuò)展

UIServer主要負(fù)責(zé)解析歷史UI Meta和提供Stderr和Stdout日志服務(wù),是輕量化,無狀態(tài)的,可以實(shí)現(xiàn)水平擴(kuò)展,進(jìn)而支持萬級別客戶同時在線服務(wù)。UIServer URL采用加密token作為參數(shù),token代表的用戶身份,作業(yè)id,UIServer據(jù)此實(shí)現(xiàn)多租戶服務(wù)化。

(3)本地日志自動滾動

對于長作業(yè)而言,Stderr或者Stdout信息會隨著時間增加累積,最終甚至可能打爆磁盤。DLA Spark安全容器內(nèi)置后臺進(jìn)程,實(shí)現(xiàn)日志滾動,保存最有價值的最近一段時間的日志。

五 Serverless SQL服務(wù)的技術(shù)挑戰(zhàn)

DLA Serverless SQL是基于目前托管于Linux基金會之下的PrestoDB打造的云原生數(shù)據(jù)湖引擎,Alibaba同時也是Presto基金會成員之一,一直在貢獻(xiàn)優(yōu)化Presto。PrestoDB引擎本身具有優(yōu)秀的特性:

  • 全內(nèi)存計(jì)算帶來的極致速度。
  • 支持完整SQL語義帶來的強(qiáng)大表達(dá)力。
  • 易用的插件機(jī)制使得我們可以對任何數(shù)據(jù)源進(jìn)行關(guān)聯(lián)查詢。
  • 強(qiáng)大的社區(qū)使得我們使用之后沒有后顧之憂。

不過社區(qū)PrestoDB是單租戶的一個引擎,它假定你是在一個公司內(nèi)部使用,因此算力隔離、高可用等等方面沒有過多投入,這使得要直接使用它來作為云原生服務(wù)的引擎存在幾個問題:

  • 一個用戶如果提交大量大查詢將可能占用集群所有資源,導(dǎo)致其它用戶無法使用。
  • 單Coordinator使得整個服務(wù)的可用性無法得到保證。

我們做了一系列的優(yōu)化、改造使得它可以云原生的形態(tài)服務(wù)所有的用戶,今天著重介紹多租戶隔離技術(shù)以及多Coordinator兩個主要的特性。

首先我們看一下DLA Serverless SQL的整體架構(gòu):

??

??

 

我們在核心的PrestoDB集群周邊建設(shè)了諸如接入層、統(tǒng)一元數(shù)據(jù)等等服務(wù)來使得用戶可以用得穩(wěn)定、用得便利,下面我們將在多租戶隔離技術(shù)和多Coordinator技術(shù)的介紹中詳細(xì)剖析。

1 多租戶隔離技術(shù)

PrestoDB原生是有資源組的支持,它可以支持在不同資源組間做一定程度的CPU、內(nèi)存的限制,但是它有一些問題使得我們無法基于它來實(shí)現(xiàn)計(jì)算力的隔離:

  • 全局調(diào)度層面:即使一個租戶使用了過多的計(jì)算力資源也不會及時被懲罰,只有新查詢會被Block。
  • Worker調(diào)度層面:所有租戶的Split是在同一個隊(duì)列里面進(jìn)行調(diào)度,一個租戶如果有過多Split會影響其它租戶。

我們的計(jì)算力多租戶方案如下:

??

??

 

我們在集群中引入了一個ResourceManager的模塊用于從所有的Coordinator收集所有租戶的資源使用信息,ResourceManager把收集到的資源使用信息跟我們預(yù)設(shè)的計(jì)算力的閾值進(jìn)行對比,計(jì)算出哪些租戶應(yīng)該被懲罰,然后把這個懲罰信息通知到所有的Worker。Worker在進(jìn)行調(diào)度的時候會參照ResourceManager通知過來的懲罰信息決定哪些租戶的查詢得到調(diào)度,哪些租戶的查詢不進(jìn)行調(diào)度。這樣不同的租戶之間算力就會得到隔離,我們測試了如果有一個租戶過量使用資源,它會在最長1.3秒之內(nèi)得到懲罰,從而釋放資源給其它租戶,而社區(qū)默認(rèn)版本的“懲罰”要等到租戶所有的查詢執(zhí)行完成才會到來。只有元數(shù)據(jù)和計(jì)算力得到隔離,我們才能放心用一個集群來服務(wù)我們所有的用戶。

2 Multi-Coordinator技術(shù)

社區(qū)版本的Presto里面,Coordinator是一個單點(diǎn),它會帶來兩個方面的問題:

  • 可用性隱患: 一旦Coordinator宕機(jī)、整個集群將不可用達(dá)5到10分鐘。
  • 無法實(shí)現(xiàn)無縫升級,升級過程中影響所有用戶的查詢使用。

我們采取了如下的架構(gòu)方案:

??

??

 

首先我們在Presto的Coordinator之上放置了一個新的FrontNode模塊,讓用戶連接到這個模塊,而不是直接連接到我們底層的Coordinator,這樣我們底層到底有多少個Coordinator,現(xiàn)在哪個Coordinator在給用戶提供服務(wù)都對用戶完全透明,這樣架構(gòu)上就比較靈活,從而方便我們在底層對Coordinator進(jìn)行擴(kuò)展。

FrontNode在接收到用戶的查詢之后會把請求按照Round Robin的方式發(fā)送給底層的多個Coordinator,這樣多個Coordinator就可以分擔(dān)壓力,但是整個集群還是有一些全局的事情要有單個Coordinator來做,比如Presto的Worker狀態(tài)監(jiān)控、OOM Killer等等,因此我們引入了一個Zookeeper來做Coordinator選主的事情,選主之后主Coordinator的職責(zé)會跟社區(qū)的Presto類似:做全局的Worker狀態(tài)監(jiān)控、OOM Killer以及執(zhí)行分配給它的查詢;從Coordinator的職責(zé)則比較輕量級: 只負(fù)責(zé)執(zhí)行分配給它的查詢。

如果其中一個Coordinator因?yàn)槿魏螁栴}宕機(jī),Zookeeper會在秒級發(fā)現(xiàn)這個問題并重新選主,用戶受到影響的查詢只要重試即可。而且我們正在做的一個嘗試是做查詢的自動重試,對于確定是系統(tǒng)原因造成的失敗我們做自動重試,這樣一個Coordinator對用戶的影響將會很小。

而有了多Coordinator的架構(gòu),我們要實(shí)現(xiàn)無縫升級就非常簡單了,我們在升級的時候只要主動把某個Coordinator/Worker從集群中摘除,進(jìn)行升級,升級完成再加入集群,客戶可以毫不感知,因?yàn)樵谏夁^程中始終有一個正常工作的集群在給用戶提供服務(wù), 比如我們在升級從Coordinator的時候,整個集群情況如下:

??

??

 

通過諸如多租戶隔離技術(shù)、多Coordinator架構(gòu)等等優(yōu)化,我們基于PrestoDB打造了可以服務(wù)所有的用戶的阿里云云原生數(shù)據(jù)湖Serverless SQL引擎。

六 云原生數(shù)據(jù)湖端到端最佳實(shí)踐

??

??

 

如上圖方案所示,DLA提供了端到端的方案,面對OSS數(shù)據(jù)開放性帶來的管理及入湖困難,DLA數(shù)據(jù)湖管理,幫助您一站式構(gòu)建安全數(shù)據(jù)湖。

  • 提供統(tǒng)一開放的Meta服務(wù)對OSS數(shù)據(jù)進(jìn)行管理,支持庫表權(quán)限。
  • 利用元數(shù)據(jù)爬取功能,可以一鍵創(chuàng)建OSS上的元數(shù)據(jù)信息,輕松自動識別CSV/JSON/Parquet等格式,建立好庫表信息,方便后續(xù)計(jì)算引擎使用。
  • 一鍵將RDS/PolarDB/MongoDB等數(shù)據(jù)庫的數(shù)據(jù)同步到OSS存儲當(dāng)中,搭建冷熱數(shù)據(jù)分層的業(yè)務(wù)架構(gòu),對多源海量數(shù)據(jù)進(jìn)行數(shù)據(jù)洞察分析。
  • 支持流式構(gòu)建Hudi格式,滿足T+10分鐘的延遲要求,極大提升分析的端到端的延遲。
  • Serverless化SQL分析,幫助您即開即用數(shù)據(jù)湖。用戶無需購買任何資源,即可運(yùn)行標(biāo)準(zhǔn)的SQL語法查詢數(shù)據(jù)。
  • 支持對數(shù)據(jù)湖存儲OSS Cache加速,提升10倍的性能。
  • 支持RDS、PolarDB、ADB、MongoDB數(shù)據(jù)十種數(shù)據(jù)源的分析。
  • 對比傳統(tǒng)的Presto、Impala方案提升10x的性價比提升。
  • Serverless化Spark計(jì)算,幫助您自主玩轉(zhuǎn)數(shù)據(jù)湖。用戶無需購買任何資源,即可使用云原生的Spark服務(wù),支持OSS 數(shù)PB的數(shù)據(jù)清洗、機(jī)器學(xué)習(xí)、用戶可編程,玩轉(zhuǎn)數(shù)據(jù)湖。
  • 每分鐘可彈出500個節(jié)點(diǎn)參與計(jì)算。
  • 對比傳統(tǒng)的自建Spark方案提升3x的性價比提升。

由于DLA涉及較多的技術(shù)點(diǎn),本文講述了部分技術(shù)細(xì)節(jié),更多歡迎關(guān)注云原生數(shù)據(jù)湖分析DLA:https://www.aliyun.com/product/datalakeanalytics

【本文為51CTO專欄作者“阿里巴巴官方技術(shù)”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

??戳這里,看該作者更多好文??

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2022-06-27 17:40:14

大數(shù)據(jù)數(shù)據(jù)科學(xué)

2019-04-22 14:00:56

公共云托管遷移

2022-06-09 17:37:27

數(shù)據(jù)湖云原生

2009-07-18 16:05:53

光纖拉遠(yuǎn)TD-SCDMA

2022-10-14 14:20:20

云原生數(shù)據(jù)倉庫

2022-12-20 07:49:48

數(shù)據(jù)庫TypeDB傳統(tǒng)關(guān)系型

2011-09-26 11:35:01

2021-08-18 09:00:00

云原生混合云無服務(wù)器

2010-09-01 16:12:19

無線局域網(wǎng)

2023-10-25 16:31:50

云原生數(shù)據(jù)治理

2010-03-15 08:58:46

2023-05-04 08:24:52

ChatGPT產(chǎn)品經(jīng)理工業(yè)革命

2009-07-16 18:36:25

2021-06-01 16:52:27

AI

2023-04-19 16:47:09

抖音機(jī)器學(xué)習(xí)

2021-04-06 11:01:06

比特幣加密貨幣去中心化
點(diǎn)贊
收藏

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