实际上就是一个简单的实践,方便参考,对于开发以及运行,集成ci/cd 以及dophinscheduler 任务调度
为了方便开发的spark 应用共享以及使用基于s3 进行文件存储(当然dophinscheduler 也是支持自己的资源库的)
参考图
玩法说明
基于gitlab 进行代码管理,通过ci/cd 进行spark app 的构建,同时会copy 到s3 存储中,对于spark_submit 会基于s3 进行app 的加载
然后基于k8s 模式进行调度,对于需要的结果数据可以存储到s3 或者db中
spark app 开发
对于spark app 开发,实际上核心还是对于以来管理的处理解决方法比较多
- all in one spark
直接打包到spark 应用中,可能需要频繁修改spark - app 使用fat jar
在打包的时候包含以来到jar 中,比较方便,但是可能会造成jar 太大 - 通过pacakges 坐标模式(运行时自动下载依赖)
- in spark + fat jar 混合模式
将部分常用,同时比较重要的放到spark 中,fat jar 只存储应用自己需要的领域特定的
说明
以上是一个简单的业务实际,可以参考,基于ci/cd 可以简化提升我们基于spark 开发的灵活性以及稳定性
参考资料
https://spark.apache.org/docs/latest/running-on-kubernetes.html
https://dolphinscheduler.apache.org/zh-cn
https://maven.apache.org/plugins/maven-assembly-plugin/
https://github.com/sbt/sbt-assembly