dolphinscheduler 调度spark on k8s
dolphinscheduler 对于k8s的支持可以使用spark任务模式选择k8s 配置,当然也可以直接通过k8s 集成通过容器镜像模式运行,两种方式各有利弊,但是完全基于k8s模式会比较方便些
集成玩法说明
- spark 任务模式
此模式我们需要配置SPARK_HOME 给每个dolphinscheduler worker 节点,同时对于多版本的支持也是可以的,我们通过对于不同worker节点配置不同的版本就可以了,如果是使用非容器模式还是很方便的,但是如果dolphinscheduler给予了容器部署,就需要制作不少镜像
- 通过k8s任务模式
此模式只需要配置k8s 任务,同时制定spark镜像,对于运行通过制定运行命令(spark_submit)以及配置参数,使用上还是比较简单的,但是注意参数配置
配置实例
- spark 任务模式
因为我worker 使用了docker 没有配置,主要演示下
- k8s 任务模式
因为执行命令以及参数需要时数组,不然就会有问题,注意
命令参考["/opt/spark/bin/spark-submit"]
参数配置参考["--master","k8s://https://xxxxxx:6443","--deploy-mode", "cluster","--name", "spark-pi","--class", "org.apache.spark.examples.SparkPi","--conf","spark.executor.instances=1","--conf","spark.kubernetes.authenticate.driver.serviceAccountName=spark","--conf","spark.kubernetes.container.image=apache/spark:3.4.1","local:///opt/spark/examples/jars/spark-examples_2.12-3.4.1.jar"]
参考效果图
- 基于worker 节点的spark 配置
- 通过集成k8s任务模式
说明
实际上目前dolphinscheduler版本的功能已经很强大,全面了,支持了不少数据源,以及调度模式,但是目前官方文档感觉写的不是很好,没有跟进,对于实际使用还是得多思考尝试
参考资料
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.7/guide/task/spark
https://dolphinscheduler.apache.org/zh-cn/docs/3.1.7/guide/task/kubernetes