开源血缘分析工具atlas源码讲解
需求說明:公司進行血緣分析,但是沒有好用的血緣分析工具,從開源的社區(qū)找到了atlas,感覺很智能,可以自動分析sql語句,做到字段級別的拆分,回溯血緣很好用,下面就是atlas的代碼講解
sql分析器:Antlr (ANother Tool for Language Recognition) 是一個強大的跨語言語法解析器,可以用來讀取、處理、執(zhí)行或翻譯結構化文本或二進制文件。它被廣泛用來構建語言,工具和框架。Antlr可以從語法上來生成一個可以構建和遍歷解析樹的解析器。可以參考:https://www.cnblogs.com/clonen/p/9083359.html
Apache Atlas版本號:2.0.0
從官方網站下載Apache Atlas2.0.0版本源代碼,用開發(fā)工具(如IntelliJ IDEA)打開。
根目錄結構
一、3party-licenses
第三方組件許可,可以看出Atlas主要用到的第三方技術組件,絕大部分是前端技術組件,janusgraph和titan是圖數(shù)據(jù)庫組件,JanusGraph是Titan的繼承者,老版本用的是Titan,新版本是用的JanusGraph
二、addons
安裝擴展組件源代碼,主要是Atlas接入各種Hadoop元數(shù)據(jù)數(shù)據(jù)源的橋接代碼,對應Atlas架構圖中的部分:
1、falcon-bridge
falcon橋接擴展模塊,Apache Falcon是一個開源的hadoop數(shù)據(jù)生命周期管理框架, 它提供了數(shù)據(jù)源 (Feed) 的管理服務,如生命周期管理,備份,存檔到云等,通過Web UI可以很容易地配置這些預定義的策略, 能夠大大簡化hadoop集群的數(shù)據(jù)流管理。falcon-bridge主要負責將Apache Falcon元數(shù)據(jù)接入Atlas元數(shù)據(jù)管理系統(tǒng)。 bridge.FalconBridge類,提供了一系列注冊Falcon元數(shù)據(jù)實體到Atlas系統(tǒng)的橋接工具API方法
hook.FalconHook類,F(xiàn)alcon元數(shù)據(jù)通知事件鉤子處理類
這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/,或者本地文檔:docs/src/site/twiki/Hook-Falcon.twiki
2、falcon-bridge-shim
falcon橋接擴展墊片,即atlas的falcon橋接插件
3、hbase-bridge
Hbase橋接擴展模塊,通過bin目錄下的import-hbase.sh腳本導入Hbase元數(shù)據(jù)到Atlas系統(tǒng),腳本調用了橋接代碼類HBaseBridge,main方法入口。這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/,或本地文檔:docs/src/site/twiki/Hook-HBase.twiki
4、hive-bridge
hive橋接擴展模塊,通過bin目錄下的import-hive.sh腳本導入hive元數(shù)據(jù)到Atlas系統(tǒng),腳本調用了橋接代碼類HiveMetaStoreBridge,main方法入口。
這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/,或本地文檔:docs/src/site/twiki/Hook-Hive.twiki
5、kafka-bridge
Kafka橋接擴展模塊,通過bin目錄下的import-kafka.sh腳本導入hive元數(shù)據(jù)到Atlas系統(tǒng),腳本調用了橋接代碼類KafkaBridge,main方法入口。這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/HookKafka
6、models
提供Atlas各種元數(shù)據(jù)模型類型定義json文件
7、sqoop-bridge
Sqoop橋接擴展模塊,主要提供一個SqoopHook類用于在sqoop將其他數(shù)據(jù)源數(shù)據(jù)同步到hive倉庫后自動發(fā)送hive導入操作相關的元數(shù)據(jù)到Atlas系統(tǒng)。這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/
8、storm-bridge
Storm橋接擴展模塊,提供StormAtlasHook類用于將storm拓撲元數(shù)據(jù)信息通過Kafka Broker發(fā)送給Atlas系統(tǒng)進行持久化管理。這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/
三、authorization
Atlas鑒權模塊,支持Simple鑒權和Ranger鑒權兩種方式,這個模塊的詳細介紹說明和使用說明見官方文檔:http://atlas.apache.org/
四、build-tools
構建工具,主要配置Checkstyle進行代碼靜態(tài)檢查
五、client
客戶端API代碼
client-v1包:V1版本客戶端API代碼
client-v2包:V2版本客戶端API代碼,客戶端調用Atlas API接口時可以直接調用這里封裝的API接口方法,減輕代碼開發(fā)工作量
六、Common
公共模塊,主要提供啟動和停止所有服務的功能、公共配置和高可用配置管理、公共注解接口、Groovy表達式定義
七、dashboardv2
Atlas管理臺UI前端應用,對應架構圖中的Admin UI
界面展示html模板代碼在dashboardv2/public/js/templates目錄下
界面功能業(yè)務Js代碼在dashboardv2/public/js/views目錄下
從package.json中的依賴項可以看出該前端項目主要采用的jquery+requireJS+backbone架構,主要依賴項:
backbone.js:前端框架,backbone.js是一個輕量級的MVC JavaScript庫, Backbone 框架中的主要組件包括模型model、視圖view、集合collection和路由器router。
backgrid.js :基于backbone.js 用于構建語義和容易樣式化的 HTML 表格組件
jQuery:一個高效、精簡并且功能豐富的 JavaScript 工具庫。它提供的 API 易于使用且兼容眾多瀏覽器,這讓諸如 HTML 文檔遍歷和操作、事件處理、動畫和 Ajax 操作更加簡單。
RequireJS:一個JavaScript文件和模塊加載器,可視為模塊管理工具,可以提高前端代碼的加載速度和質量。項目開發(fā)構建依賴grunt-基于 Node.js 的前端項目自動構建工具
八、dev-support
開發(fā)支持,主要提供Docker部署配置,各種API操作的客戶端shell執(zhí)行腳本,樣例數(shù)據(jù)json文件
九、distro
atlas分布式部署相關的一些開發(fā)配置文件
pom.xml中提供了一些圖數(shù)據(jù)庫存儲Hbase和圖數(shù)據(jù)庫索引檢索組件solr的默認配置
zk目錄下提供了zookeeper安裝壓縮包zookeeper-3.4.6.tgz
bin目錄下提供atlas基本安裝部署的Python腳本文件,比如啟動、停止atlas服務等
conf下提供Atlas配置文件
hbase下是hbase的配置文件
solr下是solr相關的配置文件
zookeeper下是zookeeper的配置文件
另外主要有:Atlas應用配置文件atlas-application.properties、Atlas環(huán)境變量配置文件atlas-env.sh、日志配置文件atlas-log4j.xml,鑒權策略配置文件atlas-simple-authz-policy.json、用戶認證配置文件users-credentials.properties
main/assemblies目錄下是打包相關的描述符配置文件
十、docs
Atlas官方文檔,跟官方網站上的在線文檔一致,官方文檔地址:http://atlas.apache.org/
十一、graphdb
圖數(shù)據(jù)庫模塊,大致對應架構圖中的如下部分:
api:圖數(shù)據(jù)庫API,主要提供Atlas從圖數(shù)據(jù)庫操作元數(shù)據(jù)的API接口
common:圖數(shù)據(jù)庫公共代碼,主要是Tinkerpop圖數(shù)據(jù)庫和圖計算框架,主要提供了圖數(shù)據(jù)庫查詢表達式和查詢接口
graphdb-impls:Atlas圖數(shù)據(jù)庫實現(xiàn)依賴,無源代碼
janus:JanusGraph圖數(shù)據(jù)庫實現(xiàn)模塊
graphson:主要提供GraphSON格式數(shù)據(jù)操作實用工具方法,主要工具方法和業(yè)務代碼在AtlasGraphSONUtility類中,提供唯一的公共靜態(tài)API方法:jsonFromElement,用于將圖元素對象轉化成json格式的GraphSON對象
migration包:數(shù)據(jù)遷移相關的代碼包,主類是GraphDBGraphSONMigrator,用于導入舊數(shù)據(jù),入口方法:importData
query包:查詢相關的代碼包,主要提供圖計算查詢構造器AtlasJanusGraphQuery
serializer包:序列化相關的的代碼包,提供幾種數(shù)據(jù)類型的序列化實現(xiàn)
另外是一些圖數(shù)據(jù)庫操作相關的類janus-hbase2:JanusGraph圖數(shù)據(jù)庫HBase存儲管理模塊
十二、intg
Atlas集成模塊,對應架構圖中的:
entitytransform包:實體轉化處理相關的代碼,主要關注幾個hive和hdfs實體處理的Handler類
listener包:提供2個監(jiān)聽器接口定義,Atlas元數(shù)據(jù)實體變更通知監(jiān)聽接口和類型變更監(jiān)聽接口
model包:提供各種模型定義
pc包:提供WorkItem作業(yè)條目管理
security包:提供安全相關的配置管理
store:提供Atlas類型定義持久化存儲接口
type包:提供各種Atlas類型定義以及類型操作的實用工具靜態(tài)API方法
utils包:提供Atlas實體處理的實用工具靜態(tài)API方法、Kerberos認證的實用工具靜態(tài)API方法
v1:提供V1版本的模型定義和類型操作API方法
ApplicationProperties和AtlasConfiguration提供Atlas屬性參數(shù)管理
十三、notification
提供基于kafka的消息通知處理,包括一些鉤子消息的處理,對應架構圖中的Messaging<kafka>,參考官方文檔:http://atlas.apache.org/Notifications
十四、plugin-classloader
Atlas插件類加載器,用于加載Atlas插件類
十五、repository
Atlas元數(shù)據(jù)倉庫管理模塊,大致對應架構圖中的如下部分:
discovery:提供元數(shù)據(jù)搜索、檢索相關的服務
glossary:提供元數(shù)據(jù)術語相關的操作服務
query:提供基于Gremlin圖遍歷語言和DSL(Domain Specific Search)語言的元數(shù)據(jù)查詢服務
repository: Atlas元數(shù)據(jù)倉庫核心服務
audit :提供元數(shù)據(jù)倉庫操作日志審計功能
converters:Atlas各種數(shù)據(jù)類型格式轉換處理
graph:提供圖數(shù)據(jù)庫服務
impexp:元數(shù)據(jù)導入導出處理
migration:數(shù)據(jù)遷移服務
ogm:各種數(shù)據(jù)傳輸對象DTO定義
patches:補丁管理服務
store:Atlas元數(shù)據(jù)存儲訪問服務層
userprofile:用戶Profile服務services:提供統(tǒng)計度量服務
util:提供實用工具API
GraphTransactionAdvisor圖事務切面,GraphTransactionInterceptor圖事務攔截器
十六、server-api
Atlas服務器相關API,給其他模塊引用
十七、test-tools
測試工具模塊,提供本地solr運行器,用于solr服務測試
十八:tools
工具模塊,提供Atlas索引修復工具、HDP-2.6.x版本元數(shù)據(jù)導出Python腳本、classification
分類修改處理代碼和shell腳本
十九、webapp
Atlas Web應用模塊,對應架構圖中的API<HTTP/REST>
web應用需要登錄,登錄頁面為login.jsp
跟管理臺UI前端模塊結合使用,登錄js在前端模塊,登錄成功后進入前端模塊功能界面,前端調用webapp提供的API接口
examples包:提供快速測試樣例,用來測試web API接口
notification包:通知消息處理,Atlas實體變更通知處理、kafka通道鉤子消息監(jiān)聽處理
util包提供唯一類CredentialProviderUtility,用于安全認證處理
web包:主要提供Rest API接口
dao.UserDao用戶登錄處理數(shù)據(jù)訪問層實現(xiàn)
errors:異常錯誤處理
filters:過濾器,主要是登錄認證的過濾器,提供SSO登錄、CSRF攻防、訪問審計日志等功能
listeners.LoginProcessor:用戶登錄處理,包括簡單登錄處理和kerberos認證登錄處理
model.User用戶屬性定義
params:參數(shù)類型定義
resources.AdminResource:管理API資源服務,提供獲取系統(tǒng)線程Dump、版本信息、服務狀態(tài)、會話信息、性能度量信息、元數(shù)據(jù)導入導出、集群服務器信息等API接口
rest包:提供Rest API接口
DiscoveryREST:提供元數(shù)據(jù)搜索相關的REST API接口,支持DSL查詢或全文檢索查詢
EntityREST:提供Atlas元數(shù)據(jù)實體增刪改查操作相關的REST API接口
GlossaryREST:提供Atlas術語增刪改查操作相關的REST API接口
LineageREST:提供獲取Atlas元數(shù)據(jù)實體的血統(tǒng)圖REST API接口
RelationshipREST:提供Atlas元數(shù)據(jù)關聯(lián)關系增刪改查操作相關的REST API接口
TypesREST:提供Atlas元數(shù)據(jù)類型增刪改查操作相關的REST API接口security包:提供安全相關的處理服務
service包:基礎服務包
setup包:web容器啟動初始化自動裝配服務,提供KerberosAwareListener監(jiān)聽類用于自動裝配Kerberos登錄服務
util包:實用工具包Atlas類:Atlas單機部署啟動服務驅動類,通過distro模塊Python腳本atlas_start.py調用,通過內嵌的jetty服務器獨立運行Atlas元數(shù)據(jù)服務系統(tǒng)
總結
以上是生活随笔為你收集整理的开源血缘分析工具atlas源码讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 在windows中安装问题
- 下一篇: 如何在Windows、Linux中获取主