2013年(92)
分类: 信息化
2013-03-25 05:35:57
MapReduce的作业失利首要分三个层次,即jobtracker失利,tasktracker,子任务实例 1,jobtracker失利 jobtracker失利大约说是最严肃的一种失利办法了,并且在hadoop中存在单点缺点的情况下是适当严肃的,因为在这种情况下作业结束失利,尽管这种缺点的概率极小可是仍是大约避免,可以通过发起多个jobtracker,在这种情况只工作一个主的jobtracker .通过一种机制来判定那个是主的jobtracker. 2,tasktacker失利 作业工作时刻,tasktracker会通过心跳机制不断与系统jobtracker通讯,如果某个tasktracker工作缓慢或许失利,出现缺点。tasktracker就会间断或许很少想jobtracker发送心跳,jobtracker会注重到此tasktracker发送心跳的情况,然后将此tasktracker从等候任务调度的tasktracker池中移除,jobtracker会安排此tasktracker上一成功工作的map任务回来, ①,如果他们归于为结束的作业的化,reduce时间无法获取改tasktracker上的本地map输出文件,任何任务都需要从头调度---即只需是mapping时间必定是从头实行 ②,如果是reduce时间呢,如果是reduce时间天然就是实举动结束的reduce任务了,因为reduce只需实行完了的就会把输出写到Hdfs上 3,子任务失利,这个是不是可以理解为JVM等级的 ①,当map或许reduce子任务中的代码抛出失常,JVM进程会在退出之前向服进程tasktracker进程发送差错陈述,,tasktracker会将此(任务检验)task attempt标记为failed情况,开释一个槽以便工作另外一个任务 ②,关于流任务,如果流进程以非零退出代码退出工作则会标记为failed。 ③,子JVM俄然退出,即JVM差错,这时tasktracker会注重到进程现已退出,标记为failed tasktracker将子任务标记为失利后会将自身计数器减一,以便想jobtracker请求新的任务,也是通过心跳奉告jobtracker本地的一个任务检验失利。jobtracker接到任务失利的通知后,会将其从头加入到调度队伍从头分配给其他的tasktracker实行(避免将失利的任务分配给实行失利的tasktracker),可是这个检验也是有次数束缚的,默许情况下任务检验4次后仍然没有结束,就不会再重试(jobtracker会将其标记为killed),此时整个作业就实行失利了。 4,jobcleanup,recoverymanager,taskcleanup,expiretrackers,expirelaunchingtasks,监测失效,根除恢复,还有许多后台线程。。。。