Seatunnel源码解析(1)-启动应用
需求
公司在使用Seatunnel的过程中,规划将Seatunnel集成在平台中,提供可视化操作。
因此目前有如下几个相关的需求:
- 可以通过Web接口,传递参数,启动一个Seatunnel应用
- 可以自定义日志,收集相关指标,目前想到的包括:应用的入流量、出流量;启动时间、结束时间等
- 在任务结束后,可以用applicationId自动从yarn上收集日志(一是手动收集太麻烦,二是时间稍长日志就没了)
材料
- Seatunnel:2.0.5
目前官方2版本还没有正式发布,只能自己下载源码编译。
从Github下载官方源码,clone到本地Idea
github:https://github.com/apache/incubator-seatunnel
官方地址:http://seatunnel.incubator.apache.org/
Idea下方Terminal命令行里,maven打包,执行:mvn clean install -Dmaven.test.skip=true
打包过程大约十几分钟,执行结束后,seatunnel-dist模块的target目录下,可以找到打好包的*.tar.gz压缩安装包
- Spark:2.4.8
- Hadoop:2.7
任意门
Seatunnel源码解析(1)-启动应用
Seatunnel源码解析(2)-加载配置文件
Seatunnel源码解析(3)-加载插件
Seatunnel源码解析(4) -启动Spark/Flink程序
Seatunnel源码解析(5)-修改启动LOGO
导读
本章将从一个具体的应用案例为出发点,解析Seatunnel启动一个应用的流程
配置应用文件
启动ST应用之前,需要先编写一个.conf的配置文件。
.conf文件的内容,包括env、source、transform、sink几部分,描述了数据的完整传递流程。
本文使用官方包提供好的示例文件"config/spark.batch.conf"
- spark.batch.conf
env {
spark.app.name = "SeaTunnel"
spark.executor.instances = 2
spark.executor.cores = 1
spark.executor.memory = "1g"
}
source {
Fake {
result_table_name = "my_dataset"
}
}
transform {
}
sink {
Console {
}
}
启动应用
../bin/start-seatunnel-spark.sh \
--master local \
--deploy-mode client \
--config example/spark.batch.conf
解析Shell启动脚本
官方的启动脚本,最后调用spark-submit命令,提交Spark应用程序。
可以看到提交的主类是:org.apache.seatunnel.SeatunnelSpark
可以初步判断SeatunnelSpark就是Seatunnel的主类入口
#!/bin/bash
...
exec ${SPARK_HOME}/bin/spark-submit --class org.apache.seatunnel.SeatunnelSpark \
--name