一、功能简介

Atlas 是一组可扩展的核心基础治理服务,使企业能够高效地满足其在 Hadoop 中的合规性要求,并允许与整个企业数据生态系统集成。Apache Atlas 为组织提供开放的元数据管理和治理功能,以构建其数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作能力。

二、架构设计

Atlas 中主要有以下核心组件

1. Type元数据类型定义,这里可以是数据库,表,列等,还可以细分 mysql 表( mysql_table ),oracle 表( oracle_table )等,atlas自带了很多类型,如 DataSet,Process 等,一般情况下,数据相关的类型在定义类型的时候都会继承 DataSet,而流程相关的类型则会继承 Process,便于生成血缘关系。我们也可以通过调用 api 自定义类型。这是一切的起点,定义完类型之后,才能生成不同类型的元数据实体,生成血缘关系。

2. Classification分类,通俗点就是给元数据打标签,分类是可以传递的,比如 A 视图是基于 A 表生成的,那么如果 A 表打上了 a 这个标签,A 视图也会自动打上 a 标签,这样的好处就是便于数据的追踪。

3. Entity实体,表示具体的元数据,Atlas 管理的对象就是各种 Type 的 Entity。

4. Lineage数据血缘,表示数据之间的传递关系,通过 Lineage 我们可以清晰的知道数据的从何而来又流向何处,中间经历了哪些操作,这样一旦数据出现问题,可以迅速追溯,定位是哪个环节出现错误。

三、服务依赖

在安装Atlas前需要把一下软件都安装好,注意Kafka、Hadoop、Hive、Hbase、Solr都需要注册到同一个ZK下,不可使用自带的ZK。

服务 子服务
Zookeeper QuorumPeerMain
Kafka Kafka
MySQL MySQL
Hadoop

HDFS:NameNode、SecondaryNameNode、DataNode

Yarn:NodeManager、ResourceManager

Hive

Hive

Hbase

HMaster、HRegionServer

Solr

Solr

Atlas

Atlas

四、Atlas安装与集成

4.1 解压缩

tar -zxvf apache-atlas-2.1.0-server.tar.gz

4.2 集成hbase

vim conf/atlas-application.properties 

atlas.graph.storage.hostname=host:2181
vim conf/atlas-env.sh

export HBASE_CONF_DIR=/home/root/apache/hbase-2.0.5/conf

4.3 集成Solr

vim conf/atlas-application.properties 

atlas.graph.index.search.solr.zookeeper-url=host:2181

创建 solr collection

sudo -i -u root /home/root/apache/solr-7.7.3/bin/solr create -c vertex_index -d  /home/root/apache/atlas/apache-atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2 -force

sudo -i -u root /home/root/apache/solr-7.7.3/bin/solr create -c edge_index -d  /home/root/apache/atlas/apache-atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2 -force

sudo -i -u root /home/root/apache/solr-7.7.3/bin/solr create -c fulltext_index -d  /home/root/apache/atlas/apache-atlas-2.1.0/conf/solr -shards 3 -replicationFactor 2 -force

创建好后可以在页面上看到

4.4 集成kafka

vim conf/atlas-application.properties 

atlas.notification.embedded=false
atlas.kafka.data=/home/root/data/kafka
atlas.kafka.zookeeper.connect=host:2181
atlas.kafka.bootstrap.servers=host:9092

4.5 Atlas服务配置

vim conf/atlas-application.properties 

atlas.rest.address=host:21000
atlas.server.run.setup.on.start=false
tlas.audit.hbase.zookeeper.quorum=host:2181

4.6 集成hive

修改atlas-application.properties

vim conf/atlas-application.properties 

atlas.hook.hive.synchronous=false
atlas.hook.hive.numRetries=3
atlas.hook.hive.queueSize=10000
atlas.cluster.name=primary

修改hive-site.xml

vim hive-3.1.2/conf/hive-site.xml  

<property>
<name>hive.exec.post.hooks</name>
<value>org.apache.atlas.hive.hook.HiveHook</value>
</property>

安装hive-hook

tar -zxvf apache-atlas-2.1.0-hive-hook.tar.gz 

cp -r apache-atlas-hive-hook-2.1.0/* apache-atlas-2.1.0/

修改hive-env.sh

vim hive-3.1.2/conf/hive-env.sh 

export HIVE_AUX_JARS_PATH=/home/root/apache/atlas/apache-atlas-2.1.0/hook/hive

拷贝atlas-application.properties到hive conf目录

cp atlas-application.properties ../../../hive-3.1.2/conf/

五、Atlas使用

5.1 Atlas启动

bin/atlas_start.py

访问host:21000,账号和密码都是admin

5.2 初始化元数据

cd hook-bin
sh import-hive.sh

5.3 增量同步

输入hive命令进入控制台,创建订单事实表

CREATE TABLE dwd_order_info (
`id` STRING COMMENT '订单号',
`final_amount` DECIMAL(16,2) COMMENT '订单最终金额',
`order_status` STRING COMMENT '订单状态',
`user_id` STRING COMMENT '用户 id',
`payment_way` STRING COMMENT '支付方式',
`delivery_address` STRING COMMENT '送货地址',
`out_trade_no` STRING COMMENT '支付流水号',
`create_time` STRING COMMENT '创建时间',
`operate_time` STRING COMMENT '操作时间',
`expire_time` STRING COMMENT '过期时间',
`tracking_no` STRING COMMENT '物流单编号',
`province_id` STRING COMMENT '省份 ID',
`activity_reduce_amount` DECIMAL(16,2) COMMENT '活动减免金额',
`coupon_reduce_amount` DECIMAL(16,2) COMMENT '优惠券减免金额',
`original_amount` DECIMAL(16,2) COMMENT '订单原价金额',
`feight_fee` DECIMAL(16,2) COMMENT '运费',
`feight_fee_reduce` DECIMAL(16,2) COMMENT '运费减免'
) COMMENT '订单表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

创建地域维表

CREATE TABLE dim_base_province (
`id` STRING COMMENT '编号',
`name` STRING COMMENT '省份名称',
`region_id` STRING COMMENT '地区 ID',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT 'ISO-3166 编码,供可视化使用',
`iso_3166_2` STRING COMMENT 'IOS-3166-2 编码,供可视化使用'
) COMMENT '省份表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

上传测试数据

cd /home/root/apache/hive-3.1.2/test-data

hdfs dfs -put base_province.txt /home/root/data/hive/warehouse/my_db.db/dim_base_province

hdfs dfs -put order_info.txt /home/root/data/hive/warehouse/my_db.db/dwd_order_info

创建需求表,根据订单事实表和地区维度表,求出每个省份的订单次数和订单金额

CREATE TABLE `ads_order_by_province` (
`dt` STRING COMMENT '统计日期',
`province_id` STRING COMMENT '省份 id',
`province_name` STRING COMMENT '省份名称',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT '国际标准地区编码',
`iso_code_3166_2` STRING COMMENT '国际标准地区编码',
`order_count` BIGINT COMMENT '订单数',
`order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

执行sql导入

set hive.execution.engine=spark;

insert into table ads_order_by_province
select
'2021-08-30' dt,
bp.id,
bp.name,
bp.area_code,
bp.iso_code,
bp.iso_3166_2,
count(*) order_count,
sum(oi.final_amount) order_amount
from dwd_order_info oi
left join dim_base_province bp
on oi.province_id=bp.id
group by bp.id,bp.name,bp.area_code,bp.iso_code,bp.iso_3166_2;

再导入到拷贝表一份

CREATE TABLE `ads_order_by_province_copy` (
`dt` STRING COMMENT '统计日期',
`province_id` STRING COMMENT '省份 id',
`province_name` STRING COMMENT '省份名称',
`area_code` STRING COMMENT '地区编码',
`iso_code` STRING COMMENT '国际标准地区编码',
`iso_code_3166_2` STRING COMMENT '国际标准地区编码',
`order_count` BIGINT COMMENT '订单数',
`order_amount` DECIMAL(16,2) COMMENT '订单金额'
) COMMENT '各省份订单统计'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; set hive.execution.engine=spark; insert into table ads_order_by_province_copy
select * from ads_order_by_province;

5.4 血缘查询结果

我们可以看到,经过上面的sql操作,Atlas已经记录好了血缘关系

六、工作原理

其实就是通过hive-hook监听数仓数据变化,把监听信息发Kafka : ATLAS_HOOK,消息体就是对Atlas数据模型的定义

Atlas读取到消息后会生成数据模型,存储到 Hbase 中,生成表与表,列与列的血缘关系依赖,在前台展示给用户查看。

参考资料

https://atlas.apache.org/#/

https://blog.csdn.net/m0_37719874/article/details/124245209
https://www.bilibili.com/video/BV1jA411F76d?spm_id_from=333.337.search-card.all.click

元数据治理利器 - Apache Atlas的更多相关文章

  1. Apache Atlas元数据管理从入门到实战(1)

    一.前言   元数据管理是数据治理非常重要的一个方向,元数据的一致性,可追溯性,是实现数据治理非常重要的一个环节.传统数据情况下,有过多种相对成熟的元数据管理工具,而大数据时代,基于hadoop,最为 ...

  2. 使用 Apache Atlas 进行数据治理

    本文由  网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采 ...

  3. 数据治理的王者——Apache Atlas

    一.Atlas是什么? 在当今大数据的应用越来越广泛的情况下,数据治理一直是企业面临的巨大问题. 大部分公司只是单纯的对数据进行了处理,而数据的血缘,分类等等却很难实现,市场上也急需要一个专注于数据治 ...

  4. Apache Atlas

    atlas英 [ˈætləs] 阿特拉斯. 美 [ˈætləs] n.地图集;〈比喻〉身负重担的人 == Apache Atlas Version: 1.1.0 Last Published: 201 ...

  5. Apache Atlas是什么?

    不多说,直接上干货! Apache Atlas是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类.集中策略引擎.数据血缘.安全和生命周 ...

  6. 一站式元数据治理平台——Datahub入门宝典

    随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为新一代的元数据管理平台,Datahub在近一年的时间里发展迅猛,大有取代老牌元数据管理工具Atlas之势.国内Datahub ...

  7. 当Atlas遇见Flink——Apache Atlas 2.2.0发布!

    距离上次atlas发布新版本已经有一年的时间了,但是这一年元数据管理平台的发展一直没有停止.Datahub,Amundsen等等,都在不断的更新着自己的版本.但是似乎Atlas在元数据管理,数据血缘领 ...

  8. [Apache Atlas] Atlas 架构设计及源代码简单分析

    Apache Atlas 架构图 Atlas 支持多数据源接入:Hive.HBase.Storm等 Type System Type Atlas 中定义了一些元数据类型 ── AtlasBaseTyp ...

  9. apache atlas源码编译打包 centos

    参考:https://atlas.apache.org/InstallationSteps.html https://blog.csdn.net/lingbo229/article/details/8 ...

随机推荐

  1. 下篇:技术 Leader 的思考方式

    作者: 朱春茂(知明) 技术 Leader 是一个对综合素质要求非常高的岗位,不仅要有解具体技术问题的架构能力,还要具备团队管理的能力,更需要引领方向带领团队/平台穿越迷茫进阶到下一个境界的能力.所以 ...

  2. Python 多道技术以及进程、线程和协程

    多道技术 并发:看起来像同时运行 并行:真正意义上的同时运行,并行肯定是并发 空间的复用与时间复用 空间复用 多个程序用一套计算机硬件 时间复用 程序切换节省时间 ''' 切换(cup)分为两种情况 ...

  3. 解惑unittest框架中导入HTMLTestRunner模块后正常运行却无法生成HTML报告问题

    1.HTMLTestRunner介绍 HTMLTestRunner是一个第三方的unittest HTML报告库,用于python单元测试框架的TestRunner.它是生成一个HTML报告,以一目了 ...

  4. Python数据分析--Numpy常用函数介绍(6)--Numpy中矩阵和通用函数

    在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创 ...

  5. printf 输出前导0

    printf ("%3d\n", 5); printf ("%03d\n", 5); 输出为

  6. GDKOI 2021 Day2 TG 总结

    又是爆炸的一天,炸多了本蒟蒻已经习以为常 但今天比昨天整整高了 40 分!!!!却还是没有 100 今天本蒟蒻本想模仿奆佬的打字速度,结果思路混乱让我无法开始 T1 不是吧怎么是期望 dp ,期望值怎 ...

  7. 陈宏智:字节跳动自研万亿级图数据库ByteGraph及其应用与挑战

    导读: 作为一种基础的数据结构,图数据的应用场景无处不在,如社交.风控.搜广推.生物信息学中的蛋白质分析等.如何高效地对海量的图数据进行存储.查询.计算及分析,是当前业界热门的方向.本文将介绍字节跳动 ...

  8. 【转载】解决k8s中的长连接负载均衡问题

    原文链接:一流铲屎官二流程序员[解决k8s中的长连接负载均衡问题] 长连接与短连接: 简介 长连接是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测 ...

  9. .NET中的迭代器(Iterator)

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年6月30日. 一.迭代器介绍 C#2.0开始,我们可以使用迭代器(iterator).编译器自动把我们定义的迭代器生成 可枚举类型 或 ...

  10. Spring框架 - Spring和Spring框架组成

    Spring框架 - Spring和Spring框架组成 Spring是什么?它是怎么诞生的?有哪些主要的组件和核心功能呢? 本文通过这几个问题帮助你构筑Spring和Spring Framework ...