Spline部署&测试

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 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)
目录
相关文章
|
25天前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
641 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
缓存 自然语言处理 并行计算
基于NVIDIA A30 加速卡推理部署通义千问-72B-Chat测试过程
本文介绍了基于阿里云通义千问72B大模型(Qwen-72B-Chat)的性能基准测试,包括测试环境准备、模型部署、API测试等内容。测试环境配置为32核128G内存的ECS云主机,配备8块NVIDIA A30 GPU加速卡。软件环境包括Ubuntu 22.04、CUDA 12.4.0、PyTorch 2.4.0等。详细介绍了模型下载、部署命令及常见问题解决方法,并展示了API测试结果和性能分析。
67 1
|
24天前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
193 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
25天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
69 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
25天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
42 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
25天前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
126 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
Ubuntu API Python
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
Chat-TTS chat-tts-ui 实机部署上手测试!Ubuntu服务器实机 2070Super*2 8GB部署全流程
60 1
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
160 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
2月前
|
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服务器。
112 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
3月前
|
消息中间件 测试技术 RocketMQ
docker部署RockerMQ单机测试环境
docker部署RockerMQ单机测试环境