spline-spark-agent收集Spark作业上下游血缘

一、背景

  由于spark-atlas-connector无法解析DF算子获取到Spark程序的血缘,因此我们这边针对Spark血缘做了调研,发现spline-agent能解析DF算子,从而获取得到Spark作业血缘,因此我们选择抛弃spark-atlas-connector,转而使用spline-agent。

  使用spline-agent之后,我们对于Atlas的定位将从:管理Spark作业与Hive表之间的关系。转变为:只提供Hive的基础数据信息(包括HiveDB、HiveTable等)。

二、编译

1、下载源码包:https://github.com/AbsaOSS/spline-spark-agent.git

2、修改spline-spark-agent/pom.xml

(1)添加阿里云镜像

<repositories>
 <repository>
 <id>aliyun</id>
 <name>aliyun</name>
 <url>https://maven.aliyun.com/repository/public</url>
 </repository>
 <repository>
 <id>cloudera</id>
 <name>cloudera</name>
 <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
 </repository>
</repositories>

(2)修改Spark版本

<spark-24.version>2.4.0-cdh6.1.1</spark-24.version>

3、修改spline-spark-agent/bundle-2.4/pom.xml

(1)修改commons-configuration,将provided注释掉

<dependency>
 <groupId>commons-configuration</groupId>
 <artifactId>commons-configuration</artifactId>
 <!--<scope>provided</scope>-->
</dependency>

4、经过测试,发现了一些Bug,影响到了Spark作业的正常执行,因此做了一些修改,整个修改好的Agent源码地址如下,直接下载编译即可(选择1.0版本代码!!!)

https://gitee.com/LzMingYueShanPao/spline-spark-agent.git

三、编译

1、将代码上传至Linux,进入spline-spark-agent目录,执行编译命令

mvn clean install -DskipTests

2、第一步编译成功后,进入spline-spark-agent/bundle-2.4目录,执行编译命令

mvn clean install -DskipTests

3、查看结果

4、参考地址:https://github.com/AbsaOSS/spline-spark-agent

四、使用

1、创建Jar存放目录
mkdir -p /opt/module/spline

2、上传spark-2.4-spline-agent-bundle_2.11-1.0.0-SNAPSHOT.jar至/opt/module/spline

3、血缘日志接入Kafka

spark-shell \
--jars /opt/module/spline/spark-2.4-spline-agent-bundle_2.11-1.0.0-SNAPSHOT.jar \
--conf spark.sql.queryExecutionListeners=za.co.absa.spline.harvester.listener.SplineQueryExecutionListener \
--conf spark.spline.lineageDispatcher=kafka \
--conf spark.spline.lineageDispatcher.kafka.topic=spline_test \
--conf spark.spline.lineageDispatcher.kafka.producer.bootstrap.servers=xxx.xxx.xxx.100:9092,xxx.xxx.xxx.101:9092,xxx.xxx.xxx.102:9092 \
--conf spark.spline.lineageDispatcher.kafka.sasl.mechanism=SCRAM-SHA-256 \
--conf spark.spline.lineageDispatcher.kafka.security.protocol=PLAINTEXT \
--conf spark.spline.lineageDispatcher.kafka.sasl.jaas.config=

4、血缘日志打印在控制台

spark-shell \
--jars /opt/module/spline/spark-2.4-spline-agent-bundle_2.11-1.0.0-SNAPSHOT.jar \
--conf spark.sql.queryExecutionListeners=za.co.absa.spline.harvester.listener.SplineQueryExecutionListener \
--conf spark.spline.lineageDispatcher=console

5、解析JSON数据

  Spark作业通过Spline的Agent程序解析之后,会将血缘信息发送至spline_test主题,此主题中的数据可根据自己公司的实际情况来进行使用。

  我这边会对spline_test主题中的数据进行清洗,消费spline_test主题,解析数据,提取出Spark作业的上下游信息,然后根据这些信息就可以知道Spark使用了哪些表,输出了哪些表,然后将数据导入图数据库HugeGraph即可。

6、参考地址:https://github.com/AbsaOSS/spline-spark-agent

posted @ 2022-10-10 09:15  落魄的大数据转AI小哥  阅读(1301)  评论(2编辑  收藏  举报