您现在的位置: 爱51代码网 >> 范文 >> 文章正文
MapReduce错误任务失败处理 .

MapReduce错误任务失败处理 .
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,监测失效,清除恢复,还有好多后台线程。。。。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    保险受益人制度相关问题的探讨
    初中生地理读图能力培养的研究
    搞笑生日祝福
    Oracle恢复内部原理(介质恢
    在 Oracle 中如何确定远程 s
    为什么RHEL 6上没有ASMLIB?
    sharepoint 2010 获取用户信
    设计包含max函数的队列
    随机从数组中取出指定的不重
    C++奋斗小蜗牛在请客源代码
    java版坦克大战源代码
    hdu 1789 贪心算法源代码
    中间件基础知识
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |