天天看點

資料治理之中繼資料管理的利器——Atlas入門寶典

随着數字化轉型的工作推進,資料治理的工作已經被越來越多的公司提上了日程。作為Hadoop生态最緊密的中繼資料管理與發現工具,Atlas在其中扮演着重要的位置。但是其官方文檔不是很豐富,也不夠詳細。是以整理了這份文檔供大家學習使用。

本文檔基于Atlas2.1.0版本,整理自部分官網内容,各種部落格及實踐過程。文章較長,建議收藏。新版本的文檔請關注公衆号 大資料流動,會持續的更新~

本文檔共分為8個部分,層級結構如下圖所示。

文檔版權為公衆号 大資料流動 所有,請勿商用。相關技術問題以及安裝包可以聯系筆者獨孤風加入相關技術交流群讨論擷取。

為什麼要做資料治理? 業務繁多,資料繁多,業務資料不斷疊代。人員流動,文檔不全,邏輯不清楚,對于資料很難直覺了解,後期很難維護。

在大資料研發中,原始資料就有着非常多的資料庫,資料表。

而經過資料的聚合以後,又會有很多的次元表。

近幾年來資料的量級在瘋狂的增長,由此帶來了系列的問題。作為對人工智能團隊的資料支撐,我們聽到的最多的質疑是 “正确的資料集”,他們需要正确的資料用于他們的分析。我們開始意識到,雖然我們建構了高度可擴充的資料存儲,實時計算等等能力,但是我們的團隊仍然在浪費時間尋找合适的資料集來進行分析。

也就是我們缺乏對資料資産的管理。事實上,有很多公司都提供了開源的解決方案來解決上述問題,這也就是資料發現與中繼資料管理工具。

簡單地說,中繼資料管理是為了對資料資産進行有效的組織。它使用中繼資料來幫助管理他們的資料。它還可以幫助資料專業人員收集、組織、通路和豐富中繼資料,以支援資料治理。

三十年前,資料資産可能是 Oracle 資料庫中的一張表。然而,在現代企業中,我們擁有一系列令人眼花缭亂的不同類型的資料資産。可能是關系資料庫或 NoSQL 存儲中的表、實時流資料、 AI 系統中的功能、名額平台中的名額,資料可視化工具中的儀表闆。

現代中繼資料管理應包含所有這些類型的資料資産,并使資料工作者能夠更高效地使用這些資産完成工作。

是以,中繼資料管理應具備的功能如下:

搜尋和發現:資料表、字段、标簽、使用資訊

通路控制:通路控制組、使用者、政策

資料血緣:管道執行、查詢

合規性:資料隐私/合規性注釋類型的分類

資料管理:資料源配置、攝取配置、保留配置、資料清除政策

AI 可解釋性、再現性:特征定義、模型定義、訓練運作執行、問題陳述

資料操作:管道執行、處理的資料分區、資料統計

資料品質:資料品質規則定義、規則執行結果、資料統計

下面介紹中繼資料管理的架構實作,不同的架構都對應了不同的開源實作。

下圖描述了第一代中繼資料架構。它通常是一個經典的單體前端(可能是一個 Flask 應用程式),連接配接到主要存儲進行查詢(通常是 MySQL/Postgres),一個用于提供搜尋查詢的搜尋索引(通常是 Elasticsearch),并且對于這種架構的第 1.5 代,也許一旦達到關系資料庫的“遞歸查詢”限制,就使用了處理譜系(通常是 Neo4j)圖形查詢的圖形索引。

很快,第二代的架構出現了。單體應用程式已拆分為位于中繼資料存儲資料庫前面的服務。該服務提供了一個 API,允許使用推送機制将中繼資料寫入系統。

第三代架構是基于事件的中繼資料管理架構,客戶可以根據他們的需要以不同的方式與中繼資料資料庫互動。

中繼資料的低延遲查找、對中繼資料屬性進行全文和排名搜尋的能力、對中繼資料關系的圖形查詢以及全掃描和分析能力。

Apache Atlas 就是采用的這種架構,并且與Hadoop 生态系統緊密耦合。

下圖是當今中繼資料格局的簡單直覺表示:

(包含部分非開源方案)

其他方案可作為調研的主要方向,但不是本文讨論的重點。

在當今大資料的應用越來越廣泛的情況下,資料治理一直是企業面臨的巨大問題。

大部分公司隻是單純的對資料進行了處理,而資料的血緣,分類等等卻很難實作,市場上也急需要一個專注于資料治理的技術架構,這時Atlas應運而生。

Atlas官網位址:https://atlas.apache.org/

Atlas是Hadoop的資料治理和中繼資料架構。

Atlas是一組可擴充和可擴充的核心基礎治理服務,使企業能夠有效,高效地滿足Hadoop中的合規性要求,并允許與整個企業資料生态系統內建。

Apache Atlas為組織提供了開放的中繼資料管理和治理功能,以建立其資料資産的目錄,對這些資産進行分類和治理,并為資料科學家,分析師和資料治理團隊提供圍繞這些資料資産的協作功能。

如果想要對這些資料做好管理,光用文字、文檔等東西是不夠的,必須用圖。Atlas就是把中繼資料變成圖的工具。

http://atlas.apache.org/

Atlas支援各種Hadoop和非Hadoop中繼資料類型

提供了豐富的REST API進行內建

對資料血緣的追溯達到了字段級别,這種技術還沒有其實類似架構可以實作

對權限也有很好的控制

Atlas包括以下元件:

采用Hbase存儲中繼資料

采用Solr實作索引

Ingest/Export 采集導出元件 Type System類型系統 Graph Engine圖形引擎 共同構成Atlas的核心機制

所有功能通過API向使用者提供,也可以通過Kafka消息系統進行內建

Atlas支援各種源擷取中繼資料:Hive,Sqoop,Storm。。。

還有優秀的UI支援

Atlas架構圖如下:

Atlas核心包含以下元件:

類型(Type)系統: Atlas允許使用者為他們想要管理的中繼資料對象定義模型。該模型由稱為“類型”的定義組成。稱為“實體”的“類型”執行個體表示受管理的實際中繼資料對象。 Type System是一個允許使用者定義和管理類型和實體的元件。開箱即用的Atlas管理的所有中繼資料對象(例如Hive表)都使用類型模組化并表示為實體。要在Atlas中存儲新類型的中繼資料,需要了解類型系統元件的概念。

需要注意的一個關鍵點是Atlas中模組化的一般特性允許資料管理者和內建商定義技術中繼資料和業務中繼資料。也可以使用Atlas的功能定義兩者之間的豐富關系。

圖形引擎: Atlas在内部使用Graph模型持久儲存它管理的中繼資料對象。這種方法提供了很大的靈活性,可以有效地進行中繼資料對象之間的豐富關系。圖形引擎元件負責在Atlas類型系統的類型和實體之間進行轉換,以及底層圖形持久性模型。除了管理圖形對象之外,圖形引擎還為中繼資料對象建立适當的索引,以便可以有效地搜尋它們。 Atlas使用JanusGraph存儲中繼資料對象。

采集/導出:采集元件允許将中繼資料添加到Atlas。同樣,“導出”元件将Atlas檢測到的中繼資料更改公開為事件。消費者可以使用這些更改事件來實時響應中繼資料的變更。

在Atlas中,使用者可以使用以下的兩種方式管理中繼資料:

API: Atlas的所有功能都通過REST API向最終使用者暴露,該API允許建立,更新和删除類型和實體。它也是查詢和發現Atlas管理的類型和實體的主要機制。

Messaging: 除了API之外,使用者還可以選擇使用基于Kafka的消息傳遞接口與Atlas內建。這對于将中繼資料對象傳遞到Atlas以及使用Atlas使用可以建構應用程式的中繼資料更改事件都很有用。如果希望使用與Atlas更松散耦合的內建來實作更好的可伸縮性,可靠性等,則消息傳遞接口特别有用.Atlas使用Apache Kafka作為通知伺服器,用于鈎子和中繼資料通知事件的下遊消費者之間的通信。事件由鈎子和Atlas寫入不同的Kafka主題。

Atlas支援開箱即用的多種中繼資料源內建。未來還将增加更多內建。目前,Atlas支援從以下來源提取和管理中繼資料:

HBase

Hive

Sqoop

Storm

Kafka

內建意味着兩件事:Atlas定義的中繼資料模型用于表示這些元件的對象。 Atlas提供了從這些元件中攝取中繼資料對象的元件(在某些情況下實時或以批處理模式)。

Atlas管理的中繼資料被各種應用程式使用,以滿足許多治理需求。

Atlas Admin UI: 該元件是一個基于Web的應用程式,允許資料管理者和科學家發現和注釋中繼資料。這裡最重要的是搜尋界面和類似SQL的查詢語言,可用于查詢Atlas管理的中繼資料類型和對象。 Admin UI使用Atlas的REST API來建構其功能。

Tag Based Policies:Apache Ranger是Hadoop生态系統的進階安全管了解決方案,可與各種Hadoop元件進行廣泛內建。通過與Atlas內建,Ranger允許安全管理者定義中繼資料驅動的安全政策以實作有效的治理。 Ranger是Atlas通知的中繼資料更改事件的使用者。

Atlas的安裝坑較多。本教程将詳細介紹Atlas2.1.0整個安裝過程。

比較難受的是 ,Atlas不提供安裝包,下載下傳的是源碼包 ,需要自行編譯打包。

請前往官網 https://atlas.apache.org/#/Downloads

下載下傳對應版本的源碼包 本文使用的是 2.1.0版本

國内站點 速度要快一些

https://mirrors.tuna.tsinghua.edu.cn/apache/atlas/2.1.0/apache-atlas-2.1.0-sources.tar.gz

注意,需要先安裝maven,因為這是使用maven開發的java web工程。maven3.6.3版本即可

一些下載下傳位址

http://maven.apache.org/download.cgi

https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

上傳到linux的/usr/local目錄

解壓檔案

配置環境變量

重新整理環境變量

檢查版本

配置好maven的環境變量

注意國内需要配置好maven的國内鏡像,一般使用阿裡,華為,清華等鏡像

vi /usr/local/apache-maven-3.6.3/conf/settings.xml

把這個setting.xml 拷貝到 ~/.m2/

cp settings.xml .m2/

解壓源碼包

将hbase zookeeper hive等依賴的版本修改成自己環境中一緻的版本(或者相容的版本)

atlas可以使用内嵌的hbase-solr作為底層索引存儲和搜尋元件,也可以使用外置的hbase和solr

如果要使用内嵌的hbase-solr,則使用如下指令進行編譯打包

cd apache-atlas-sources-2.1.0/

export MAVEN_OPTS="-Xms2g -Xmx2g"

mvn clean -DskipTests package -Pdist,embedded-hbase-solr

不用内置就這樣 mvn clean -DskipTests package -Pdist

改完路徑還會非常快的 耐心等待

atlas的webui子子產品中依賴了nodejs,會從nodejs的中央倉庫去下載下傳相關依賴庫

編譯完成之後,會産生打包結果,所在位置是:源碼目錄中的新出現的distro/target目錄

注意,這裡産出的有壓縮包也有解壓後的包。這裡面的hook包,可以看到有各種平台的hook包。

顧名思義,這就是鈎子包,也就是各個大資料架構會提供各種生命周期回調函數,并且将相關資訊以資料方式提供出來。這些鈎子就可以去監聽和接收資料

如果沒有錯誤 并看到一排success就是成功了

在完成Atlas編譯以後,就可以進行Atlas的安裝了。Atlas的安裝主要是安裝Atlas的Server端,也就Atlas的管理頁面,并確定Atlas與Kafka Hbase Solr等元件的內建。

Atlas的系統架構如下,在確定 底層存儲與UI界面正常後,之後就可以進行與Hive等元件的內建調試了。

在確定 底層存儲與UI界面正常後,之後就可以進行與Hive等元件的內建調試了。

1、環境準備

安裝之前 先要準備好

JDK1.8

Zookeeper

Hbase

Solr

在啟動Atlas時會配置這些環境變量的位址,是以一定要確定以上元件正常運作。

由于在編譯時可以選擇内部內建,是以這些Atlas是可以自帶的,但是JDK一定要安裝好。

在安裝Altas中,需要Solr 預先建立好collection

在solr中驗證建立成功。

2、安裝Atlas

到編譯好的包的路徑下 apache-atlas-sources-2.1.0/distro/target

将生成好的安裝包 apache-atlas-2.1.0-server.tar.gz 拷貝到目标路徑下。

解壓:

3、修改配置

進入conf目錄下:

在此指定JAVA_HOME和是否要用内嵌啟動

如果使用内嵌,那麼配置結束,直接去 啟動Atlas

但是大部分時候,需要使用已經有的元件進行內建,是以設定為false。

修改其他配置

這裡就是設定Hbase Solr等配置

啟動成功後通路:

http://slave01:21000

admin/admin登入

Atlas的頁面功能非常的豐富,可以進行中繼資料的管理及資料血緣的展示。

基本搜尋允許您使用實體的類型名稱,關聯的分類/标記進行查詢,并且支援對實體屬性以及分類/标記屬性進行過濾。

可以使用 AND/OR 條件對多個屬性進行基于屬性的過濾。

資料治理之中繼資料管理的利器——Atlas入門寶典
資料治理之中繼資料管理的利器——Atlas入門寶典
資料治理之中繼資料管理的利器——Atlas入門寶典

支援的過濾運算符

LT(符号:<, lt)适用于數字、日期屬性

GT(符号:>、gt)适用于數字、日期屬性

LTE(符号:<=, lte)适用于數字、日期屬性

GTE(符号:>=,gte)适用于數字、日期屬性

EQ(符号:eq、=)适用于數字、日期、字元串屬性

NEQ(符号:neq、!=)适用于數字、日期、字元串屬性

LIKE(符号:like、LIKE)與字元串屬性一起使用

STARTS_WITH(符号:startsWith、STARTSWITH)與字元串屬性一起使用

ENDS_WITH(符号:endsWith、ENDSWITH)與字元串屬性一起使用

CONTAINS (symbols: contains, CONTAINS) 使用 String 屬性

Atlas 中的進階搜尋也稱為基于 DSL 的搜尋。

領域特定搜尋 (DSL) 是一種結構簡單的語言,該文法模拟了關系資料庫流行的結構化查詢語言 (SQL)。

具體文法請參考Github上的Atlas DSL Grammer (Antlr G4格式)。

例:要檢索名稱可以是 time_dim 或 customer_dim 的 Table 類型的實體:

分類傳播使與實體相關聯的分類能夠自動與該實體的其他相關實體相關聯。這在處理資料集從其他資料集派生資料的場景時非常有用 。

資料治理之中繼資料管理的利器——Atlas入門寶典

為實體添加分類

将分類“PII”添加到“hdfs_path”實體後,該分類将傳播到沿襲路徑中的所有受影響實體,包括“員工”表、視圖“us_employees”和“uk_employees” - 如下所示。

資料治理之中繼資料管理的利器——Atlas入門寶典

更新與實體關聯的分類

與實體關聯的分類的任何更新也将在分類傳播到的所有實體中看到。

資料治理之中繼資料管理的利器——Atlas入門寶典

簡單的說,此功能可以監控資料到底流向了哪裡。

詞彙表,也稱術語表為業務使用者提供适當的詞彙表,它允許術語(詞)互相關聯并分類,以便在不同的上下文中了解它們。然後可以将這些術語映射到資料庫、表、列等資産。這有助于抽象與存儲庫相關的技術術語,并允許使用者發現/使用他們更熟悉的詞彙表中的資料。

資料治理之中繼資料管理的利器——Atlas入門寶典

通過單擊詞彙表 UI 中的術語名稱,可以檢視術語的各種詳細資訊。詳細資訊頁面下的每個頁籤提供該術語的不同詳細資訊。

資料治理之中繼資料管理的利器——Atlas入門寶典

當切換開關在類别上時,面闆将列出所有詞彙表以及類别層次結構。這是此視圖下可能的互動的清單。

資料治理之中繼資料管理的利器——Atlas入門寶典

如果一個術語具有分類,則該實體已被配置設定繼承相同的分類。

資料治理之中繼資料管理的利器——Atlas入門寶典

通過術語表的功能,讓資料資産與業務系統建立了聯系。

Atlas與Hive存在相容性問題,本文基于Atlas2.1.0相容CDH6.3.2部署。Hive版本為2.1.1.其他版本的問題不在此文檔讨論。

為相容Hive2.1.1,需要修改源碼重新編譯。

所需修改的項目位置:<code>apache-atlas-sources-2.1.0\addons\hive-bridge</code>

①.org/apache/atlas/hive/bridge/HiveMetaStoreBridge.java 577行

改為:

②.org/apache/atlas/hive/hook/AtlasHiveHookContext.java 81行

改為:C:\Users\Heaton\Desktop\apache-atlas-2.1.0-sources\apache-atlas-sources-2.1.0\addons

将 atlas-application.properties 配置檔案,壓縮加入到 atlas-plugin-classloader-2.0.0.jar 中

修改 hive-site.xml

資料治理之中繼資料管理的利器——Atlas入門寶典

修改 hive-env.sh 的 Gateway 用戶端環境進階配置代碼段(安全閥)

資料治理之中繼資料管理的利器——Atlas入門寶典

修改 HIVE_AUX_JARS_PATH

資料治理之中繼資料管理的利器——Atlas入門寶典

修改 hive-site.xml 的 HiveServer2 進階配置代碼段(安全閥)

資料治理之中繼資料管理的利器——Atlas入門寶典

修改 HiveServer2 環境進階配置代碼段

資料治理之中繼資料管理的利器——Atlas入門寶典

需要将配置好的Atlas包發往各個hive節點後重新開機叢集。

執行atlas腳本

登入Atlas檢視中繼資料資訊。

簡單執行一個hera資源統計的hive腳本

執行後檢視 qs_tzl_ProductTag_result 的表級血緣為

資料治理之中繼資料管理的利器——Atlas入門寶典

pid 的字段血緣為

資料治理之中繼資料管理的利器——Atlas入門寶典

<code>atlas</code> 官方文檔中并不支援 <code>spark sql</code> 的解析,需要使用第三方的包。

位址: https://github.com/hortonworks-spark/spark-atlas-connector

一、git clone 後本地進行打包

mvn package -DskipTests

二、打包後在 spark-atlas-connector/spark-atlas-connector-assembly/target 目錄有一個 spark-atlas-connector-assembly-${version}.jar 的 jar,将該 jar 上傳到伺服器。

需要注意的是不要上傳 spark-atlas-connector/spark-atlas-connector/target 這個目錄内的 jar ,缺少相關依賴包

三、将 spark-atlas-connector-assembly-${version}.jar 放到一個固定目錄 比如/opt/resource

首先進入spark-sql client

執行後,檢視 <code>ads_hera_task_mem_top_10</code> 表級血緣

資料治理之中繼資料管理的利器——Atlas入門寶典

注意此包不支援 <code>spark</code> 字段的支援。

如果需要spark字段的支援,一種是spark代碼轉成hive跑一遍,一種就是需要自研了。

atlas雖好,但是很多場景依然無法滿足我們的需要。這時候就不得不做一些改動了。二次開發有兩種方式一種是基于Atlas Api的開發,一種是修改源碼。

http://atlas.apache.org/api/v2/index.html

DiscoveryREST

LineageREST

EntityREST

RelationshipREST

TypesREST

GlossaryREST

啟動HBase和solr

由于在<code>Atlas</code>需要使用到<code>HBase</code>以及<code>slor</code>。友善調試可以解壓之前編譯好内置<code>HBase和sole</code>的tar。

檔案補充

建立檔案夾将,atlas所需要的檔案拷貝過去。

将編譯内置HBase以及solr源碼目錄distro/target/conf下的檔案拷貝到上述的上圖的conf目錄。

将源碼中addons/models下所有的檔案拷貝過去。

将源碼中的atlas/webapp/target中的内容全部拷貝到webapp目錄中。

源碼啟動

将clone下來的源碼導入到IDEA中。配置啟動參數:

附錄:

參考文章:

https://blog.csdn.net/su20145104009/article/details/108253556

https://www.cnblogs.com/ttzzyy/p/14143508.html

本文檔為Atlas入門寶典,介紹了Atlas基本的一些使用,部分進階功能還在調研與摸索中。包括Atlas與spark,flink的更深入整合,以及與資料湖的內建。也歡迎對資料治理,中繼資料管理,Atlas感興趣的朋友加入學習群進行讨論交流~

資料治理之中繼資料管理的利器——Atlas入門寶典
資料治理之中繼資料管理的利器——Atlas入門寶典

如二維碼過期請聯系公衆号大資料流動 作者 獨孤風,備注資料治理,申請入群~

大資料流動 專注于大資料實時計算,資料治理,資料可視化等技術分享與實踐。

請在背景回複關鍵字下載下傳相關資料。相關學習交流群已經成立,歡迎加入~