Marquez,開源的元數據管理工具

Marquez是一款開源的元數據服務,用於數據生態系統元數據的收集、彙總及可視化。它維護着數據集的消費和生產,爲作業運行時和數據集訪問頻率提供全局可見性,提供集中的數據集生命週期管理等。WeWork發佈並開源了Marquez。

Marquez的特徵:

  • 集中式元數據管理支持:

           數據血緣(Data Lineage)

           數據治理(Data governance)

           數據健康檢查(Data health)

 數據發現+探索(Data discovery + exploration)

  • 精確的高維度數據模型:

           作業(Jobs)

           數據集(Datasets)

  • 通過指定的元數據 API輕鬆收集元數據:

           重視數據集數據

           強化作業和數據集的所有權

  • 以最小的依賴進行簡單的操作和設計

  • RESTful API支持與其他系統的複雜集成:

           Airflow

           Amundsen

           Dagster

  • 旨在促進一個健康的數據生態系統,在這個系統中,組織中的團隊成員可以信心十足地無縫共享並安全地依賴彼此的數據集。

 

爲什麼選擇Marquez?

 

Marquez 支持跨全數據集的高度靈活的數據血緣查詢,同時可靠且高效地關聯作業及其生成和使用數據集之間的(上下游)依賴關係。

 

Marquez的設計

 

Marquez 是一個模塊化系統,作爲一個可高度伸縮和擴展的去平臺化的解決方案,實現元數據管理。它由以下系統組成:

  • 元數據存儲庫:存儲所有作業和數據集元數據,包括作業運行和作業級統計的完整歷史記錄(如:總運行時間、平均運行時間、成功/失敗等)。

  • 元數據API:RESTful API使一組不同的客戶端能夠圍繞數據集的生產和消費收集元數據。

  • 元數據UI:用於數據集發現、連接多個數據集並探索它們依賴關係圖。

爲了方便採用並使不同的數據處理應用程序能夠將元數據收集作爲其設計的核心需求,Marquez提供了實現元數據API的特定語言客戶端。作爲初始版本的一部分,它支持Java和Python。

元數據API是一個抽象的概念,用於記錄數據集生產和使用的信息。是一個低延遲、高可用的無狀態層,負責封裝持久化的元數據、集合血緣信息。API允許客戶端收集,且/或從元數據存儲庫獲取數據集信息。

元數據需要被收集、組織和存儲,以便通過元數據UI進行豐富的探索性查詢。元數據存儲庫是由元數據API壓縮且清洗後的抽象的數據集信息目錄。

 

Marquez的數據模型

 

Marquez的數據模型強調數據集的不變性和及時處理性。數據集由作業運行生成,價值重要。作業運行與版本代碼鏈接,並生成一個或多個不可變的版本輸出。數據集的更改通過輕量級API的調用被記錄在作業執行的不同點,包括運行本身的成功或失敗。

下圖顯示了在多次運行中爲給定作業收集和編目的元數據,以及應用於其輸入數據集的時間序列變化。

  • 作業:作業包含所有者、唯一名稱、版本和可選描述。作業會將一個或多個版本輸入定義爲依賴,並將一個或多個版本輸出定義爲artifacts。需注意的是,作業可能只定義了輸入數據集,也可能僅定義了輸出數據集。

  • 作業版本:作業的只讀不可變版本,有唯一可引用的鏈接,以編碼存儲保證源碼的重現。作業版本將一個或多個輸入和輸出數據集關聯到作業定義(數據在各種作業中的流轉,對記錄血緣信息很重要)。這些關聯對源鏈接進行分類,並提供強大的可視化數據流。

  • 數據集:數據集有所有者、唯一名稱、schema、版本和可選描述。數據集包含於數據源。數據源可將物理數據集分組到它們的物理源。每個數據集都有一個指向歷史更改集的版本指針,由Marquez來維護。當將數據集更改提交回Marquez時,將生成一個唯一的版本ID,進行存儲,然後將其設置爲當前版本,並在內部更新指針。

  • 數據集版本:數據集的只讀不可變版本。每個版本都可以獨立讀取,有一個唯一ID,映射到數據集的更改,以保留其在特定時間點的狀態。只有當數據集的更改被記錄,纔會更新最新版本ID。爲了計算不同的版本ID,Marquez將版本控制功能應用於與底層數據源的數據集相對應的一組屬性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章