Spline部署&测试

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: Spline是Spark的元数据管理和血缘追踪工具,通过Docke部署。安装涉及下载docker-compose.yml和.env文件,使用`docker compose up -d`命令启动,包括rest-server(核心,处理血缘数据并存储在ArangoDB)、arangodb(多模型数据库)、ui(Web服务)等组件。测试中使用pyspark进行血缘捕获,通过spark-submit命令指定Spline相关依赖并连接到Spline服务器。成功后,血缘数据可在Spline UI中查看。未来计划在DolphinScheduler上测试Spark SQL任务并启用血缘追踪。

Spline是Spark生态下的元数据管理和血缘追踪工具。

一、docker部署

1.1 确认docker compose已安装

image.png

1.2 安装Spline 2.0.0容器组

官方安装命令:

wget https://raw.githubusercontent.com/AbsaOSS/spline-getting-started/main/docker/docker-compose.yml
wget https://raw.githubusercontent.com/AbsaOSS/spline-getting-started/main/docker/.env
docker compose up

由于服务器不联通外网,故从github上下载docker-compose.yml和.env两个文件,放在服务器/home/xxxxx/downloads/Spline/目录下,安装命令修改为:docker compose up -d,如果需要在安装完后跑一批自带的examples,则安装命令改为:SEED=1 docker compose up -d(也可不指定SEED,时候单独新建run-examples容器来跑examples,命令:docker run 2959c59d2058 -e SEED=1,由于是容器内执行,因此案例sink的csv表格文件等也在容器内部,需要取出来看)

  • compose文件定义的容器组包含5个容器:
  • rest-server: spline的核心。它通过 Producer API接收来自agent的血缘数据,并将其存储在 ArangoDB 中。另一方面,它为读取和查询血缘数据提供了 Consumer API。消费者 API 由spline UI 使用,但也可以由第三方应用程序使用。
  • ps. 血缘数据除了可通过自带的 Producer API和Consumer API来传输,也可通过配置Kafka,走Kafka通道传输。(未测试
  • arangodb:一款多模型数据库。
  • ui:查看数据血缘DAG图、查看数据源、查看Spark任务执行结果的WEB服务。

db-init:数据库初始化用,执行后自动退出。

  • run-examples:官方自带示例程序,安装完后跑一批自带的examples。

另外,由于服务器不连外网,需要把compose文件的镜像下载来源改成自建的harbor库harbor.xxxxx.com,

  • . env是环境变量配置文件,与compose文件搭配使用,需添加一条配置:DOCKER_HOST_EXTERNAL=192.168.xxx.xxx,此举是为了保证能在内网其他服务器上访问Spline各组件的web服务。.env中也指定了spline-server的安装版本为2.0.0
  • 停止容器组命令:docker compose stop,启动容器组:docker compose start。

安装结果:

web服务 url
数据库管理界面 ArangoDB Web Interface
spline-server服务状态查看 Spline REST Gateway
血缘数据可视化UI Spline - Data Lineage Tracking & Visualization

二、测试Pyspark血缘捕获

  • 测试脚本及数据放在服务器/home/xxxxx/xxxx/目录下
  • pyspark位置:/opt/spark/bin/,pyspark是Spark的Python接口,提供了对Spark功能的访问,它需要通过Py4J库与Spark JVM进程进行通信。
  • 测试主机:102.168.xxx.xxx
  • 测试环境:Spark 2.4,Scala 2.11,pysthon 3.5.1

image.png

  • 确保Spark环境正常:先cd到/usr/local/spark,然后执行命令./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
  • 确保pyspark环境正常:检查~/.bashrc系统环境变量文件,确保python路径(which python)设置正确。然后执行pyspark,进入python界面,正常。

2.1 spark-summit方式

  • 由于服务器不连外网,启用Spline血缘追踪需要Spark主机包含部分Spline相关的依赖jar包(spline agent),需要在执行命令时指定依赖的Maven下载仓库为自建nexus仓库;或者在执行测试前,修改spark-default.conf,末尾添加spark.jars.repositories https://maven.aliyun.com/repository/public,永久性生效。
  • spline agent:是配置于测试主机上的spline代理,spline agent从Spark任务的数据转换管道中沿途捕获沿血缘和元数据,并通过使用 HTTP API (称为 Producer API) ,以标准格式将其发送到spline server。
  • 在生产环境中,最好将spline agent配置到Spark集群的每台worker中,确保所有血缘都能追踪到。(未测试
  • 执行测试命令:
spark-submit    
--class org.apache.spark.deploy.PythonRunner   
--master local     #按需配置
--packages  za.co.absa.spline.agent.spark:spark-2.4-spline-agent-bundle_2.11:2.0.0     
--repositories  http://nexus.bglab.com/repository/maven-public/     
--conf  "spark.sql.queryExecutionListeners=za.co.absa.spline.harvester.listener.SplineQueryExecutionListener"     
--conf  "spark.spline.producer.url=http://192.168.100.108:8080/producer"   
python_example.py
  • 注:上面的2.4是Spark版本,2.11是Scala版本,2.0.0是Spline版本,需要与实际测试环境严格一致,否则会报错,会测试失败。
  • 遇到的问题1:Hive相关导致报错——如果Spark确定用不到Hive,那就在session.py代码里面把Hive禁用掉。

结果

2.2 pyspark方式(未测试

pyspark 
--master local 
--packages za.co.absa.spline.agent.spark:spark-2.4-spline-agent-bundle_2.11:2.0.0 
--repositories http://nexus.bglab.com/repository/maven-public/ 
--conf "spark.sql.queryExecutionListeners=za.co.absa.spline.harvester.listene r.SplineQueryExecutionListener" 
--conf "spark.spline.producer.url=http://192.168.100.108:8080/producer"

测试前,可能需要先pip安装spline_agent-0.1.2-py3-none-any.whl

四、展望

本次测试方式是以原生方式跑pyspark任务,后续可在DolphinScheduler上测试Spark SQL任务,测试ok后,再将轻量化平台上各Spark任务以非侵入式方式启用血缘追踪,数据发到spline-server。

三、参考资料

  1. 0.7 | spline (absaoss.github.io)
目录
相关文章
|
30天前
|
jenkins 测试技术 应用服务中间件
【专业测试技能】全流程掌握:部署测试环境的策略与实践
本文分享了关于部署测试环境的策略与实践。文章讨论了部署测试环境的全过程,包括服务如MySQL、Redis、Zookeeper等的部署,以及解决服务间的依赖和兼容问题。文中还介绍了使用Jenkins、Docker等工具进行部署的方法,并通过实战案例讲解了如何创建和管理Jenkins Job、配置代理服务器Nginx、进行前后端服务的访问和优化。最后,作者强调了提问的重要性,并鼓励大家通过互联网解决遇到的问题。
53 2
【专业测试技能】全流程掌握:部署测试环境的策略与实践
|
30天前
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
21 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
18天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
53 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
1月前
|
消息中间件 监控 Java
【一键解锁!】Kafka Manager 部署与测试终极指南 —— 从菜鸟到高手的必经之路!
【8月更文挑战第9天】随着大数据技术的发展,Apache Kafka 成为核心组件,用于处理实时数据流。Kafka Manager 提供了简洁的 Web 界面来管理和监控 Kafka 集群。本文介绍部署步骤及示例代码,助您快速上手。首先确认已安装 Java 和 Kafka。
313 4
|
24天前
|
消息中间件 测试技术 RocketMQ
docker部署RockerMQ单机测试环境
docker部署RockerMQ单机测试环境
|
29天前
|
关系型数据库 MySQL 测试技术
使用docker部署MySQL测试环境
使用docker部署MySQL测试环境
19 0
|
2月前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
|
2月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高中信息技术课程在线测试系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高中信息技术课程在线测试系统的详细设计和实现(源码+lw+部署文档+讲解等)
30 0
|
2月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
96 0
|
3月前
|
分布式计算 Shell Linux
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
50 0