随着數字化轉型的工作推進,資料治理的工作已經被越來越多的公司提上了日程。作為新一代的中繼資料管理平台,Datahub在近一年的時間裡發展迅猛,大有取代老牌中繼資料管理工具Atlas之勢。國内Datahub的資料非常少,大部分公司想使用Datahub作為自己的中繼資料管理平台,但可參考的資料太少。
是以整理了這份文檔供大家學習使用。 本文檔基于Datahub最新的0.8.20版本,整理自部分官網内容,各種部落格及實踐過程。文章較長,建議收藏。新版本的文檔請關注公衆号 大資料流動,會持續的更新~
通過本文檔,可以快速的入門Datahub,成功的搭建Datahub并且擷取到資料庫的中繼資料資訊。是從0到1的入門文檔,更多Datahub的進階功能,可以關注後續的文章更新。
文檔共分為6個部分,層級結構如下圖所示。
文檔版權為公衆号 大資料流動 所有,請勿商用。相關技術問題以及安裝包可以聯系筆者獨孤風加入相關技術交流群讨論擷取。
為什麼要做資料治理? 業務繁多,資料繁多,業務資料不斷疊代。人員流動,文檔不全,邏輯不清楚,對于資料很難直覺了解,後期很難維護。
在大資料研發中,原始資料就有着非常多的資料庫,資料表。
而經過資料的聚合以後,又會有很多的次元表。
近幾年來資料的量級在瘋狂的增長,由此帶來了系列的問題。作為對人工智能團隊的資料支撐,我們聽到的最多的質疑是 “正确的資料集”,他們需要正确的資料用于他們的分析。我們開始意識到,雖然我們建構了高度可擴充的資料存儲,實時計算等等能力,但是我們的團隊仍然在浪費時間尋找合适的資料集來進行分析。
也就是我們缺乏對資料資産的管理。事實上,有很多公司都提供了開源的解決方案來解決上述問題,這也就是資料發現與中繼資料管理工具。
簡單地說,中繼資料管理是為了對資料資産進行有效的組織。它使用中繼資料來幫助管理他們的資料。它還可以幫助資料專業人員收集、組織、通路和豐富中繼資料,以支援資料治理。
三十年前,資料資産可能是 Oracle 資料庫中的一張表。然而,在現代企業中,我們擁有一系列令人眼花缭亂的不同類型的資料資産。可能是關系資料庫或 NoSQL 存儲中的表、實時流資料、 AI 系統中的功能、名額平台中的名額,資料可視化工具中的儀表闆。
現代中繼資料管理應包含所有這些類型的資料資産,并使資料工作者能夠更高效地使用這些資産完成工作。
是以,中繼資料管理應具備的功能如下:
搜尋和發現:資料表、字段、标簽、使用資訊
通路控制:通路控制組、使用者、政策
資料血緣:管道執行、查詢
合規性:資料隐私/合規性注釋類型的分類
資料管理:資料源配置、攝取配置、保留配置、資料清除政策
AI 可解釋性、再現性:特征定義、模型定義、訓練運作執行、問題陳述
資料操作:管道執行、處理的資料分區、資料統計
資料品質:資料品質規則定義、規則執行結果、資料統計
下面介紹中繼資料管理的架構實作,不同的架構都對應了不同的開源實作。
下圖描述了第一代中繼資料架構。它通常是一個經典的單體前端(可能是一個 Flask 應用程式),連接配接到主要存儲進行查詢(通常是 MySQL/Postgres),一個用于提供搜尋查詢的搜尋索引(通常是 Elasticsearch),并且對于這種架構的第 1.5 代,也許一旦達到關系資料庫的“遞歸查詢”限制,就使用了處理譜系(通常是 Neo4j)圖形查詢的圖形索引。
很快,第二代的架構出現了。單體應用程式已拆分為位于中繼資料存儲資料庫前面的服務。該服務提供了一個 API,允許使用推送機制将中繼資料寫入系統。
第三代架構是基于事件的中繼資料管理架構,客戶可以根據他們的需要以不同的方式與中繼資料資料庫互動。
中繼資料的低延遲查找、對中繼資料屬性進行全文和排名搜尋的能力、對中繼資料關系的圖形查詢以及全掃描和分析能力。
Datahub 就是采用的這種架構。
下圖是當今中繼資料格局的簡單直覺表示:
(包含部分非開源方案)
其他方案可作為調研的主要方向,但不是本文讨論的重點。
首先,阿裡雲也有一款名為DataHub的産品,是一個流式處理平台,本文所述DataHub與其無關。
資料治理是大佬們最近談的一個火熱的話題。不管國家層面,還是企業層面現在對這個問題是越來越重視。資料治理要解決資料品質,資料管理,資料資産,資料安全等等。而資料治理的關鍵就在于中繼資料管理,我們要知道資料的來龍去脈,才能對資料進行全方位的管理,監控,洞察。
DataHub是由LinkedIn的資料團隊開源的一款提供中繼資料搜尋與發現的工具。
提到LinkedIn,不得不想到大名鼎鼎的Kafka,Kafka就是LinkedIn開源的。LinkedIn開源的Kafka直接影響了整個實時計算領域的發展,而LinkedIn的資料團隊也一直在探索資料治理的問題,不斷努力擴充其基礎架構,以滿足不斷增長的大資料生态系統的需求。随着資料的數量和豐富性的增長,資料科學家和工程師要發現可用的資料資産,了解其出處并根據見解采取适當的行動變得越來越具有挑戰性。為了幫助增長的同時繼續擴大生産力和資料創新,建立了通用的中繼資料搜尋和發現工具DataHub。
市面上常見的中繼資料管理系統有如下幾個:
a) linkedin datahub:
https://github.com/linkedin/datahub
b) apache atlas:
https://github.com/apache/atlas
c) lyft amundsen
https://github.com/lyft/amundsen
atlas之前我們也介紹過,對hive有非常好的支援,但是部署起來非常的吃力。amundsen還是一個新興的架構,還沒有release版本,未來可能會發展起來還需要慢慢觀察。
綜上,datahub是目前的一顆新星,隻是目前datahub的資料還較少,未來我們将持續關注與更新datahub的更多資訊。
目前datahub的github星數已經達到4.3k。
Datahub官網
Datahub官網對于其描述為Data ecosystems are diverse — too diverse. DataHub's extensible metadata platform enables data discovery, data observability and federated governance that helps you tame this complexity.
資料生态是多樣的,而 DataHub提供了可擴充的中繼資料管理平台,可以滿足資料發現,資料可觀察與治理。這也極大的解決了資料複雜性的問題。
Datahub提供了豐富的資料源支援與血緣展示。
在擷取資料源的時候,隻需要編寫簡單的yml檔案就可以完成中繼資料的擷取。
在資料源的支援方面,Datahub支援druid,hive,kafka,mysql,oracle,postgres,redash,metabase,superset等資料源,并支援通過airflow的資料血緣擷取。可以說實作了從資料源到BI工具的全鍊路的資料血緣打通。
通過Datahub的頁面我們來簡單了解下Datahub所能滿足的功能。
首先,在登入到Datahub以後就進入了Datahub首頁,首頁中提供了Datahub的菜單欄,搜尋框和中繼資料資訊清單。這是為了讓大家可以快速的對中繼資料進行管理。
中繼資料資訊中按照資料集,儀表闆,圖表等類型進行了分類。
再往下看是平台資訊,在這當中包括了Hive,Kafka,Airflow等平台資訊的收集。
下面其實是一些搜尋的統計資訊。用于統計最近以及最流行的搜尋結果。
包括一些标簽和術語表資訊。
分析頁面是對中繼資料資訊的統計,也是對使用datahub的使用者資訊的統計。
可以了解為一個展示頁面,這對于總體情況的了解還是非常的有必要的。
其他的功能基本是對于使用者和權限的控制。
要想學習好Datahub,就必須了解Datahub的整體架構。
通過Datahub的架構圖可以清晰的了解Datahub的架構組成。
DataHub 的架構有三個主要部分。
前端為 Datahub frontend作為前端的頁面展示。
豐富的前端展示讓Datahub 擁有了支撐大多數功能的能力。其前端基于React架構研發,對于有二次研發打算的公司,要注意此技術棧的比對性。
後端 Datahub serving來提供後端的存儲服務。
Datahub 的後端開發語言為Python,存儲基于ES或者Neo4J。
而Datahub ingestion則用于抽取中繼資料資訊。
Datahub 提供了基于API中繼資料主動拉取方式,和基于Kafka的實時中繼資料擷取方式。這對于中繼資料的擷取非常的靈活。
這三部分也是我們部署過程中主要關注的點,下面我們就從零開始部署Datahub,并擷取一個資料庫的中繼資料資訊。
部署datahub對于系統有一定的要求。本文基于CentOS7進行安裝。
要先安裝好 docker,jq,docker-compose。同時保證系統的python版本為 Python 3.6+。
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux或Windows作業系統的機器上,也可以實作虛拟化,容器是完全使用沙箱機制,互相之間不會有任何接口。
可以通過yum的方式快速的安裝docker
完成後通過docker -v來檢視版本情況。
通過下面的指令可以啟停docker
随後安裝Docker Compose
Docker Compose是 docker 提供的一個指令行工具,用來定義和運作由多個容器組成的應用。使用 compose,我們可以通過 YAML 檔案聲明式的定義應用程式的各個服務,并由單個指令完成應用的建立和啟動。
修改執行權限
建立軟連接配接
檢視版本,驗證安裝成功。
安裝jq
首先安裝EPEL源,企業版 Linux 附加軟體包(以下簡稱 EPEL)是一個 Fedora 特别興趣小組,用以建立、維護以及管理針對企業版 Linux 的一個高品質附加軟體包集,面向的對象包括但不限于 紅帽企業版 Linux (RHEL)、 CentOS、Scientific Linux (SL)、Oracle Linux (OL) 。
EPEL 的軟體包通常不會與企業版 Linux 官方源中的軟體包發生沖突,或者互相替換檔案。EPEL 項目與 Fedora 基本一緻,包含完整的建構系統、更新管理器、鏡像管理器等等。
安裝EPEL源
安裝完EPEL源後,可以檢視下jq包是否存在:
安裝jq:
安裝依賴
下載下傳安裝包
編譯安裝
修改系統預設python指向
修改系統預設pip指向
驗證
修複yum
python3會導緻yum不能正常使用
首先更新pip
需要看到下面成功的傳回。
檢查環境
收到這樣的提示說明沒有問題。
安裝datahub,此步驟時間較長,耐心等待。
收到這樣的提示說明安裝成功。
最後我們看到datahub的版本情況。
随後啟動datahub
會經過漫長的下載下傳過程,耐心等待。
開始啟動,注意觀察報錯情況。如果網速不好,需要多執行幾次。
如果可以看到如下顯示,證明安裝成功了。
通路ip:9002 輸入 datahub datahub 登入
登入到Datahub以後,會有一個友好的welcome頁面。來提示如何進行中繼資料的抓取。
中繼資料攝入使用的是插件架構,你僅需要安裝所需的插件。
攝入源有很多
這裡安裝兩個插件:
源:mysql
彙:datahub-rest
安裝的包較多,得到如下提示證明安裝成功。
随後檢查安裝的插件情況,Datahub是插件式的安裝方式。可以檢查資料源擷取插件Source,轉換插件transformer,擷取插件Sink。
可見Mysql插件和Rest接口插件已經安裝,下面配置從 MySQL 擷取中繼資料使用 Rest 接口将資料存儲 DataHub。
随後是漫長的資料擷取過程。
得到如下提示後,證明擷取成功。
在此重新整理datahub頁面,mysql的中繼資料資訊已經成功擷取。
進入表中檢視中繼資料的情況,表字段資訊。
在之前展示中繼資料分析頁也已經有了詳細的展示。
至此我們完成了Datahub從0到1的搭建,在整個過程中除了簡單的安裝配置以外,基本沒有進行任何代碼研發工作。但是datahub還有更多的功能,比如對資料血緣的擷取,在中繼資料擷取的過程中進行轉換操作等等。在未來的文章中也會進行更新這些功能的教程。
未完待續~
歡迎加入資料治理學習交流群,共同學習交流~
請直接備注:昵稱-資料治理
例如:獨孤風-資料治理
注意,群裡僅做資料治理相關讨論 不允許分享任何小程式,連結,二維碼等廣告,一次直接飛機票!
更多資料治理相關技術與資料,歡迎關注大資料流動。
大資料流動 專注于大資料實時計算,資料治理,資料可視化等技術分享與實踐。
請在背景回複關鍵字下載下傳相關資料。相關學習交流群已經成立,歡迎加入~