Hadoop错误处理

出现的错误主要有以下三种:
1)Task失败
2)JobTracker失败
3)TaskTracker失败

Task失败
1)当map或者reduce子任务中的代码抛出异常,JVM进程会在退出之前向主进程tasktracker进程发送错误报告,tasktracker会将此(任务尝试)task attempt标记为failed状态,释放一个槽以便运行另外一个任务。
2)对于流任务,如果流进程以非零退出运行则会标记为failed
3)子JVM突然退出(JVM错误),这时tasktracker会注意到进程已经退出,标记为failed
4)tasktracker将子任务标记为失败后会将自身计数器减一,以便向jobtracker中申请新的任务,也是通过心跳告知jobtracker本地的一个任务尝试失效
5)jobtracker接到任务失败的通知后,会将其重新加入到调度队列重新分配给其他的tasktracker执行(避免将失败的任务分配给执行失败的tasktracker),但是这个尝试也是有次数限制的,默认情况下任务尝试4次后仍然没有完成,就不会再重试(jobtracker会将其标记为killed),此时整个作业就执行失败了。

TaskTracker失败
1)TaskTracker一旦失败,就会停止向jobtracker发送心跳
2)同时jobtracker从任务池中将此tasktracker删除,tasktracker上运行的任务将会被移送到其他tasktracker节点上运行
3)如果每个tasktracker上面的任务失败次数远远高于其他节点,jobtracker就把该tasktracker放入到黑名单中
4)如果成功完成map任务,那么reduce任务也无法访问到存储在tasktracker本地文件系统上的中间结果,需要重新被执行。

JobTracker失败
1)JobTracker失败是最严重的一种失败方式了,而且在Hadoop中存在单点故障的情况下是相当严重的。
2)可以通过启动多个JobTracker,在这种情况只运行一个主的jobtracker,主的jobtracker由zookeeper协调控制

你可能感兴趣的:(mapreduce,hadoop,容错)