Apache Atlas 数据血缘
01 什么是数据血缘
数据血缘跟踪、记录、展示了数据来自何处,以及在数据流转过程中应用了哪些转换操作,它有助于追溯数据来源及处理过程。
数据血缘系统的核心功能:
数据资产的自动发现及创建
血缘关系的自动发现及创建
不同视角的血缘及资产分析展示
与数据血缘容易混淆的概念:数据起源。数据起源重点在于跟踪数据的原始来源,包括与数据相关的采集、规则、流程,以帮助数据工程师评估数据的质量。
02 Apache Atlas 及其特性
Atlas 是一套可伸缩且可扩展的数据治理服务,使企业能够有效和高效地满足其在 Hadoop 生态中的合规要求,并允许与整个企业数据生态系统集成。
Atlas 为组织提供开放的元数据管理和治理能力,以建立其数据资产目录、对这些资产进行分类和管理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作能力。
元数据及实体
预定义的 Hadoop 及非 Hadoop 系统的元数据类型。
基于 Rest API 的类别及实体管理
类别及实体的自动捕获
数据血缘
血缘自动捕获
可探查的数据血缘展示
基于Rest API的数据血缘管理
搜索
可按数据资产类别,实体及属性的搜索
基于 Rest API 的复杂搜索
类 SQL 的搜索语言
安全及敏感数据遮蔽
元数据访问的细粒度管控。
与 Apache Ranger 集成,进行基于实体分类的授权及数据遮蔽。
分类
类别自动发现
实体类别标签自动化
基于血缘分类传播
03 数据血缘视角
(一)工程师视角
数据工程师通常希望看到数据处理细节的血缘,例如数据处理过程中的 mapping,de-duplicate,data masking,merge,join, update, delete, insert 等诸如此类的操作,这样便于在数据出现问题的时候方便他们进行回溯分析定位。
(二)业务用户视角
业务用户通常希望看到数据从哪里来,经过了那些关键的处理环节,每个处理环节是谁来负责,他们通常不关心诸如 merge,join 等非常技术细节的操作。例如:
在这个典型的用户视角内,最左侧的数据原始发源地,以及爬虫,ftp这些关键节点事实上很难被 Apache Atlas 自动发现和管理,在 Apache Atlas 内这部元数据通常需要手工捕获。
根据 Apache Atlas 版本特性来看,1.0并不支持实体类型的图标定制化功能。2.1的版本支持实体类型图标定制化功能,哥尼斯堡七桥问题成功阐释了一幅图胜过千言万语,同时也诞生了一个全新的学科:图论,选择符合业务实际场景的实体图标类型,往往能减少很多不必要的解释说明。
注意:Apache Atlas 不是一个可以同时兼容两种血缘视角的软件。实际场景,手工捕获缺失的关键实体类别及实体信息,形成完整的数据血缘关系。
04 Apache Atlas 编译部署
Apache Atlas 提供了两种构建模式:
标准模式
标准模式通常用于部署在生产环境中。
mvn clean -DskipTests package -Pdist
*左滑查看更多
嵌入式模式
嵌入式构建模式提供了开箱即用的功能,通常用于 PoC 或者小规模场景。
预打包 Hbase 及 Solr
mvn clean -DskipTests package -Pdist,embedded-hbase-solr
*左滑查看更多
其中 Hbase 为 Atlas 图库提供存储,而 Solr 则负责为 Atlas 提供搜索。
预打包 Cassandra 及 Solr
mvn clean package -Pdist,embedded-cassandra-solr
*左滑查看更多
其中 Cassandra 为 Atlas 图库提供存储,而 Solr 则负责为 Atlas 提供搜索。
不论选择哪种构建模式,避免配置阿里的 Maven 镜像仓库,因为缺少部分依赖包而无法完成构建,在构建过程中,至少保证有20GB的可用空间,构建会在少于2小时内完成。
以嵌入式 embedded-hbase-solr 为例部署一个快速原型的环境。
#!/bin/bash
# This script was tested in EMR 6.3 environment.
# The "embedded Apache HBase & Apache Solr" was tested.# Create apache directory
sudo mkdir /apache
sudo chown hadoop.hadoop /apache# Download JDK
cd /apache
wget https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.tar.gz
tar xzf amazon-corretto-11-x64-linux-jdk.tar.gz# Download Atlas-2.1.0
# ---------------start---------------
cd /apache
# Please upload your compiled distribution package into your bucket and grant read permission.
curl -O https://your-s3-bucketname.s3.amazonaws.com/apache-atlas-2.1.0-bin.tar.gz
tar xzf apache-atlas-2.1.0-bin.tar.gz
# Configuration
# atlas-env.sh
# 20 export JAVA_HOME=/apache/amazon-corretto-11.0.12.7.1-linux-x64
sed -i "s%.*export JAVA_HOME.*%export JAVA_HOME=/apache/amazon-corretto-11.0.12.7.1-linux-x64%" /apache/apache-atlas-2.1.0/conf/atlas-env.sh
sed -i "s%.*export JAVA_HOME.*%export JAVA_HOME=/apache/amazon-corretto-11.0.12.7.1-linux-x64%" /apache/apache-atlas-2.1.0/hbase/conf/hbase-env.sh # atlas-application.properties
# 104 atlas.notification.embedded=false
# 106 atlas.kafka.zookeeper.connect=localhost:2181
# 107 atlas.kafka.bootstrap.servers=localhost:9092
sed -i "s/atlas.graph.index.search.solr.zookeeper-url.*/atlas.graph.index.search.solr.zookeeper-url=localhost:9983" /apache/apache-atlas-2.1.0/conf/atlas-application.properties
sed -i "s/atlas.notification.embedded=.*/atlas.notification.embedded=false/" /apache/apache-atlas-2.1.0/conf/atlas-application.properties
sed -i "s/atlas.kafka.zookeeper.connect=.*/atlas.kafka.zookeeper.connect=localhost:9983/" /apache/apache-atlas-2.1.0/conf/atlas-application.properties
sed -i "s/atlas.kafka.bootstrap.servers=.*/atlas.kafka.bootstrap.servers=localhost:9092/" /apache/apache-atlas-2.1.0/conf/atlas-application.properties
sed -i "s/atlas.audit.hbase.zookeeper.quorum=.*/atlas.audit.hbase.zookeeper.quorum=localhost/" /apache/apache-atlas-2.1.0/conf/atlas-application.properties
# ---------------end---------------# Solr start
# ---------------start---------------
# Export environment variable
export JAVA_HOME=/apache/amazon-corretto-11.0.12.7.1-linux-x64
export SOLR_BIN=/apache/apache-atlas-2.1.0/solr/bin
export SOLR_CONF=/apache/apache-atlas-2.1.0/conf/solr# Startup solr
$SOLR_BIN/solr start -c # Initialize the index
$SOLR_BIN/solr create_collection -c vertex_index -d $SOLR_CONF
$SOLR_BIN/solr create_collection -c edge_index -d $SOLR_CONF
$SOLR_BIN/solr create_collection -c fulltext_index -d $SOLR_CONF
# ---------------end---------------# Config the hive hook
# ---------------start---------------
sudo sed -i "s#</configuration># <property>\n <name>hive.exec.post.hooks</name>\n <value>org.apache.atlas.hive.hook.HiveHook</value>\n </property>\n\n</configuration>#" /etc/hive/conf/hive-site.xml
sudo cp /apache/apache-atlas-2.1.0/conf/atlas-application.properties /etc/hive/conf
sudo sed -i 's%export HIVE_AUX_JARS_PATH.*hcatalog%export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}${HIVE_AUX_JARS_PATH:+:}/usr/lib/hive-hcatalog/share/hcatalog:/apache/apache-atlas-2.1.0/hook/hive%' /etc/hive/conf/hive-env.sh
sudo cp -r /apache/apache-atlas-2.1.0/hook/hive/* /usr/lib/hive/auxlib/
sudo systemctl stop hive-server2
sudo systemctl start hive-server2
# ---------------end---------------# Start atlas
# ---------------start---------------
# Initialize will be completed in 15 mintues
export MANAGE_LOCAL_HBASE=true
export MANAGE_LOCAL_SOLR=true
python2 /apache/apache-atlas-2.1.0/bin/atlas_start.py
python2 /apache/apache-atlas-2.1.0/bin/atlas_stop.py
python2 /apache/apache-atlas-2.1.0/bin/atlas_start.py
# ---------------end---------------# Download and startup kafka
# ---------------start---------------
cd /apache
curl -O https://mirrors.bfsu.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
tar xzf kafka_2.13-2.8.0.tgz
sed -i "s/zookeeper.connect=.*/zookeeper.connect=localhost:9983/" /apache/kafka_2.13-2.8.0/config/server.properties
/apache/kafka_2.13-2.8.0/bin/kafka-server-start.sh -daemon /apache/kafka_2.13-2.8.0/config/server.properties
# ---------------end---------------
*左滑查看更多
Apache Atlas 虽然内嵌了 Hive/Hbase/Sqoop/Storm/Falcon/Kafka 的 hook ,但是除此之外的其他处理引擎的 plugin 极少,例如目前广泛使用的 Spark/Flink,如果使用这两个计算引擎处理数据,则需要进行定制开发才能捕获相关的数据血缘。
05 手工捕获数据
Apache Atlas 是一个典型的类型继承系统,在追加无法通过 Atlas hook 或者 plugin 自动捕获的数据时,必须先了解其类型系统,及血缘的形成原理。然后根据业务需要创建必要的子类型及其实体。
其中绿色标记的为 DataSet 静态子类型,红色标记的为 Process 子类型,Process 实体通过连接作为输入输出的DataSet子类型实体从而形成血缘关系。
06 Spark 与 Apache Atlas
捕获 Spark 数据血缘可以采用以下两大类的方式:
Connector, 优点自动化数据捕获
REST API,优点定制化程度高
(一) spark-atlas-connector
是 Hortonworks 开源的 Connector,最后一次代码更新是在2019年7月12日,从实际的代码编译结果来看,与 Spark 3.1.1存在兼容性问题。该项目默认的配置(pom.xml):
Spark 2.4.0
Scala 2.11.12
Atlas 2.0.0
如果是2.4.0本的 Spark 可以考虑采用该 connector。
对于该项目使用文档的一些补充,如果使用 rest api 方式进行数据的自动填充,请配置以下参数:
rest.address
client.username
client.password
这些配置选项来源于 AtlasClientConf.scala 文件。
(二)spline
是目前活跃度较高的捕获 Spark 数据血缘的开源项目,但是它与 Atlas 兼容性不好,而是自成一体,但是该项目对于 Spark 的兼容性非常好。
本篇作者
杨帅军
资深数据架构师
专注于数据处理。目前主要为车企提供数据治理服务。
Apache Atlas 数据血缘相关推荐
- Apache Atlas 数据治理-血缘关系工具
前言: 部门业务数据治理中字段血缘关系的实现,平台使用了工具Apache Atlas,简单查了些内容对自己进行科普,后续再深入 以下摘自文章: 参考文章:https://blog.csdn.net/u ...
- 了解apache atlas的血缘关系
初步学习altas 的血缘关系 了解altas 的血缘关系的作用 altas的安装部署 了解官方API 了解apache echars 了解altas 的血缘关系的作用 在数据治理环节,需要对表进行溯 ...
- 使用 Apache Atlas 进行数据治理
本文由 网易云发布. 作者:网易/刘勋(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 面对海量且持续增加的各式各样的数据对象,你是否有信心知道哪些数据从哪里来以及它如何随时间而变化?采用 ...
- 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起
正文共: 9053字 12图 预计阅读时间: 23分钟 前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别. 这个时候问题来 ...
- 数据血缘Atlas Rest-API使用
项目场景 atlas支持对hive元数据的管理,通过执行bin/import-hive.sh脚本即可,但目前大多数离线平台是用spark分析数据的,而spark元数据atlas解析不出来数据血缘,这就 ...
- Apache Atlas精讲:由浅入深,从概念,原理,使用,到自定义数据模型,生成血缘关系,带你玩转Atlas
文章目录 引言 Atlas 原理及相关概念 Altas 使用 Atlas Rest Api 详解及示例 结语 引言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品, ...
- apache atlas 案例_大数据元数据开源解决方案apache atlas
[实例简介] 大数据元数据开源解决方案apache atlas,提供数据治理,元数据管理等功能 [实例截图] [核心代码] apache-atlas-1.1.0-sources.tar └── apa ...
- DataHub调研数据血缘
DataHub调研&数据血缘 1. DataHub? 阿里的数据工具datahub? 回答: 不是 DataHub是由Linkedin开源的,官方喊出的口号为:The Metadata Pla ...
- Apache atlas使用说明(UI功能详解)
稍微修改了下,增添了内容.基本上是看着官方文档,和查询资料自己总结出来的.也没有什么高深的东西就atlas的一些基本使用,以及web页面的一些操作.如果有什么错误欢迎指正. ** 1Atlas基本说明 ...
- apache atlas
文章目录 环境 概述 特性 元数据类型和实例 分类 血缘 搜索 / 发现 安全与数据屏蔽 快速开始 安装 & 编译 Installing Apache Atlas 介绍 运行例子 仪表盘 AP ...
最新文章
- (转)I 帧和 IDR 帧的区别
- 在Linux下轻松玩转Samba服务器
- Matlab | Matlab中使用imaqtool工具箱获取摄像头数据及如何安装(摄像头)硬件适配器的图像采集支持包
- python删除字符串中的字母_在Python中删除字符串中的大写字母
- 易语言反截图_【易语言】模仿QQ截图
- log4j2logback打印日志的效率问题【细节3】bean属性拷贝【细节4】
- 启用或禁用对 Exchange Server 中的邮箱的 POP3 或 IMAP4 访问
- 限制会话id服务端不共享_不懂 Zookeeper?看完不懂你打我
- 更新macOS Monterey后遇到的各种Bug问题及解决方法
- spss主成分综合得分_使用SPSS对美国50个州情况分析
- 03-24 CPU 统计
- 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...
- Adobe Photoshop/Adobe Dreamwear/您此时无法使用此产品。您必须问题解决办法FLEXnet Licensing Service服务
- CentOS8安装与配置jdk1.8 与远程分发复制jdk到另一个虚拟机
- 模式识别:三层BP神经网络的设计与实现
- 前端编程中,如何消除浏览器缓存
- 不要使用矿泉水瓶接热水喝——致癌
- 程序员不得不写得(一):Eclipse, VS.net, CSharpDevelope
- 全新2009高校BBS上充满温馨的100个调情小笑话
- 微信公众号后台配置菜单代码