官术网_书友最值得收藏!

2.4 實現(xiàn)模式

與現(xiàn)有的任務(wù)圖相對應(yīng),元數(shù)據(jù)目錄服務(wù)的自動化有三個級別(如圖2-5所示)。每個級別對應(yīng)將目前手工或效率低下的任務(wù)組合自動化。

040-01

圖2-5:元數(shù)據(jù)目錄服務(wù)的不同自動化級別

特定源連接器模式

簡化連接到不同數(shù)據(jù)源,并提取與數(shù)據(jù)相關(guān)的元數(shù)據(jù)信息的過程。

沿襲關(guān)聯(lián)模式

自動提取與源表和目標(biāo)表相關(guān)的轉(zhuǎn)換沿襲。

團隊知識模式

簡化聚合業(yè)務(wù)上下文和數(shù)據(jù)用戶之間的知識共享的過程。

元數(shù)據(jù)目錄服務(wù)正越來越多地作為數(shù)據(jù)平臺的一部分來實現(xiàn)。流行的開源實現(xiàn)有FINRA的Herd項目(https://oreil.ly/YRXV0)、Uber的Databook項目(https://oreil.ly/VFXXO)、LinkedIn的WhereHows項目(https://oreil.ly/MaSie)和DataHub項目(https://oreil.ly/oDsZg)、Netflix的Metacat項目(https://oreil.ly/js2JN)、Apache的Atlas項目(https://oreil.ly/Ge-1D),以及AWS Glue項目(https://oreil.ly/XbSXS)等云服務(wù)項目。

2.4.1 特定源連接器模式

特定源連接器模式從源數(shù)據(jù)提取元數(shù)據(jù),以聚合技術(shù)元數(shù)據(jù)。數(shù)據(jù)集使用基于URN的命名來識別。這個模式有兩個構(gòu)建模塊:

自定義提取器

特定源連接器用于連接和持續(xù)獲取元數(shù)據(jù)。自定義提取器需要適當(dāng)?shù)脑L問權(quán)限,以授權(quán)憑據(jù)連接到RDBMS、Hive、GitHub等數(shù)據(jù)存儲。對于結(jié)構(gòu)化數(shù)據(jù)集和半結(jié)構(gòu)化數(shù)據(jù)集,提取工作需要理解描述數(shù)據(jù)邏輯結(jié)構(gòu)和語義的模式。一旦提取器連接到源,它就會通過實現(xiàn)分類器收集細節(jié),確定數(shù)據(jù)集的格式、模式和相關(guān)屬性。

聯(lián)合持久性

元數(shù)據(jù)細節(jié)以標(biāo)準(zhǔn)化的方式持久化,各個系統(tǒng)仍然是模式元數(shù)據(jù)(schema metadata)的事實來源,因此元數(shù)據(jù)目錄在其存儲中不會將其具體化。元數(shù)據(jù)目錄只直接存儲關(guān)于數(shù)據(jù)集的業(yè)務(wù)和用戶定義的元數(shù)據(jù),它還將數(shù)據(jù)集的所有信息發(fā)布到搜索服務(wù)中,以供用戶發(fā)現(xiàn)。

特定源連接器模式的一個示例是LinkedIn的WhereHows項目。特定源連接器用于從源系統(tǒng)收集元數(shù)據(jù)。例如,對于Hadoop數(shù)據(jù)集,爬取任務(wù)掃描HDFS上的文件夾和文件,讀取并聚合元數(shù)據(jù),然后將其存儲回去。對于Azkaban和Oozie等調(diào)度器,連接器使用后端存儲庫來獲取元數(shù)據(jù),將其聚合并轉(zhuǎn)換為規(guī)范化格式,最后將其加載到WhereHows數(shù)據(jù)庫中。類似的連接器也用于獲取Kafka和Samza的元數(shù)據(jù)。圖2-6顯示了在Netflix Metacat目錄服務(wù)中實現(xiàn)的模式的示例。

041-01

圖2-6:在Netflix Metacat中實現(xiàn)的特定源連接器模式(來自Netflix技術(shù)博客(https://oreil.ly/Kov-O))

特定源連接器模式的優(yōu)點:

  • 該模式詳盡地聚合了多個系統(tǒng)的元數(shù)據(jù),創(chuàng)建了一個單一倉庫的抽象。
  • 它將特定源的元數(shù)據(jù)規(guī)范化為一種通用格式。

特定源連接器模式的缺點:

  • 難以與新的適配器保持同步。
  • 在數(shù)百萬個數(shù)據(jù)集的極端規(guī)模下,連接源并提取數(shù)據(jù)的事后方法是行不通的。

2.4.2 沿襲關(guān)聯(lián)模式

沿襲關(guān)聯(lián)模式將跨數(shù)據(jù)和作業(yè)的操作元數(shù)據(jù)組裝在一起,并與執(zhí)行狀態(tài)結(jié)合。通過將作業(yè)執(zhí)行記錄與沿襲相結(jié)合,該模式可以用來解決一些問題,包括數(shù)據(jù)時效性、SLA、調(diào)整指定表的下游作業(yè)、基于使用情況對管道中的表進行排序等。

該模式包括以下三個構(gòu)建塊:

查詢解析

通過分析即席查詢或按預(yù)定的ETL運行的查詢,可以完成對數(shù)據(jù)沿襲的跟蹤。查詢可以從作業(yè)調(diào)度器、數(shù)據(jù)存儲日志、流式日志、GitHub存儲庫等收集。查詢解析的輸出是輸入表和輸出表的列表,即由查詢讀取和寫入的表。查詢解析不是一次性的活動,而是需要根據(jù)查詢的更新而不斷更新。查詢可以用多種語言編寫實現(xiàn),比如Spark、Pig和Hive。

管道關(guān)聯(lián)

一個數(shù)據(jù)或機器學(xué)習(xí)管道由多個數(shù)據(jù)轉(zhuǎn)換作業(yè)組成。每個作業(yè)由一個或多個腳本組成,每個腳本包括一個或多個查詢或執(zhí)行步驟(如圖2-7所示)。通過加入與每個查詢關(guān)聯(lián)的輸入表和輸出表來構(gòu)建管道沿襲視圖。這些信息是從接入框架、調(diào)度器、數(shù)據(jù)存儲和查詢引擎中特定系統(tǒng)的日志中提取的。

043-01

圖2-7:在數(shù)據(jù)或機器學(xué)習(xí)管道中生成數(shù)據(jù)轉(zhuǎn)換作業(yè)的沿襲

用執(zhí)行統(tǒng)計豐富沿襲

執(zhí)行統(tǒng)計(包括完成時間、處理的數(shù)據(jù)基數(shù)、執(zhí)行中的錯誤、表的訪問頻率、表的計數(shù)等)都會添加到沿襲視圖相應(yīng)的表和作業(yè)中。這樣,我們就可以將表和作業(yè)異常情況與整個管道的執(zhí)行情況關(guān)聯(lián)起來。

該模式的一個例子是Apache Atlas,它可以在多個Hadoop生態(tài)系統(tǒng)組件(即Sqoop、Hive、Kafka、Storm等)中提取沿襲。給定一個Hadoop作業(yè)ID,Atlas從作業(yè)歷史節(jié)點收集作業(yè)的配置查詢,解析查詢以生成源表和目標(biāo)表。類似的方法也適用于Sqoop作業(yè)。除了表級沿襲之外,Atlas還通過跟蹤以下依賴類型來支持列級沿襲:

簡單依賴

輸出列與輸入列具有相同的值。

表達式依賴

輸出列在運行時由某個表達式(例如,一個Hive SQL表達式)在輸入列上進行轉(zhuǎn)換。

腳本依賴

輸出列由用戶提供的腳本進行轉(zhuǎn)換。

沿襲關(guān)聯(lián)模式的優(yōu)勢在于它提供了一種非侵入的方法來重建依賴關(guān)系。缺點是對于查詢類型來說,沿襲可能沒有100%的覆蓋率,而且是近似的。對于每天運行數(shù)百個管道并保證性能和質(zhì)量SLA的部署來說,沿襲關(guān)聯(lián)模式至關(guān)重要。

2.4.3 團隊知識模式

團隊知識模式側(cè)重于數(shù)據(jù)用戶定義的元數(shù)據(jù),以豐富與數(shù)據(jù)集關(guān)聯(lián)的信息。其目標(biāo)是讓數(shù)據(jù)用戶分享經(jīng)驗,并幫助跨團隊擴展知識。當(dāng)數(shù)據(jù)集沒有很好的記錄、有多個事實來源、質(zhì)量參差不齊,以及數(shù)據(jù)集的大部分?jǐn)?shù)據(jù)不再被維護時,該模式尤其有價值。

團隊知識有三種主要類型。

數(shù)據(jù)文檔

這種類型包括屬性含義、枚舉和數(shù)據(jù)描述的細節(jié)。用戶可以根據(jù)自己的經(jīng)驗使用自由形式的元數(shù)據(jù)來注釋表列。此外,數(shù)據(jù)集所有者可以用描述注釋數(shù)據(jù)集,以幫助用戶找出哪些數(shù)據(jù)集適合他們(例如,在某些數(shù)據(jù)集中使用哪些分析技術(shù),以及要注意哪些陷阱)。考慮到不同水平的專業(yè)知識,初級團隊成員的注釋將會在添加到目錄之前得到驗證。

業(yè)務(wù)分類和標(biāo)簽

這種類型包括在業(yè)務(wù)中使用概念作為分類法,根據(jù)業(yè)務(wù)領(lǐng)域和主題領(lǐng)域?qū)?shù)據(jù)進行分類。使用業(yè)務(wù)分類法組織數(shù)據(jù)集可以幫助數(shù)據(jù)用戶找到感興趣的主題。為了便于對表的數(shù)據(jù)生命周期進行管理,可以對表打上標(biāo)簽。數(shù)據(jù)集審計人員可以對包含敏感信息的數(shù)據(jù)集進行標(biāo)記,并提醒數(shù)據(jù)集所有者或提示審查,以確保數(shù)據(jù)處理得當(dāng)。

可插拔式驗證

表的所有者可以將關(guān)于表的審計信息作為元數(shù)據(jù)對外提供。他們還可以提供列默認(rèn)值和驗證規(guī)則,用于寫入表。其中,驗證還包括用于開發(fā)數(shù)據(jù)的業(yè)務(wù)規(guī)則。

主站蜘蛛池模板: 颍上县| 马边| 陆丰市| 嘉禾县| 道孚县| 镇坪县| 内丘县| 洛川县| 江源县| 平江县| 兴安盟| 射阳县| 东丽区| 广州市| 泰来县| 怀仁县| 集安市| 凤冈县| 洮南市| 琼海市| 湘潭县| 瑞安市| 赣州市| 萍乡市| 鄂尔多斯市| 施甸县| 安乡县| 北票市| 伊吾县| 临高县| 阿克陶县| 仁化县| 满城县| 峨眉山市| 运城市| 永登县| 烟台市| 翼城县| 乐山市| 榆林市| 天镇县|