Spline部署&测试

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 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)
目录
相关文章
|
5天前
|
消息中间件 安全 Shell
国货之光——jdchain1.6.5测试网络部署
国货之光——jdchain1.6.5测试网络部署
30 13
|
1月前
|
关系型数据库 MySQL 数据库
测试部署PolarDB-X 分布式与集中式
在本文中,作者详述了在CentOS 7.9上部署测试PolarDB-X分布式与集中式数据库的过程。PolarDB-X作为阿里云优化的分布式数据库,提供高稳定性和与MySQL的兼容性,是应对单体数据库扩展性和性能瓶颈的解决方案,同时也符合国产化需求。文章介绍了部署环境准备,包括关闭防火墙和SELinux,设置系统参数,安装Python3和Docker,以及配置MySQL客户端。接着,通过PXD工具部署了PolarDB-X的集中式和分布式版,遇到的问题包括阿里云镜像源异常导致的部署失败以及指定版本安装的困扰。最后,作者进行了初步的压力测试,并对文档完善、生态工具建设以及提供更多使用案例提出了建议。
47744 10
测试部署PolarDB-X 分布式与集中式
|
18天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的高中信息技术课程在线测试系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的高中信息技术课程在线测试系统附带文章和源代码部署视频讲解等
21 6
|
4天前
|
分布式计算 Shell Linux
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
8 0
|
1月前
|
机器学习/深度学习 Shell C++
测试本地部署ChatGLM-6B | ChatGPT
ChatGLM-6B是款62亿参数的中英对话模型,类似ChatGPT,可在6GB显存(INT4量化)的GPU或CPU上运行。它提供流畅、多样的对话体验。用户可从Hugging Face或清华云下载模型配置。部署涉及创建Python环境,安装依赖,下载模型到`ckpt`文件夹。测试时加载tokenizer和模型,使用示例代码进行交互。应用包括基于MNN和JittorLLMs的推理实现,以及langchain-ChatGLM、闻达、chatgpt_academic和glm-bot等项目。5月更文挑战第10天
64 1
|
21天前
|
IDE 前端开发 时序数据库
【Docker项目实战】使用Docker部署speedtest-tracker速度测试追踪器
【6月更文挑战第4天】使用Docker部署speedtest-tracker速度测试追踪器
242 0
|
26天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线测试管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线测试管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
275 0
|
1月前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
85 1
|
1月前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(上)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
187 0
|
6天前
|
JSON Java Maven
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
19 3