Running Spark on Kubernetes
.
我想知道在K8s上启动Spark作业时Kubernetes控制器/调度器和Spark运行时之间的交互的更多细节。
特别是,假设我们通过以下方式启动Spark应用程序:
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 \
--..............
我的问题是:由于Spark应用程序启动时集群资源不可用,K8s可能无法立即分配5个执行器(或称为容器/POD)。Spark应用程序走哪条路?(1) 当至少分配了一个执行器时,Spark会尽快开始运行任务。(2) Spark不会启动任何任务,直到5个执行器都分配完毕。
如果你知道hadoopyarn,如果你能在hadoopyarn上运行Spark app(DynamicAllocation Disabled)的场景中回答这个问题并指出区别,那就太好了。