再也不用敲SQL DDL了!數(shù)據(jù)湖時代Google的元數(shù)據(jù)自動管理技術(shù)
一、閱讀目的
目前不管是數(shù)倉、Lakehouse、數(shù)據(jù)湖都把開放數(shù)據(jù)湖中數(shù)據(jù)的分析作為當(dāng)下的一個能力突破點(diǎn)。前面有看過論文“Data lake management: Challenges and opportunities”主要分析數(shù)據(jù)湖管理領(lǐng)域趨勢和挑戰(zhàn),里面有提到google的Goods在元數(shù)據(jù)管理方面做了不錯的工業(yè)實(shí)踐。
二、解決的核心問題(場景/技術(shù))
1、Goods在Google元數(shù)據(jù)體系的位置
從Google bigquery相關(guān)資料可以看出google有一套統(tǒng)一的Data catalog,Goods可以理解是基于這套Data catalog基礎(chǔ)服務(wù)提供的面向數(shù)據(jù)湖場景元數(shù)據(jù)管理的完善能力。另外googole還有一篇論文“Big Metadata: When Metadata is Big Data”則是講在large scale表的元數(shù)據(jù)及統(tǒng)計(jì)信息管理的創(chuàng)新,也是基于Data catalog的工作,這篇文章的解析可以參考本公眾號的“Delta Lake&Hudi很火!Google更是Lakehouse的領(lǐng)跑者”文章。
2、Goods的場景定位
面向數(shù)據(jù)湖場景避免數(shù)據(jù)孤島,需要對數(shù)據(jù)進(jìn)行統(tǒng)一的管理,而統(tǒng)一管理的可落地方式就是把元數(shù)據(jù)統(tǒng)一管理起來。Goods的定位不只做統(tǒng)一元數(shù)據(jù)服務(wù),而是在元數(shù)據(jù)服務(wù)之上解決元數(shù)據(jù)上下游的處理,并支持用戶高效的從大量數(shù)據(jù)中找到自己需要的數(shù)據(jù)集。核心技術(shù)難點(diǎn)在于準(zhǔn)確發(fā)現(xiàn)、大規(guī)模存儲、提供元數(shù)據(jù)查詢能力。
產(chǎn)生很多dataset的原因是為了快速的使用數(shù)據(jù),來驅(qū)動他們的競爭優(yōu)勢,但是在存儲數(shù)據(jù)的時候沒有進(jìn)行統(tǒng)一的元數(shù)據(jù)管理,這樣就只能事后進(jìn)行元數(shù)據(jù)的管理。不改變原有使用元數(shù)據(jù)的方式,goods后臺執(zhí)行并采集元數(shù)據(jù),并記錄和其他dataset之間的血緣關(guān)系,從而對外提供高效的元數(shù)據(jù)查詢服務(wù)。
三、論文內(nèi)幕
本文的特點(diǎn)是方向新穎、問題開放,因此行文邏輯和其他論文有一些不同,側(cè)重在問題的定義。主要包括幾方面:挑戰(zhàn)、數(shù)據(jù)發(fā)現(xiàn)能力、后端存儲計(jì)算服務(wù)、查詢服務(wù)、相關(guān)工作及未來
1、挑戰(zhàn)
下面是整體的架構(gòu),可以看到goods支持多種數(shù)據(jù)源的元數(shù)據(jù)發(fā)現(xiàn)、對外提供豐富的數(shù)據(jù)管理能力。挑戰(zhàn)包括下面的:
- 海量dataset的元數(shù)據(jù)發(fā)現(xiàn):支持google所有依賴的26 billion datasets的發(fā)現(xiàn),未來加速需要做dataset關(guān)聯(lián)的元數(shù)據(jù)推斷
- dataset多樣性:不同的數(shù)據(jù)源有不同的類型系統(tǒng),怎么做一套統(tǒng)一的元數(shù)據(jù)管理很有挑戰(zhàn)。比如bigtable的表需要按照列簇進(jìn)行表的拆分
- dataset的TTL能力:因?yàn)樵獢?shù)據(jù)會有版本,全部保留數(shù)據(jù)量很大,因此需要有TTL的能力
- 后置元數(shù)據(jù)發(fā)現(xiàn)具有一定不確定性:利用dataset自包含的content和dataset本身的隱藏關(guān)系
- 計(jì)算dataset的重要性:通過比如計(jì)算訪問頻率,主動推理dataset對用戶的重要性
- 恢復(fù)dataset的語義:dataset的語義對于后續(xù)的查詢、搜索、描述更有意義
2、Goods數(shù)據(jù)發(fā)現(xiàn)能力
存儲的元數(shù)據(jù)包括從不同系統(tǒng)獲取的,goods彌補(bǔ)自由度和統(tǒng)一視圖之間的gap,同時具備對多個版本進(jìn)行聚合處理的能力。
- 元數(shù)據(jù)
多種方式來爬取元數(shù)據(jù)并進(jìn)行組裝,獲取的這些元數(shù)據(jù)不僅支持元數(shù)據(jù)恢復(fù),同時能夠滿足數(shù)據(jù)的血緣和流動管理。goods支持構(gòu)建一個圖來描述元信息之間的關(guān)系。發(fā)現(xiàn)元數(shù)據(jù)的手段包括:結(jié)構(gòu)化的元數(shù)據(jù)都是使用pb來存儲、讀取一部分的數(shù)據(jù)來識別schema、使用一種算法識別潛在的key關(guān)鍵字、通過注釋來消除語義的歧義。
- 對數(shù)據(jù)進(jìn)行聚集處理
按照邏輯集群級別進(jìn)行聚集分類,分類后可以進(jìn)行一些智能的schema推斷和傳播,從而減少schema推斷的開銷。
3、后端存儲計(jì)算服務(wù)
- Catalog storage:有特點(diǎn)的是支持dataset添加描述、以及一些維度的標(biāo)簽信息
- 批處理作業(yè)性能及調(diào)度
后臺有分析生成元數(shù)據(jù)的作業(yè)、schema識別可能會比較久,做了一些同質(zhì)元數(shù)據(jù)比如分區(qū)的元數(shù)據(jù)發(fā)現(xiàn)的數(shù)據(jù)裁剪
- 容錯:status的metadata里面存儲作業(yè)的運(yùn)行狀態(tài),做了執(zhí)行作業(yè)的隔離
- 元數(shù)據(jù)的垃圾收集:這里主要是有一些TTL
4、查詢服務(wù)
- Dataset profile pages:支持dataset添加profile級別的配置,為了防止通過壓縮來減少使用空間。
- dataset 搜索:這里主要是一些索引相關(guān)
- 團(tuán)隊(duì)報(bào)表:可以監(jiān)控dataset的屬性的變化
5、相關(guān)工作
業(yè)界工作:Goods的特點(diǎn)是管理海量數(shù)據(jù)湖的元數(shù)據(jù),不需要元數(shù)據(jù)再創(chuàng)建的時候就進(jìn)行預(yù)處理。與現(xiàn)有比如hive管理元數(shù)據(jù),核心的區(qū)別就在與數(shù)據(jù)湖場景,以及事后的元數(shù)據(jù)發(fā)現(xiàn)。
未來工作包括:
- 對dataset的重要性進(jìn)行標(biāo)記還沒有完全做好
- 區(qū)分生產(chǎn)、測試、開發(fā)的datasets
- 整合更多的信息來做dataset的推理和管理
- 語義發(fā)現(xiàn)和識別
四、學(xué)習(xí)感悟
goods對于數(shù)據(jù)湖場景海量的數(shù)據(jù)集,進(jìn)行元數(shù)據(jù)做事后的發(fā)現(xiàn)提取、收集、管理、查詢。這個和筆者前面在阿里云云原生數(shù)據(jù)湖分析做的數(shù)據(jù)湖管理的元數(shù)據(jù)發(fā)現(xiàn)工作基本是一致的,這塊工作對于數(shù)據(jù)湖場景有很大的價值,可以看出goods在數(shù)據(jù)集血緣、發(fā)現(xiàn)的規(guī)模、模糊數(shù)據(jù)集的準(zhǔn)確性做了更加體系化的思考。