zoukankan      html  css  js  c++  java
  • mapreduce任务失败、重试、猜測式运行机制小结

        mapreduce中我们自己定义的mapper和reducer程序在运行后有可能遇上出错退出的情况,mapreduce中jobtracker会全程追踪任务的运行情况,对于出错的任务mapreduce也定义了一套自己的处理方式。
        首先要明白的是mapreduce推断任务失败的方式。三种情况下任务会被觉得运行失败:返回非0值、产生java异常、超时(长时间没响应)。对于第一种,通经常使用于streaming程序。假设你的mapper或reducer程序结束的时候返回了非0值,那么mapreduce会觉得你的任务失败了。另外一种主要用于java写的mapreduce程序。对于第三种,预计非常多人都不知道。对于streaming,mapreduce在任务运行后会监測任务的输出(标准输出),假设任务在一定时间内无输出(这个时间能够通过mapred.task.timeout选项设定),则mapreduce会觉得这个任务失败。因此写mapreduce程序的时候一定要留意程序是否会发生超时间假死的情况,假设有这样的情况那就要考虑下程序会不会被误杀。
        在任务失败后,mapreduce会又一次运行任务,重试的次数也是能够设定的,通常是4次。
        最后还要注意的是mapreduce另一个猜測式运行机制,在这个机制下假设任务运行时间超出预期(这个预期是依据其它任务的运行时间定的),那么mapreduce会另外启动一个跟这个任务同样的任务并行运行,在某个任务最先运行完毕之后杀死其它尚未完毕的任务。这个机制主要是用来避免某个reduce任务的运行环境有问题或者某个reduce任务运行中发生了反常情况而迟迟不能完毕拖慢总体进度。可是这个机制在有些情况下也会造成问题,比如:假设你的reduce程序在同样输入并发运行的情况下会造成冲突,那么猜測式运行机制对你来说就是个极大的隐患。只是好在猜測式运行机制也是能够关闭的。
  • 相关阅读:
    随机生成30到四则运算题目2 (修改)
    随机生成30到四则运算题目2
    随机生成30道四则运算题目
    第一周学习进度表
    构建之法阅读笔记01
    个人简介
    个人简介
    bat 延时删除指定文件夹中的文件经验分享
    centos 7 (操作应用)-关闭防火墙
    mysql数据库迁移
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4020824.html
Copyright © 2011-2022 走看看