本文为《 Hadoop 权威指南第四版 》(英文原版) 读书笔记,仅限交流使用,转载请注明出处,多谢。
YARN - 失败时所做的处理
Henvealf/文
YARN 的失败总共包含四种实体的失败:task,application master,node manager 和 resource manager。
Task 失败
task 的运行也都会称为 尝试(attempt) task。可以理解为 task 的运行被认为是试试看看,不能保证一定会成功。
task 失败的第一种情况就是用户的 map task 或者 reduce task 代码在执行的之后抛出了运行时异常。如果发生了,就做以下操作:
- task JVM 会在退出之前报告失败给他的 AppMaster。
- 错误会立刻写进用户的日志中。
- AppMaster 将 task 标记为 fail。
- 释放 task 的容器,以留给其他的 task 使用。
对于 Streaming task,如果程序执行的退出码是 0,就将其标记为 fail。这个行为是使用 stream.non.zero.exit.is.failure 属性来设置的。
task 失败的另一种情况就是 JVM 意外的退出 – 可能是因为 MapReduce 用户配置的环境导致了 JVM 出现了 bug。 在这种情况下,
- node manager 注意到处理已经退出,就报告给 AppMaster。
- AppMaster 就会将 task 标记为 failed。
挂起的 task 使用不同的方式处理。
- Ap