【发布时间】:2013-11-06 06:34:02
【问题描述】:
我正在测试 map reduce 的容错性。 我发现如果我在其中一个任务节点中停止网络服务,分配给该节点的任务将被重新分配给其他节点。太好了。
但是,如果映射器抛出异常(例如:访问某些本地资源时出错),MR 作业将完成而不会将失败的任务重新分配给其他节点。
有什么方法可以让 Hadoop 将失败的任务重新分配给其他节点?也许抛出一些指定的异常?
谢谢。
【问题讨论】:
我正在测试 map reduce 的容错性。 我发现如果我在其中一个任务节点中停止网络服务,分配给该节点的任务将被重新分配给其他节点。太好了。
但是,如果映射器抛出异常(例如:访问某些本地资源时出错),MR 作业将完成而不会将失败的任务重新分配给其他节点。
有什么方法可以让 Hadoop 将失败的任务重新分配给其他节点?也许抛出一些指定的异常?
谢谢。
【问题讨论】:
Task 是从哪个方法抛出异常的?
如果您从 TaskUmbilicalProtocol.done() 方法抛出异常,您可以尝试其他方法。
您可以尝试覆盖 TaskUmbilicalProtocol.fatalError() 方法来引发异常。
【讨论】: