开源⾎缘分析⼯具atlas源码讲解
需求说明:公司进⾏⾎缘分析,但是没有好⽤的⾎缘分析⼯具,从开源的社区到了atlas,感觉很智能,可以⾃动分析sql语句,做到字段级别的拆分,回溯⾎缘很好⽤,下⾯就是atlas的代码讲解
sql分析器:Antlr (ANother Tool for Language Recognition) 是⼀个强⼤的跨语⾔语法解析器,可以⽤来读取、处理、执⾏或翻译结构化⽂本或⼆进制⽂件。它被⼴泛⽤来构建语⾔,⼯具和框架。Antlr可以从语法上来⽣成⼀个可以构建和遍历解析树的解析器。可以参考:Apache Atlas版本号:2.0.0
从官⽅⽹站下载Apache Atlas2.0.0版本源代码,⽤开发⼯具(如IntelliJ IDEA)打开。
根⽬录结构
⼀、3party-licenses
第三⽅组件许可,可以看出Atlas主要⽤到的第三⽅技术组件,绝⼤部分是前端技术组件,janusgraph和titan是图数据库组
件,JanusGraph是Titan的继承者,⽼版本⽤的是Titan,新版本是⽤的JanusGraphjquery源码在线
⼆、addons
安装扩展组件源代码,主要是Atlas接⼊各种Hadoop元数据数据源的桥接代码,对应Atlas架构图中的部分:
1、falcon-bridge
falcon桥接扩展模块,Apache Falcon是⼀个开源的hadoop数据⽣命周期管理框架, 它提供了数据源 (Feed) 的管理服务,如⽣命周期管理,备份,存档到云等,通过Web UI可以很容易地配置这些预定义的策略, 能够⼤⼤简化hadoop集的数据流管理。falcon-bridge主要负责将Apache Falcon元数据接⼊Atlas元数据管理系统。
bridge.FalconBridge类,提供了⼀系列注册Falcon元数据实体到Atlas系统的桥接⼯具API⽅法
hook.FalconHook类,Falcon元数据通知事件钩⼦处理类
这个模块的详细介绍说明和使⽤说明见官⽅⽂档:,或者本地⽂档:docs/src/site/twiki/Hook-Falcon.twiki
2、falcon-bridge-shim
falcon桥接扩展垫⽚,即atlas的falcon桥接插件
3、hbase-bridge
Hbase桥接扩展模块,通过bin⽬录下的import-hbase.sh脚本导⼊Hbase元数据到Atlas系统,脚本调⽤了桥接代码类HBaseBridge,main⽅法⼊⼝。这个模块的详细介绍说明和使⽤说明见官⽅⽂档:,或本地⽂档:docs/src/site/twiki/Hook-HBase.twiki
4、hive-bridge
hive桥接扩展模块,通过bin⽬录下的import-hive.sh脚本导⼊hive元数据到Atlas系统,脚本调⽤了桥接代码类HiveMetaStoreBridge,main⽅法⼊⼝。
这个模块的详细介绍说明和使⽤说明见官⽅⽂档:,或本地⽂档:docs/src/site/twiki/Hook-Hive.twiki
5、kafka-bridge
Kafka桥接扩展模块,通过bin⽬录下的import-kafka.sh脚本导⼊hive元数据到Atlas系统,脚本调⽤了桥接代码类KafkaBridge,main⽅法⼊⼝。这个模块的详细介绍说明和使⽤说明见官⽅⽂档:
6、models
提供Atlas各种元数据模型类型定义json⽂件
7、sqoop-bridge
Sqoop桥接扩展模块,主要提供⼀个SqoopHook类⽤于在sqoop将其他数据源数据同步到hive仓库后⾃动发送hive导⼊操作相关的元数据到Atlas系统。这个模块的详细介绍说明和使⽤说明见官⽅⽂档:
8、storm-bridge
Storm桥接扩展模块,提供StormAtlasHook类⽤于将storm拓扑元数据信息通过Kafka Broker发送给Atlas系统进⾏持久化管理。这个模块的详细介绍说明和使⽤说明见官⽅⽂档:
三、authorization
Atlas鉴权模块,⽀持Simple鉴权和Ranger鉴权两种⽅式,这个模块的详细介绍说明和使⽤说明见官⽅⽂档:
四、build-tools
构建⼯具,主要配置Checkstyle进⾏代码静态检查
五、client
客户端API代码
client-v1包:V1版本客户端API代码
client-v2包:V2版本客户端API代码,客户端调⽤Atlas API接⼝时可以直接调⽤这⾥封装的API接⼝⽅法,减轻代码开发⼯作量
六、Common
公共模块,主要提供启动和停⽌所有服务的功能、公共配置和⾼可⽤配置管理、公共注解接⼝、Groovy表达式定义
七、dashboardv2
Atlas管理台UI前端应⽤,对应架构图中的Admin UI
界⾯展⽰html模板代码在dashboardv2/public/js/templates⽬录下
界⾯功能业务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⽂件和模块加载器,可视为模块管理⼯具,可以提⾼前端代码的加载速度和质量。
项⽬开发构建依赖grunt-基于 Node.js 的前端项⽬⾃动构建⼯具
⼋、dev-support
开发⽀持,主要提供Docker部署配置,各种API操作的客户端shell执⾏脚本,样例数据json⽂件
九、distro
atlas分布式部署相关的⼀些开发配置⽂件
zk⽬录下提供了zookeeper安装压缩包zookeeper-3.
bin⽬录下提供atlas基本安装部署的Python脚本⽂件,⽐如启动、停⽌atlas服务等
conf下提供Atlas配置⽂件
hbase下是hbase的配置⽂件
solr下是solr相关的配置⽂件
zookeeper下是zookeeper的配置⽂件
另外主要有:Atlas应⽤配置⽂件atlas-application.properties、Atlas环境变量配置⽂件atlas-env.sh、⽇志配置⽂件l,鉴权策略配置⽂件atlas-simple-authz-policy.json、⽤户认证配置⽂件users-credentials.properties
main/assemblies⽬录下是打包相关的描述符配置⽂件
⼗、docs
Atlas官⽅⽂档,跟官⽅⽹站上的在线⽂档⼀致,官⽅⽂档地址:
⼗⼀、graphdb
图数据库模块,⼤致对应架构图中的如下部分:
api:图数据库API,主要提供Atlas从图数据库操作元数据的API接⼝
common:图数据库公共代码,主要是Tinkerpop图数据库和图计算框架,主要提供了图数据库查询表达式和查询接⼝
graphdb-impls:Atlas图数据库实现依赖,⽆源代码
janus:JanusGraph图数据库实现模块
graphson:主要提供GraphSON格式数据操作实⽤⼯具⽅法,主要⼯具⽅法和业务代码在AtlasGraphSONUtility类中,提供唯⼀的公共静态API⽅法:jsonFromElement,⽤于将图元素对象转化成json格式的GraphSON对象
migration包:数据迁移相关的代码包,主类是GraphDBGraphSONMigrator,⽤于导⼊旧数据,⼊⼝⽅法:importData query包:查询相关的代码包,主要提供图计算查询构造器AtlasJanusGraphQuery
serializer包:序列化相关的的代码包,提供⼏种数据类型的序列化实现
另外是⼀些图数据库操作相关的类
janus-hbase2:JanusGraph图数据库HBase存储管理模块
⼗⼆、intg
Atlas集成模块,对应架构图中的:
entitytransform包:实体转化处理相关的代码,主要关注⼏个hive和hdfs实体处理的Handler类
listener包:提供2个接⼝定义,Atlas元数据实体变更通知监听接⼝和类型变更监听接⼝
model包:提供各种模型定义
pc包:提供WorkItem作业条⽬管理
security包:提供安全相关的配置管理
store:提供Atlas类型定义持久化存储接⼝
type包:提供各种Atlas类型定义以及类型操作的实⽤⼯具静态API⽅法
utils包:提供Atlas实体处理的实⽤⼯具静态API⽅法、Kerberos认证的实⽤⼯具静态API⽅法
v1:提供V1版本的模型定义和类型操作API⽅法
ApplicationProperties和AtlasConfiguration提供Atlas属性参数管理
⼗三、notification
提供基于kafka的消息通知处理,包括⼀些钩⼦消息的处理,对应架构图中的Messaging<kafka>,参考官⽅⽂档:
⼗四、plugin-classloader
Atlas插件类加载器,⽤于加载Atlas插件类
⼗五、repository
Atlas元数据仓库管理模块,⼤致对应架构图中的如下部分:
discovery:提供元数据搜索、检索相关的服务
glossary:提供元数据术语相关的操作服务
query:提供基于Gremlin图遍历语⾔和DSL(Domain Specific Search)语⾔的元数据查询服务
repository: Atlas元数据仓库核⼼服务
audit :提供元数据仓库操作⽇志审计功能
converters:Atlas各种数据类型格式转换处理
graph:提供图数据库服务
impexp:元数据导⼊导出处理
migration:数据迁移服务
ogm:各种数据传输对象DTO定义
patches:补丁管理服务
store:Atlas元数据存储访问服务层
userprofile:⽤户Profile服务
services:提供统计度量服务
util:提供实⽤⼯具API
GraphTransactionAdvisor图事务切⾯,GraphTransactionInterceptor图事务
⼗六、server-api
Atlas服务器相关API,给其他模块引⽤
⼗七、test-tools
测试⼯具模块,提供本地solr运⾏器,⽤于solr服务测试
⼗⼋:tools
⼯具模块,提供Atlas索引修复⼯具、HDP-2.6.x版本元数据导出Python脚本、classification
分类修改处理代码和shell脚本
⼗九、webapp
Atlas Web应⽤模块,对应架构图中的API<HTTP/REST>
web应⽤需要登录,登录页⾯为login.jsp
跟管理台UI前端模块结合使⽤,登录js在前端模块,登录成功后进⼊前端模块功能界⾯,前端调⽤webapp提供的API接⼝
examples包:提供快速测试样例,⽤来测试web API接⼝
notification包:通知消息处理,Atlas实体变更通知处理、kafka通道钩⼦消息监听处理
util包提供唯⼀类CredentialProviderUtility,⽤于安全认证处理
web包:主要提供Rest API接⼝
dao.UserDao⽤户登录处理数据访问层实现
errors:异常错误处理
filters:过滤器,主要是登录认证的过滤器,提供SSO登录、CSRF攻防、访问审计⽇志等功能
listeners.LoginProcessor:⽤户登录处理,包括简单登录处理和kerberos认证登录处理
model.User⽤户属性定义
params:参数类型定义
resources.AdminResource:管理API资源服务,提供获取系统线程Dump、版本信息、服务状态、会话信息、性能度量信息、元数据导⼊导出、集服务器信息等API接⼝
rest包:提供Rest API接⼝
DiscoveryREST:提供元数据搜索相关的REST API接⼝,⽀持DSL查询或全⽂检索查询
EntityREST:提供Atlas元数据实体增删改查操作相关的REST API接⼝
GlossaryREST:提供Atlas术语增删改查操作相关的REST API接⼝
LineageREST:提供获取Atlas元数据实体的⾎统图REST API接⼝
RelationshipREST:提供Atlas元数据关联关系增删改查操作相关的REST API接⼝
TypesREST:提供Atlas元数据类型增删改查操作相关的REST API接⼝
security包:提供安全相关的处理服务
service包:基础服务包
setup包:web容器启动初始化⾃动装配服务,提供KerberosAwareListener监听类⽤于⾃动装配Kerberos登录服务
util包:实⽤⼯具包
Atlas类:Atlas单机部署启动服务驱动类,通过distro模块Python脚本atlas_start.py调⽤,通过内嵌的jetty服务器独⽴运⾏Atlas元数据服务系统

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。