spark-on-yarn:在没有工作线程的情况下执行驱动程序

kjthegm6  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(413)

在Yarn上运行Spark,群集模式。
3个数据节点
Yarn=>32 vCore,32 gb ram
我提交的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个节点上运行良好。但我也可以看到另外两个工作,只有一个驱动程序容器!

如果没有工人的资源,是否可以不运行驱动程序?

k5ifujac

k5ifujac1#

实际上,有一个设置将资源限制为“应用程序主控”(对于spark,这是驱动程序):

yarn.scheduler.capacity.maximum-am-resource-percent

从http://maprdocs.mapr.com/home/administratorguide/hadoop2.xcapacityscheduler-runningpendingapps.html:
群集中可用于运行应用程序主机的最大资源百分比—控制并发活动应用程序的数量。
这样,Yarn就不会把全部资源留给电Spark驱动,而把资源留给工人。尤皮!

相关问题