摘要:元數(shù)據(jù)管理服務UMS集中管理一些關鍵的業(yè)務元數(shù)據(jù),并存儲在自己的具有管理功能的元數(shù)據(jù)數(shù)據(jù)庫中:更新的驗證和授權審計歷史關鍵元數(shù)據(jù)敏感操作的審批工作流程支持離線生成元數(shù)據(jù)的在線用例作為Airbnb數(shù)據(jù)質(zhì)量計劃的一部分,我們實施了與數(shù)據(jù)倉庫中每個數(shù)據(jù)資產(chǎn)直接相關的數(shù)據(jù)質(zhì)量評分。...
Airbnb 如何將我們的數(shù)據(jù)目錄發(fā)展成為一個用于大規(guī)模管理和治理我們的數(shù)據(jù)倉庫的平臺。
介紹
在愛彼迎,數(shù)百萬數(shù)據(jù)資產(chǎn)存在于復雜的生態(tài)系統(tǒng)中,為我們的業(yè)務提供信息并改進我們的產(chǎn)品。數(shù)據(jù)管理團隊的使命是使公司能夠大規(guī)模管理其數(shù)據(jù)生態(tài)系統(tǒng)。
為此,我們需要準確了解我們生態(tài)系統(tǒng)中的所有資產(chǎn)以及它們之間的相互關系。換句話說,它需要準確的元數(shù)據(jù)。我們的數(shù)據(jù)管理平臺 Metis 以希臘忠告女神的名字命名,是我們確??梢源笠?guī)模捕獲、管理和使用可信賴的元數(shù)據(jù)的解決方案。
出身卑微
Metis 是我們現(xiàn)有的 Airbnb 元數(shù)據(jù)產(chǎn)品基礎的演變。
Dataportal是我們實現(xiàn)數(shù)據(jù)民主化的第一項努力:成功地使數(shù)據(jù)用戶能夠找到可信數(shù)據(jù)。這極大地提高了生產(chǎn)力,并且遠遠領先于它的時代。
隨著數(shù)據(jù)可靠性和合規(guī)性法規(guī)變得越來越重要,我們需要更全面、更詳細地了解數(shù)據(jù)是如何轉(zhuǎn)換的。這導致我們采用Apache Atlas作為我們的數(shù)據(jù)沿襲解決方案。Apache Atlas 為 SLA Tracker(請參閱在 Airbnb 可視化數(shù)據(jù)時效性)等產(chǎn)品提供支持,它結合了著陸時間元數(shù)據(jù)和沿襲以啟用調(diào)試上游數(shù)據(jù)延遲。
隨著我們對元數(shù)據(jù)的需求增加,擴展到成本管理、數(shù)據(jù)質(zhì)量等更多領域,我們對數(shù)據(jù)目錄的需求也擴大了:
- 能夠管理描述它的數(shù)據(jù)和元數(shù)據(jù)
- 提高數(shù)據(jù)質(zhì)量的護欄和建議
- 數(shù)據(jù)集歷史的可審計性,用于調(diào)試和治理目的
我們很快了解到,數(shù)據(jù)管理必須作為一門學科來追求,因此將 Metis 打造為訪問所有數(shù)據(jù)元數(shù)據(jù)的一站式商店。
我們建造了什么
Metis 由三個核心產(chǎn)品組成:Dataportal、Unified Metadata Service (UMS) 和 Lineage Service。 總之,這個平臺允許 Airbnb 管理多個領域的數(shù)百萬數(shù)據(jù)資產(chǎn)。我們支持的一小部分資產(chǎn)包括:
- Apache Hive和 Trino 數(shù)據(jù)集
- 指標和維度,由Airbnb 的指標平臺提供支持:Minerva
- 來自Apache Superset和 Tableau? 的圖表和儀表板
- 數(shù)據(jù)模型,包括經(jīng) Midas 認證的模型
- 機器學習功能和模型
- Airbnb 的團隊和員工(從技術上講不是數(shù)據(jù)資產(chǎn),而是支持高質(zhì)量所有權并確保上述所有數(shù)據(jù)資產(chǎn)的元數(shù)據(jù)保持最新的關鍵)
梅蒂斯建筑
梅蒂斯建筑
在高層次上,Metis 由以下組件組成:
數(shù)據(jù)門戶——作為人類用戶的目錄和管理 UI。
Viaduct — Airbnb 的內(nèi)部 GraphQL API 層建模離線數(shù)據(jù)生態(tài)系統(tǒng)。
UMS Core 服務——一種后端服務,包含元數(shù)據(jù)管理所需的系統(tǒng)架構和業(yè)務邏輯。
元數(shù)據(jù)存儲:
- MySQL——主要存儲需要集中管理的關鍵元數(shù)據(jù)
- Lineage Graph——一種收集和服務數(shù)據(jù)沿襲的集中式服務
- Elasticsearch — 服務于搜索和發(fā)現(xiàn)用例
離線組件——UMS 核心服務的外部,用于執(zhí)行離線任務:例如離線元數(shù)據(jù)一致性檢查、策略執(zhí)行。
離線數(shù)據(jù)集——為分析用例離線導出元數(shù)據(jù)。
數(shù)據(jù)門戶
Dataportal 用作 Airbnb 數(shù)據(jù)目錄的 UI,是人們查找和管理 Metis 支持的所有資產(chǎn)的地方。它是使用 React 和 TypeScript 構建的單頁應用程序,因此足夠靈活,可以服務于數(shù)據(jù)管理和治理所需的各種工作流。前端通過 GraphQL API 與 UMS 和其他服務通信;這一點尤其重要,因為我們要防止順序獲取沿襲信息和過度獲取大量元數(shù)據(jù)以確保高性能的用戶體驗。
搜索和發(fā)現(xiàn)
Dataportal 體驗從搜索開始,這樣數(shù)據(jù)消費者和數(shù)據(jù)所有者都可以找到他們需要的資產(chǎn)。 我們在設計搜索和發(fā)現(xiàn)體驗時考慮了以下幾個原則:
- 直接在搜索結果中顯示相關元數(shù)據(jù),幫助人們找到他們正在尋找的確切資產(chǎn)
- 在用戶不知道他們需要的確切資產(chǎn)的情況下,提升高質(zhì)量和常用的數(shù)據(jù)資產(chǎn)
因此,搜索結果往往會返回高質(zhì)量的、經(jīng)過認證的數(shù)據(jù)集,以及描述、最近的用戶數(shù)量和上次修改的時間,以幫助用戶找到他們想要選擇的資產(chǎn):
數(shù)據(jù)門戶搜索結果頁面
管理能力
一旦找到所需的資產(chǎn),用戶就可以訪問實體頁面以執(zhí)行各種消費、管理和治理操作。我們將實體頁面上的所有內(nèi)容組織成按數(shù)據(jù)或操作類別分組的選項卡:
Hive 表上的元數(shù)據(jù)可用的許多選項卡
與消費和文檔相關的選項卡使人們可以輕松了解如何使用此表,配置選項卡中包含列和表說明,聯(lián)系點選項卡中包含所有者和消費者數(shù)據(jù),以及有關如何使用該表的更多詳細信息文檔選項卡。除此之外,這些頁面還允許用戶進行管理活動,如下面的屏幕截圖所示:
任何人都可以標記包含個人數(shù)據(jù)的列。更改和刪除標簽需要進行審查,以確保在我們的倉庫中正確識別個人數(shù)據(jù)。
上面的屏幕截圖僅突出顯示了我們將數(shù)據(jù)門戶從可搜索數(shù)據(jù)目錄升級到一個集中位置以管理和管理所有數(shù)據(jù)資產(chǎn)的方法的一個子集。
統(tǒng)一元數(shù)據(jù)服務
統(tǒng)一元數(shù)據(jù)服務 (UMS) 是我們集中式數(shù)據(jù)管理平臺的后端核心。它提供:
- 集中式模式和位于其之上的 Graphql API 層,用于訪問元數(shù)據(jù)
- 連接孤立元數(shù)據(jù)的集中式關系圖
- 集中的元數(shù)據(jù)管理功能使系統(tǒng)能夠滿足合規(guī)性和治理要求,而無需重新發(fā)明輪子
將元數(shù)據(jù)集中到 UMS 中可以防止所有元數(shù)據(jù)提供者和消費者需要相互集成;相反,所有提供者和消費者只需要與 UMS 集成:
減少元數(shù)據(jù)的集成點
元數(shù)據(jù)集成模式
UMS 在元數(shù)據(jù)集成和用例中扮演著各種角色。在去中心化的數(shù)據(jù)生態(tài)系統(tǒng)中,我們對哪些元數(shù)據(jù)應該存儲、復制到或通過 UMS 提供非常有意見。
統(tǒng)一表示層代理請求
UMS 支持將讀取請求代理到許多數(shù)據(jù)系統(tǒng)。這包括將讀取請求代理到:
- 用于表架構和表屬性的 Hive Metastore。
- 原始 Hive 表數(shù)據(jù)沿襲的沿襲服務。
- 用于數(shù)據(jù)集的數(shù)據(jù)治理狀態(tài)的數(shù)據(jù)治理服務。
元數(shù)據(jù)管理服務
UMS集中管理一些關鍵的業(yè)務元數(shù)據(jù),并存儲在自己的具有管理功能的元數(shù)據(jù)數(shù)據(jù)庫中:
- 更新的驗證和授權
- 審計歷史
- 關鍵元數(shù)據(jù)敏感操作的審批工作流程
支持離線生成元數(shù)據(jù)的在線用例
作為 Airbnb數(shù)據(jù)質(zhì)量計劃的一部分,我們實施了與數(shù)據(jù)倉庫中每個數(shù)據(jù)資產(chǎn)直接相關的數(shù)據(jù)質(zhì)量評分。數(shù)據(jù)集的數(shù)據(jù)質(zhì)量分數(shù)以離線方式生成,并被提取到 UMS 元數(shù)據(jù)數(shù)據(jù)庫中以供在線使用。
集中管理的搜?索索引支持數(shù)據(jù)發(fā)現(xiàn)
與傳統(tǒng)的數(shù)據(jù)目錄類似,UMS 在 Elasticsearch 集群中集中管理不同實體的索引,以支持數(shù)據(jù)發(fā)現(xiàn)。
元數(shù)據(jù)攝取
在某些情況下,需要將元數(shù)據(jù)存儲或復制到 Metis 存儲層中。UMS 以各種鋪平的機制與元數(shù)據(jù)提供商集成,以利用 Airbnb 的技術堆棧獲取元數(shù)據(jù)。這些包括:
- 流處理 (Flink) 作業(yè)攝取元數(shù)據(jù)更改事件。
- 每天運行的 ETL(氣流)作業(yè)從元數(shù)據(jù)提供程序中提取并推送到 UMS。
- 直接調(diào)用 UMS API。
當我們加入新的元數(shù)據(jù)提供商時,涉及的關鍵工作是確定產(chǎn)品需求并調(diào)整元數(shù)據(jù)集成的范圍,然后最終確定實際的集成機制。
血統(tǒng)服務
Metis 的最后一個主要部分是我們的 Lineage Service。早在 2020 年,我們就采用 Apache Atlas 作為 Airbnb 的數(shù)據(jù)倉庫數(shù)據(jù)沿襲解決方案。
在 Airbnb,Apache Atlas 擁有一個包含超過 1 億個節(jié)點和 3 億條邊的大型譜系圖。主要的沿襲數(shù)據(jù)來自生產(chǎn) Hive 表和我們數(shù)據(jù)倉庫中的大量中間 Hive 表。
我們對 Apache Atlas 進行了廣泛的定制和調(diào)整,以處理我們數(shù)據(jù)倉庫中的大規(guī)模沿襲事件:
- 對沿襲事件應用分片策略以增加并行性。
- 在圖形數(shù)據(jù)庫之上提高 Atlas 服務器代碼效率。
- 微調(diào)支持圖形數(shù)據(jù)庫的底層存儲系統(tǒng)以實現(xiàn)可擴展性和延遲。
- 讀取路徑優(yōu)化和過濾支持,以更有效地訪問沿襲數(shù)據(jù)。
Atlas 的譜系相關組件,包括其圖形引擎 (JanusGraph)、類型系統(tǒng)、Ingest(帶有 Hook 集成)和譜系 API,使我們能夠高效地收集和提供譜系數(shù)據(jù),為各種數(shù)據(jù)資產(chǎn)和數(shù)據(jù)之間的關系提供有價值的見解。管道。它為許多關鍵數(shù)據(jù)合規(guī)性、數(shù)據(jù)可靠性和數(shù)據(jù)質(zhì)量產(chǎn)品提供支持。請參閱在 Airbnb 可視化數(shù)據(jù)時效性。
結論與贊賞
如上所示,Airbnb 的數(shù)據(jù)管理方法在過去 6 年中發(fā)生了顯著變化。我們開始構建Dataportal 的目標是在 Airbnb 實現(xiàn)“數(shù)據(jù)民主化”,現(xiàn)在我們有了 Metis:一個讓 Airbnb 的任何人都能搜索、發(fā)現(xiàn)、使用和管理我們離線倉庫中的所有數(shù)據(jù)和元數(shù)據(jù)的平臺。Metis 一直在數(shù)據(jù)合規(guī)性、數(shù)據(jù)可靠性、數(shù)據(jù)質(zhì)量計劃方面發(fā)揮關鍵作用,每周幫助 1000 多名數(shù)據(jù)用戶。
我們未來的工作將涉及兩個關鍵優(yōu)先事項:首先,我們將專注于發(fā)展我們的系統(tǒng)架構和底層技術,以跟上我們數(shù)據(jù)生態(tài)系統(tǒng)的快速發(fā)展。其次,我們計劃將我們的覆蓋范圍擴大到更多系統(tǒng)并啟用更高級的數(shù)據(jù)管理功能,這反映了我們在 Airbnb 對數(shù)據(jù)投資的持續(xù)承諾。
沒有數(shù)據(jù)管理團隊的成員以及我們的跨職能和跨組織合作者,就不可能有 Metis。他們包括但不限于:Adam Kocoloski、Adam Wong、Cindy Yu、Dave Nagle、Erik Ritter、Jerry Wang、葉嘉欣、John Bodley、Jyoti Wadhwani、Liyin Tang、Michelle Thomas、Nathan Towery、Paul Ellwood、Sylvia Tomiyama 、Vyl Chiang、Woody Zhou、Xiaobin Zheng 和 Zuzana Vejrazkova。
Apache Airflow、Apache Atlas、Apache Hive、Apache Superset、Atlas 和 Hive 是 Apache Software Foundation 在美國和其他國家/地區(qū)的注冊商標或商標。
所有商標、服務標志、公司名稱和產(chǎn)品名稱均為其各自所有者的財產(chǎn)。對這些的任何使用僅用于識別目的,并不意味著贊助和認可。
作者: Erik Ritter、葉佳欣、Sylvia Tomiyama、Woody Zhou、鄭曉斌、Zuzana Vejrazkova
出處
:https://medium.com/airbnb-engineering/metis-building-airbnbs-next-generation-data-management-platform-d2c5219edf19