spark on k8s 开发部署简单实践

发布时间 2023-08-21 22:53:53作者: 荣锋亮

实际上就是一个简单的实践,方便参考,对于开发以及运行,集成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