Apache Atlas数据治理开源项目源代码解析

2024-04-15 14:48

本文主要是介绍Apache Atlas数据治理开源项目源代码解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Apache Atlas版本号:2.0.0

从官方网站下载Apache Atlas2.0.0版本源代码,用开发工具(如IntelliJ IDEA)打开。

根目录结构

一、3party-licenses

        第三方组件许可,可以看出Atlas主要用到的第三方技术组件,绝大部分是前端技术组件,janusgraph和titan是图数据库组件,JanusGraph是Titan的继承者,老版本用的是Titan,新版本是用的JanusGraph

二、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元数据通知事件钩子处理类

    这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookFalcon,或者本地文档: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方法入口。这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookHBase,或本地文档:docs/src/site/twiki/Hook-HBase.twiki

4、hive-bridge

        hive桥接扩展模块,通过bin目录下的import-hive.sh脚本导入hive元数据到Atlas系统,脚本调用了桥接代码类HiveMetaStoreBridge,main方法入口。

        这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookHive,或本地文档:docs/src/site/twiki/Hook-Hive.twiki

5、kafka-bridge

       Kafka桥接扩展模块,通过bin目录下的import-kafka.sh脚本导入hive元数据到Atlas系统,脚本调用了桥接代码类KafkaBridge,main方法入口。这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookKafka

6、models

        提供Atlas各种元数据模型类型定义json文件

7、sqoop-bridge

        Sqoop桥接扩展模块,主要提供一个SqoopHook类用于在sqoop将其他数据源数据同步到hive仓库后自动发送hive导入操作相关的元数据到Atlas系统。这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookSqoop

8、storm-bridge 

         Storm桥接扩展模块,提供StormAtlasHook类用于将storm拓扑元数据信息通过Kafka Broker发送给Atlas系统进行持久化管理。这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/HookStorm     

三、authorization

          Atlas鉴权模块,支持Simple鉴权和Ranger鉴权两种方式,这个模块的详细介绍说明和使用说明见官方文档:http://atlas.apache.org/#/AuthorizationModel

四、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分布式部署相关的一些开发配置文件
  • pom.xml中提供了一些图数据库存储Hbase和图数据库索引检索组件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环境变量配置文件atlas-env.sh、日志配置文件atlas-log4j.xml,鉴权策略配置文件atlas-simple-authz-policy.json、用户认证配置文件users-credentials.properties
  • main/assemblies目录下是打包相关的描述符配置文件

十、docs

        Atlas官方文档,跟官方网站上的在线文档一致,官方文档地址:http://atlas.apache.org/#/

十一、graphdb

        图数据库模块,大致对应架构图中的如下部分:

  • api:图数据库API,主要提供Atlas从图数据库操作元数据的API接口
  • common:图数据库公共代码,主要是Tinkerpop图数据库和图计算框架,主要提供了图数据库查询表达式和查询接口
  • graphdb-implsAtlas图数据库实现依赖,无源代码
  • 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>,参考官方文档:http://atlas.apache.org/#/Notifications

十四、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元数据服务系统

这篇关于Apache Atlas数据治理开源项目源代码解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906116

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推