团队的计算平台目前还在用 apache-spark-on-k8s,也就是 2.2 版本的 Spark,2.3 其实已经老早支持原生的 K8S 调度后台支持了。
apache-spark-on-k8s 分支上应该大部分代码合并进去了的,还有哪些不同,还没有仔细对比过,至少镜像是做了统一的,我认为也是合理的,不然像我们团队,维护好几个不同的镜像,而其实像 Driver 和 Executor 这样的镜像,基本上就是启动参数的细微差别,维护两个确实没有必要。
对比一下两个版本(2.2 vs. 2.4.3)的 Spark-pi 提交脚本。
# 2.2
bin/spark-submit \ --deploy-mode cluster \ --class org.apache.spark.examples.SparkPi \ --master k8s://<k8s-apiserver-host>:<k8s-apiserver-port> \ --kubernetes-namespace default \ --conf spark.executor.instances=5 \ --conf spark.app.name=spark-pi \ --conf spark.kubernetes.driver.docker.image=kubespark/spark-driver:v2.2.0-kubernetes-0.5.0 \ --conf spark.kubernetes.executor.docker.image=kubespark/spark-executor:v2.2.0-kubernetes-0.5.0 \ --conf spark.kubernetes.initcontainer.docker.image=kubespark/spark-init:v2.2.0-kubernetes-0.5.0 \ --conf spark.kubernetes.resourceStagingServer.uri=http://<address-of-any-cluster-node>:31000 \ ./examples/jars/spark-examples_2.11-2.2.0-k8s-0.5.0.jar
# 2.4.3
bin/spark-submit \ --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port> \ --deploy-mode cluster \ --name spark-pi \ --class org.apache.spark.examples.SparkPi \ --conf spark.executor.instances=5 \ --conf spark.kubernetes.container.image=<spark-image> \ local:///path/to/examples.jar
你看,明显简洁很多嘛。
节后准备调研一下,推动 Spark on K8S 的方案的升级。
END.