Spark on Yarn提交配置没有生效
2021-06-23 本文已影响0人
小KKKKKKKK
在Yarn上提交Spark任务,在提交时命令为
spark-submit --master yarn --deploy-mode client --num-executors 1 --executor-memory 512mb --executor-cores 1 --driver-memory 1g --driver-cores 1 --jars xxx.jar --class xxx xxx.jar
理论上提交的资源应该为内存1.5g,虚拟CPU2。
但是提交到Yarn,通过Web UI发现提交的配置并没有生效
可以发现用了9个虚拟CPU,9GB内存
这是为什么呢?
通过查找资料发现,是因为spark开启了动态资源配置spark.dynamicAllocation.enabled
以下相关参数:
spark.dynamicAllocation.minExecutors,动态分配最小executor个数,在启动时就申请好的,默认0;
spark.dynamicAllocation.maxExecutors,动态分配最大executor个数,默认infinity;
spark.dynamicAllocation.initialExecutors动态分配初始executor个数默认值=spark.dynamicAllocation.minExecutors;
spark.dynamicAllocation.executorIdleTimeout当某个executor空闲超过这个设定值,就会被kill,默认60s;
spark.dynamicAllocation.cachedExecutorIdleTimeout,当某个缓存数据的executor空闲时间超过这个设定值,就会被kill,默认infinity;
spark.dynamicAllocation.schedulerBacklogTimeout,任务队列非空,资源不够,申请executor的时间间隔,默认1s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout,同schedulerBacklogTimeout,是申请了新executor之后继续申请的间隔,默认=schedulerBacklogTimeout;