我读了这篇:Running Spark on Kubernetes。 我想了解有关在K8s上启动Spark作业时Kubernetes Controller / Scheduler与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应用程序时群集资源不可用,K8可能无法立即分配5个执行器(或称为容器/荚)。 Spark应用采用哪种方式? (1)当至少分配了一个执行程序时,Spark会尽快开始运行任务。 (2)在分配了所有5个执行程序之前,Spark不会启动任何任务。
如果您了解Hadoop YARN,也可以回答在Hadoop YARN上运行Spark应用的情况下的问题(DynamicAllocation Disabled)并指出其中的区别。