Apache Atlas 数据血缘

Apache Atlas 数据血缘数据血缘跟踪 记录 展示了数据来自何处 以及在数据流转过程中应用了哪些转换操作 它有助于追溯数据来源及处理过程

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 等诸如此类的操作,这样便于在数据出现问题的时候方便他们进行回溯分析定位。

Apache Atlas 数据血缘

(二)业务用户视角

业务用户通常希望看到数据从哪里来,经过了那些关键的处理环节,每个处理环节是谁来负责,他们通常不关心诸如 merge,join 等非常技术细节的操作。例如:

Apache Atlas 数据血缘

在这个典型的用户视角内,最左侧的数据原始发源地,以及爬虫,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 自动捕获的数据时,必须先了解其类型系统,及血缘的形成原理。然后根据业务需要创建必要的子类型及其实体。

Apache Atlas 数据血缘

其中绿色标记的为 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://javaforall.net/231400.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月15日 下午5:01
下一篇 2025年12月15日 下午5:22


相关推荐

  • Android Toast介绍及用法

    Android Toast介绍及用法Toast 控件介绍 Toast 是 Android 系统提供的轻量级信息提醒机制 用于向用户提示即时消息 它显示在应用程序界面的最上层 显示一段时间后自动消失不会打断当前操作 也不获得焦点 使用 Toast 提示信息的实例代码 Toast makeText Context Text Time show 这段代码首先调用了 Toast 的 makeText 方法用来设置提示信息 Context 表示应用程序环境的信息 就是当前组件的上下文环境 如果在 Activity 中使用的话 那么该参数可设置为 Activi

    2026年3月20日
    3
  • 记录一次无加密门禁卡手机nfc复制过程

    记录一次无加密门禁卡手机nfc复制过程虽然小米说它的手机可以复制门禁卡,但是加密卡它不让复制,就连完全没有加密的门禁卡也无法复制,因为它不让你写入0扇区,你就没有对应的id号,那门怎么会开呢?必须要吐槽一下当然网上也有改它模拟的ID号方法,但那样可能会改变系统文件夹,会对以后带来风险原料:安卓软件taginfo和mifare经典工具,网上很好下载的如果检测到是无加密卡,就可以去淘宝买cuid卡了,…

    2022年5月27日
    103
  • Vue开发入门(二) | 说说Vue全家桶有哪些~

    Vue开发入门(二) | 说说Vue全家桶有哪些~全家桶 顾名思义 就是一个系列 可以组合开发成完整强大的 Vue 项目前言 Vue 两大核心思想 组件化和数据驱动 组件化 把整体拆分为各个可以复用的个体数据驱动 通过数据变化直接影响 bom 展示 避免 dom 操作 Vue 全家桶介绍 vue 全家桶 包括了 vue 渐进式 js 框架 vuex 状态管理 vue router 路由 vue resource axios UI 框架 iview vant elementUI 等 等 Vue 有著名的全家桶系列 包含了 vue router v

    2026年3月18日
    1
  • 漫谈词向量

    漫谈词向量原文:Onwordembeddings作者:SebastianRuder译者:KK4SBB审校:王艺责编:何永灿,关注人工智能,投稿请联系heyc@csdn.net或微信号289416419目录词向量的来历词向量模型语言建模概述经典的神经语言模型C&amp;W模型Word2VecCBOWSkip-gram非监督式学习得到…

    2022年5月22日
    42
  • nginx代理tcp协议_tcp怎么加密传输

    nginx代理tcp协议_tcp怎么加密传输NGINX实现TCP加密代理

    2025年10月15日
    3
  • xshell ping不通虚拟机_虚拟机为什么ping不通主机

    xshell ping不通虚拟机_虚拟机为什么ping不通主机有朋友联系说:“虚拟机可以ping本机,本机也可以ping虚拟机,但是Xshell连接不上虚拟机。”,找了不少资料发现好像不是这个问题的解决方法,所以在这里介绍下怎么解决这个问题。同时,总结几种xshell连接不上虚拟机的解决方法。

    2026年2月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号