什么时候可以资源管理器报告" AM Release Container"手术成功?

时间:2016-11-29 16:22:21

标签: apache-spark yarn cloudera-cdh

我一直在运行Spark应用程序,其中一个阶段因FetchFailedException而失败。大致在同一时间,资源管理器日志中出现类似于以下内容的日志。

<data> <time>,988 INFO org.apache.hadoop.yarn.server.resourcemanager.RMAudtiLogger: User=<user> OPERATION=AM Released Container TARGET=SchedulerApp RESULT=SUCCESS APPID=<appid> CONTAINERID=<containerid>

我的应用程序使用的不仅仅是纱线,而是已经运行了好几天。我期望发生的是其他应用程序启动并希望使用集群,资源管理器杀死了我的一个容器,以便为其他容器提供资源。

任何人都可以帮我验证我的假设和/或指向我描述资源管理器输出的日志消息的文档吗?

编辑: 如果它有助于我运行的Yarn版本是2.6.0-cdh5.4.9

1 个答案:

答案 0 :(得分:0)

关于INFO的{​​{1}}消息来自org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSAppAttempt。我对代码的模糊理解告诉我,这是由于容器发布成功,这意味着Spark应用程序的ApplicationMaster容器已成功完成。

我刚回答了一个类似的问题Why Spark application on YARN fails with FetchFailedException due to Connection refused?(你的问题几乎是重复的)。

  

当reducer任务(对于ShuffleDependency)无法获取shuffle块时,抛出FetchFailedException异常。

OPERATION=AM Released Container的根cause通常是因为执行者(使用用于随机块的BlockManager)丢失(即不再可用),原因是:

  1. FetchFailedException可能被抛出(又名 OOMed )或其他一些未处理的异常。
  2. 使用Spark应用程序的执行程序管理工作程序的集群管理器,例如YARN强制执行容器内存限制,并最终因内存使用过多而决定终止执行程序。
  3. 您应该使用Web UI,Spark History Server或针对Hadoop YARN的yarn logs -applicationId等特定于群集的工具查看Spark应用程序的日志(这是您的情况)。

    解决方案通常是调整Spark应用程序的内存。