在YARN上运行Spark,群集模式。
我正在提交像这样的Spark程序:
spark-submit \
--class com.blablacar.insights.etl.SparkETL \
--name ${JOB_NAME} \
--master yarn \
--num-executors 1 \
--deploy-mode cluster \
--driver-memory 512m \
--driver-cores 1 \
--executor-memory 2g \
--executor-cores 20 \
toto.jar json
我可以看到2个节点上有2个作业正常运行。但我还可以看到另外两个只有一个驱动器容器的工作!
如果没有工作人员的资源,是否可以不运行驱动程序?
答案 0 :(得分:3)
实际上,有一个设置将资源限制为" Application Master" (如果是Spark,这是驱动程序):
yarn.scheduler.capacity.maximum-am-resource-percent
来自http://maprdocs.mapr.com/home/AdministratorGuide/Hadoop2.xCapacityScheduler-RunningPendingApps.html:
群集中可用于运行的最大资源百分比 应用程序主机 - 控制并发活动的数量 应用
这样,YARN不会为Spark驱动程序获取全部资源,也不会为工作人员保留资源。 Youpi!