您的位置:首页 > 运维架构

Hadoop错误处理

2016-05-09 20:40 162 查看
出现的错误主要有以下三种:

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协调控制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: