程序员

(一)atlas源码:源码架构

2022-08-31  本文已影响0人  1994_老叶

基本信息

Aparche Atlas是Hadoop数据治理与元数据框架,对元数据进行采集分类,提供高效的查询,还支持血缘关系的查询


代码模块介绍

根据架构图,我们从下至上介绍,我个人主要类比三层模型

数据库层(有点像DAO层)

由上面的图我们知道atlas数据存储模块使用的图数据库--janusgraph,而下图中graphdb的代码模块就是atlas对于这部分的封装,

首先需要知道的一点,在这个模块,我个人觉得,atlas在声明接口的时候有点DDD的味道

优点:良好的命名,良好的注释,大部分代码是在16年写的,风格非常好

仓库层(有点像service层)

跟我们的service层较相似,提供了对atlas中各种对象的增删查改逻辑,源码主要集中在repository模块中


集成层(类比controller层)

其中定可以分为三个部分,intg包,notification包,web-app包

intg

在接口,web UI中展示的大多数内容都定义在这里,type,entity等

messaging

对应notification包,kafka消息的处理,hook 发送过来的消息就在这里处理,这里值得注意一点,atlas会在kafka中创建两个topic:ATLAS_ENTITIES和ATLAS_HOOK

ATLAS_HOOK:各个hook获取的元数据通过该topic发送给atlas。atlas中的小标题写的很好,Notifications to Apache Atlas

atlas中的原文:

Apache Atlas can be notified of metadata changes and lineage via notifications to Kafka topic named ATLAS_HOOK. Atlas hooks for Apache Hive/Apache HBase/Apache Storm/Apache Sqoop use this mechanism to notify Apache Atlas of events of interest.

ATLAS_ENTITIES:atlas将元数据信息通过该topic通知给其他应用。atlas中的小标题,Notifications from Apache Atlas

原文:

Apache Atlas sends notifications about metadata changes to Kafka topic named ATLAS_ENTITIES . Applications interested in metadata changes can monitor for these notifications. For example, Apache Ranger processes these notifications to authorize data access based on classifications.
API<HTTP/REST>

对应webapp包,这个包定义了web调用的api和client包中实际调用的api,跟我们平时使用的controller很像

数据入口(metadata sources)

对应代码的addons模块,这里主要定义了各个hook的桥接代码


这个主要使用了Apache Falcon,一个开源的hadoop数据生命周期管理框架, 它提供了数据源 (Feed) 的管理服务,如生命周期管理,备份,存档到云等,通过Web UI可以很容易地配置这些预定义的策略, 能够大大简化hadoop集群的数据流管理。

主要相关代码是两个模块falcon-bridge和falcon-bridge-shim

剩下的模块就是hive,hbase等多种组件将元数据导入到atlas的桥接口扩展模块。

数据出口(apps)

对应的代码中的authorization,dashboardv2这些模块

authorization是atlas的鉴权模块,支持simple鉴权和ranger两种鉴权模式

dashboardv2是前端代码,就是web UI页面。

client是atlas对外提供的接口(openAPI)声明,有两个版本,目前主要使用v2版本

其他模块介绍

刚刚讲了atlas架构图上直观感受到的代码模块,还有一些代码模块没用提及到

common: 公共模块,主要提供启动和停止所有服务的功能、公共配置和高可用配置管理、公共注解接口、Groovy表达式定义

3party-licenses:第三方组件许可

build-tools:构建工具,主要是checkstyle的代码检查

dev-support:开发支持,主要跟docker开发相关的支持

distro:atlas分布式部署相关的配置文件,关于zk,hbase,solr等

docs:atlas的相关文档

plugin-classloader:加载atlas插件的加载类

test-tools:测试工具模块,本地运行solr

tools:工具模块,atlas索引修复,元数据导出等

写在最后的话

我在掘金平台也发了同样的文章,因为自己平时社交能力有限,很想通过写技术文章认识一些朋友,欢迎私信留言,交个朋友

上一篇下一篇

猜你喜欢

热点阅读