丢失Spark Executors,其中包含许多未完成的任务

时间:2017-05-23 19:13:31

标签: apache-spark apache-spark-sql yarn cloudera

无论是使用动态分配还是显式指定执行程序(16)和执行程序核心(8),即使未完成的任务远远超出当前执行程序数,我也一直在丢失执行程序。

例如,我有一份工作(Spark SQL),运行超过27,000个任务,其中14,000个完成,但执行者"腐烂"从128下降到16,还有数千项任务尚未完成。日志没有注意到导致这些丢失执行者的任何错误/异常。

这是一个在AWS EC2实例上运行的Cloudera CDH 5.10集群,具有136个CPU内核和Spark 2.1.0(来自Cloudera)。

17/05/23 18:54:17 INFO yarn.YarnAllocator: Driver requested a total number of 91 executor(s).
17/05/23 18:54:17 INFO yarn.YarnAllocator: Canceling requests for 1 executor container(s) to have a new desired total 91 executors.

这是一个缓慢的衰变,每分钟左右的执行者被删除。

一些可能相关的配置选项:

spark.dynamicAllocation.maxExecutors = 136
spark.dynamicAllocation.minExecutors = 1
spark.dynamicAllocation.initialExecutors = 1
yarn.nodemanager.resource.cpu-vcores = 8
yarn.scheduler.minimum-allocation-vcores = 1
yarn.scheduler.increment-allocation-vcores = 1
yarn.scheduler.maximum-allocation-vcores = 8

为什么遗嘱执行人员会腐朽,我该如何防止它呢?

0 个答案:

没有答案