DriverDisassociated|Lostexecutor

昨天在Spark Sql上执行几条涉及数据量几百G的Sql语句时频繁失败,日志中出现大量以下错误:

ERROR executor.CoarseGrainedExecutorBackend: Driver Disassociated [akka.tcp://sparkExecutor@ip-10-0-20-22:62262] -> [akka.tcp://sparkDriver@ip-10-0-20-30:14214] disassociated! Shutting down.

ERROR cluster.YarnClusterScheduler: Lost executor 124 on ip-10-0-20-22: remote Akka client disassociated

随后,ssh到10.0.20.22上看yarn的NodeManager的日志,发现下面这条日志:

INFO org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger: USER=root OPERATION=Container Finished - Killed   TARGET=ContainerImpl    RESULT=SUCCESS  APPID=application_1428571334989_100355  CONTAINERID=container_1428571334989_100355_01_000281

从这条日志可以看出,该Container被yarn kill了(RESULT=SUCCESS不准确)

这个错误有以下特点:

  1. 只有数据量几百G的sql查询才会失败
  2. application的非常多的container被kill

结合以上特点,推断可能是oom(out of memory)了,但日志中又没有看到oom的报错且container是被yarn kill了,进一步推断可能是executor使用的内存超过了配置的值(通过spark.executor.memory设置),并且超出使用的内存量超过了spark.yarn.driver.memoryOverhead的值。

尝试将spark.yarn.driver.memoryOverhead调大至10G,执行原来失败的语句,成功,问题解决(如果是executor内存超了,相应调大spark.yarn.excutor.memoryOverhead的值)。


如果你遇到Driver Disassociated的问题,还有一个原因可能是executor连不上Driver,可能是网络问题或者host配置问题,这时你需要确认报错的container是否能连上Driver


欢迎关注我的微信公众号:FunnyBigData

DriverDisassociated|Lostexecutor_第1张图片
FunnyBigData

你可能感兴趣的:(DriverDisassociated|Lostexecutor)