我一直在运行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
答案 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)丢失(即不再可用),原因是:
FetchFailedException
可能被抛出(又名 OOMed )或其他一些未处理的异常。您应该使用Web UI,Spark History Server或针对Hadoop YARN的yarn logs -applicationId等特定于群集的工具查看Spark应用程序的日志(这是您的情况)。
解决方案通常是调整Spark应用程序的内存。