大家好,我是獨孤風。元數據管理平臺層出不窮,但目前主流的還是Atlas、Datahub、Openmetadata三家,那麼我們該如何選擇呢?
本文就帶大家對比一下。要了解元數據管理平臺,先要從架構說起。
元數據管理的架構與開源方案
下面介紹元數據管理的架構實現,不同的架構都對應了不同的開源實現。
下圖描述了第一代元數據架構。它通常是一個經典的單體前端(可能是一個 Flask 應用程序),連接到主要存儲進行查詢(通常是 MySQL/Postgres),一個用於提供搜索查詢的搜索索引(通常是 Elasticsearch),並且對於這種架構的第 1.5 代,也許一旦達到關係數據庫的“遞歸查詢”限制,就使用了處理譜系(通常是 Neo4j)圖形查詢的圖形索引。
很快,第二代的架構出現了。單體應用程序已拆分爲位於元數據存儲數據庫前面的服務。該服務提供了一個 API,允許使用推送機制將元數據寫入系統。
第三代架構是基於事件的元數據管理架構,客戶可以根據他們的需要以不同的方式與元數據數據庫交互。
元數據的低延遲查找、對元數據屬性進行全文和排名搜索的能力、對元數據關係的圖形查詢以及全掃描和分析能力。
Datahub 就是採用的這種架構。
下圖是當今元數據格局的簡單直觀表示:
(包含部分非開源方案)
Apache Atlas
Atlas是Hadoop的數據治理和元數據框架。Atlas於2015年7月開始在Hortonworks進行孵化。
官網地址爲:https://atlas.apache.org/
源碼地址爲:https://github.com/apache/atlas
目前標星1.7K,最新穩定版本2.3.0。
開發語言後端主要爲Java,前端功能主要爲JS實現。
特性
- Atlas支持各種Hadoop和非Hadoop元數據類型
- 提供了豐富的REST API進行集成
- 對數據血緣的追溯達到了字段級別,這種技術還沒有其實類似框架可以實現
- 對權限也有很好的控制
Atlas包括以下組件:
- 採用Hbase存儲元數據
- 採用Solr實現索引
- Ingest/Export 採集導出組件 Type System類型系統 Graph Engine圖形引擎 共同構成Atlas的核心機制
- 所有功能通過API向用戶提供,也可以通過Kafka消息系統進行集成
- Atlas支持各種源獲取元數據:Hive,Sqoop,Storm。。。
- 還有優秀的UI支持
Atlas是Hadoop生態的嫡系,並且天然的集成在Ambari中(不過版本較低,建議自己安裝)。
Atlas對Hive的支持極好,對Spark也有一定的支持。
如果熟悉Atlas的API,也可以很好的擴展。
但由於社羣活躍度一般,Atlas後期更新乏力。
頁面也還是老樣子,新版本的頁面並不完善,所以還有有很大的侷限性。
DataHub (LinkedIn)
LinkedIn開源出來的,原來叫做WhereHows 。經過一段時間的發展datahub於2020年2月在Github開源。
官網地址爲:https://datahubproject.io/
源碼地址爲:https://github.com/linkedin/datahub
目前標星8.8K,最新穩定版本0.12.0。
開發語言爲Java和Python。
DataHub是由LinkedIn的數據團隊開源的一款提供元數據搜索與發現的工具。
提到LinkedIn,不得不想到大名鼎鼎的Kafka,Kafka就是LinkedIn開源的。LinkedIn開源的Kafka直接影響了整個實時計算領域的發展,而LinkedIn的數據團隊也一直在探索數據治理的問題,不斷努力擴展其基礎架構,以滿足不斷增長的大數據生態系統的需求。隨着數據的數量和豐富性的增長,數據科學家和工程師要發現可用的數據資產,瞭解其出處並根據見解採取適當的行動變得越來越具有挑戰性。爲了幫助增長的同時繼續擴大生產力和數據創新,創建了通用的元數據搜索和發現工具DataHub。
由於背後有商業化的規劃,並且社區活躍,近兩年Datahub的更新異常活躍。也將自己的定位爲基於現代數據棧的元數據平臺。
DataHub實現了端到端的數據發現,數據可觀察性和數據治理。並且爲開發人員提供了豐富的擴展接口,其目的就是應對不斷變化的數據生態。事實證明,元數據管理就應該這樣去建設。
DataHub提供了跨數據庫、數據倉庫、數據湖、數據可視化工具的搜索與發現功能。實現端到端的全流程數據血緣的構建。DataHub是實時的元數據捕捉框架,可以實時感應元數據的變化。同時支持標籤,術語表,業務域等元數據的管理。DataHub還提供了豐富的權限支持。在最新的DataHub版本中,可以在頁面上去進行元數據的獲取操作。
DataHub支持的數據源非常豐富,如Tableai、PowerBI、Superset等數據可視化工具。
也支持Airflow、Spark、ES、Kafka、Hive、Mysql、Oracle等大數據組件的元數據的獲取。
Datahub的頁面經過最新的改版,規劃也較爲合理,美觀。
Openmatadata
OpenMetadata是一個用於數據治理的一體化平臺,可以幫助我們發現,協作,並正確的獲取數據。
OpenMetadata提供了數據發現、數據血緣、數據質量、數據探查、數據治理和團隊協作的一體化平臺。它是發展最快的開源項目之一,擁有充滿活力的社區,並被各行業垂直領域的衆多公司採用。 OpenMetadata 由基於開放元數據標準和API 的集中式元數據存儲提供支持,支持各種數據服務的連接器,可實現端到端元數據管理,讓您可以自由地釋放數據資產的價值。
官網地址:https://open-metadata.org/
源碼地址:https://github.com/open-metadata/OpenMetadata
目前標星3.4K,最新版本爲1.2.3。
主要開發語言,後端爲Java,前端爲TS。
其UI非常美觀,其操作和使用邏輯,也符合業務人員的習慣。
優缺點對比
Datahub:
優勢:
強大的數據發現和搜索功能,方便用戶快速定位所需數據。
提供數據質量元數據,幫助用戶理解和信任數據。
支持多種數據源,包括傳統的關係數據庫和現代的數據湖。
社區活躍,不斷有新功能和改進加入。
劣勢: 初學者可能會覺得界面和配置相對複雜。
在某些情況下,集成新的數據源可能需要額外的開發工作。
Atlas:
優勢:
與Apache Hadoop生態系統深度集成,特別適合Hadoop用戶。
提供強大的數據血緣和分類功能,有助於數據治理。
支持自定義的元數據類型和模型。
開源,有較大的社區支持和貢獻。
劣勢:
主要針對Hadoop生態系統,可能不適合非Hadoop環境。
用戶界面和用戶體驗不如一些商業產品。
如何選擇?
毫無疑問,從活躍度和發展趨勢來看,Datahub都是目前最炙手可熱的元數據管理平臺。Openmatadata更有數據治理、數據資產管理平臺的樣子。而Atlas和Hadoop聯繫緊密,也有自己優勢。
那麼我們該如何選擇呢?首先應該明確需求。
相信讀到這篇文章的人,大部分還是想做一個元數據管理平臺,以開展企業的數據治理工作。如果學習過DAMA的數據治理體系,我們應該知道做元數據管理要梳理好數據源都在哪,並儘可能的管理公司的全量數據。
而功能方面,是否需要數據血緣功能,術語表、標籤等功能都是需要調研的內容。那我們一步步來分析。
1、梳理數據源
數據倉庫與BI是大部分企業必備的,也是重要的元數據來源。不同企業的的搭建方式不同,前幾年可能更多的是離線數倉,多采用Hive,Spark等大數據技術搭建。近幾年數據湖技術,實時數倉技術出現,更多的企業會選擇如Hudi,Iceberg等技術,而實時數倉多采用Doris,Paimon等技術,在實時處理中,還要考慮收集Flink實時計算引擎的元數據。
而部分企業也希望將業務系統,如Oracle,Mysql等數據庫的元數據進行收集。
除此以外,還有一些業務元數據也是需要梳理的,一般通過接口、頁面都可以操作。
原生支持所有組件的元數據管理平臺是不存在的。但是好在元數據管理平臺都提供了豐富的API接口,是可以擴展的。
所以在對數據源梳理後,並結合上面元數據管理平臺的特性,可以做出基本的選擇。
如果企業需要管理的數據源主要是大數據組件,Hive和Spark爲主,可以使用Atlas快速的搭建一個元數據管理平臺,由於原生的支持,基本不需要做很多的適配,只要安裝配置好就可以。
但是如果企業收集元數據不限於此,建議選擇更靈活的Datahub和Openmetadata,反正都要做適配,做二次開發,不如直接選一個更靈活的。
2、明確需求
我們先來看看三個平臺的功能。
Altas有搜索,數據血緣,標籤,術語表等功能。
Datahub有搜索,數據血緣,數據分析,標籤,術語表等功能,也可以集成數據質量框架,如GreatExceptions。
Openmetadata有搜索,數據血緣,數據質量,數據分析,標籤,術語表功能,並且有團隊協作的功能。
如果這些能滿足公司的需要就是可以選擇的,如果不能,那麼多餘的功能就需要另外的開發了。
二開這裏簡單說一下,如果是元數據管理平臺+數據治理工具的組合,建議選擇Datahub基本可以覆蓋所有的元數據管理功能,也有很好的擴展性。
而如果想選擇一個平臺大而全,可以考慮在Openmetadata基礎上二開,畢竟支持的功能多一些。
3、可行性
雖然完事具備,但是能不能實行,其實並不一定。實現元數據管理的難度巨大。
在項目開始之前,必須要考慮實現的難度,如果不需要二開,可能只需要有經驗的技術人員或者運維人員安裝好就可以。
但是如果需要二開,則必須考慮開發難度。
Atlas後端主要爲Java,需要高級的Java開發人員進行鑽研,如需要更改頁面,也需要前端人員的配合。
Datahub後端Java和Python都有的,而核心的數據攝取部分,主要是Python爲主,熟悉Python框架的同學會更好上手。如需要更改頁面,也需要前端人員的配合。
Openmetadata後端爲Java,前端爲TS。同樣都是要有相關經驗的人員參與的。
元數據管理並不容易,我在搭建二開環境的過程中也是遇到了很大的困難,但是熟悉開源項目的源碼對於自研項目也有着非常大的幫助,沒有白走的路,越是困難收穫也會更大。
歡迎加入大數據流動,共同學習元數據管理相關知識,未完待續~