关于存储:Apache-Atlas-数据血缘

67次阅读

共计 6467 个字符,预计需要花费 17 分钟才能阅读完成。

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 的兼容性十分好。

本篇作者

杨帅军

资深数据架构师

专一于数据处理。目前次要为车企提供数据治理服务。

正文完
 0