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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IIC通信协议技术说明

    IIC通信协议技术说明简介IICBus最早是Philips半导体开发的两线时串行总线,经常用于微控制器和外设之间的连接。IIC通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485为半双工,SPI和UART为全双工。网络拓扑SDA:串行数据线SCL:串行时钟线数据传输每个字节传输必须带有响应位ACK,相关的响应时钟也有主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。SCL第9位时钟高电平信号期间,SDA拉低代表了有ACK响应位。当出现非响应NACK位:

    2022年6月3日
    38
  • 【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法

    【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法一、问题描述今天周一,早上一来上班,打开电脑操作一段时间后,我想按Win+L来锁屏,发现win键按了没有任何反应,只响应了L键。设备信息描述一下:系统:Windows10键盘:ikbc怎么解决它呢?二、解决问题ikbc键盘win按键失灵问题。其实是自己不小心把win键给锁定了。下面是介绍一下ikbc键盘上,锁定win键和解锁win键的方法,如下表所示:键盘款式锁定的方法解锁的方法非静音款Fn+左WinFn+右Win静音款Fn+F12F

    2022年6月1日
    150
  • 几款主流好用的markdown编辑器介绍

    几款主流好用的markdown编辑器介绍Markdown编辑器 Markdown其实在2004年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了。Markdown编辑器使用一套格式标记语言来对文档内容进行排版和格式显示。而Markdown的标记很少,常用的也就十个左右,它是一种非常轻量的标记语言。 Markdown编辑器深受技术人员的喜爱,Markdown可以用来编写说明…

    2022年4月29日
    643
  • 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导[通俗易懂]

    图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导[通俗易懂]文章目录1.为什么会出现图卷积神经网络?2.图卷积网络的两种类型2.1vertexdomain(spatialdomain):顶点域(空间域)2.2spectraldomain:频域方法(谱方法)3.什么是拉普拉斯矩阵?3.1常用的几种拉普拉斯矩阵普通形式的拉普拉斯矩阵对称归一化的拉普拉斯矩阵(SymmetricnormalizedLaplacian)随机游走归一化拉普拉斯矩…

    2022年6月11日
    25
  • 为matlab GUI添加背景图片

    为matlab GUI添加背景图片为matlabGUI添加背景图片为GUI添加一个背景图片,不仅可以让我们的界面变得漂亮大气上档次,而且软件对与用户的交互更加友好。用C或者C++写过软件界面的人都知道,这件事情可以轻而易举的办到,那么问题来了,怎么为matlab的GUI添加一个背景图片呢?其实这个操作也很简单,但是如果是第一次做这个,可能需要折腾好久。在这里我希望跟大家分享一下这个小技巧,避免大家遇到同样的问题再走弯路。欢迎…

    2022年6月12日
    34
  • Redis—SpringCache(一)无参数使用

    Redis—SpringCache(一)无参数使用

    2020年11月12日
    191

发表回复

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

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