MapReduce的状态和进度

MapReduce是长时间运行的批量作业,时间一般是数秒至数小时,因此需要知道作业的进度和状态。
1. 状态
状态包括:Job或task的状态(一个Job和它的每个task都有一个状态,比如:正在运行、成功完成、失败状态)、map和reduce的状态、作业计数器的状态、用户设置的状态消息或描述。
2. 进度
进度是任务完成的百分比。对于map任务,进度是已处理输入占总输入的比例。而reduce任务,情况稍微复杂。整个reduce过程分成三部分,系统根据这三部分估计已处理的reducer输入的比例。比如,如果任务已经执行reduce一半的输入,那么任务的进度是5/6。因为已经完成复制阶段和排序阶段,每个阶段占1/3,再加上已经完成reduce阶段的一半(占1/6)。
进度报告很重要,因为它表明任务的执行情况。构成进度的所有操作如下:
<1>mapper或reducer读入一条输入记录
<2>mapper或reducer写入一条输出记录
<3>在一个Reporter中设置状态描述
<4>增加计数器(使用Reporter的incrCounter( )方法)
<5>调用Reporter的progress( )任务
3. 报告状态和进度
  • 如果任务报告了进度,就会设置一个标志,表明状态报告将发送到TaskTracker。有一个独立线程每隔3秒检查一次该标志,如果已设置,则告知TaskTracker当前任务的状态。
  • Tasktracker每隔5秒发送“心跳”到JobTracker,告知该TaskTracker运行的所有任务的状态。其中,“心跳”的间隔由集群大小决定,集群越大,间隔越长。
  • 计数器发送的时间间隔通常大于5秒,因为计数器占用的带宽相对较高。
4. 作业的完成
当JobTracker收到作业的最后一个任务已完成的通知后,把作业的状态设置为“成功”。然后,JobClient查询状态,知道任务已成功完成,便向用户打印一条消息。另外,可以通过设置job.end.notification.url属性,使JobTracker发送HTTP作业通知,让客户端收到回调命令。
最后,Jobtracker清空作业的工作状态,并指示TaskTracker也清空工作状态(比如,删除中间输出)。
5. 失败的情况
  5.1 任务失败
  • map或reduce任务中的用户代码抛出异常,此时,子JVM进程会在退出之前向TastTracker发送错误报告。错误报告最后被记入用户日志,TaskTracker将此次task attempt标记为failed,并释放该任务槽。
  • 当streaming任务失败,因为属性stream.non.zero.exit.is.failure的值为true(true是默认值),streaming进程以非零退出代码退出,task attempt被标记为failed。
  • 子JVM突然退出(可能原因是JVM存在bug),此时TaskTracker会注意到进程已经退出,将task attempt标记为failed。
  5.2 任务挂起
  • 当TaskTracker接收进度报告超时,便把任务标记为failed,JVM子进程被自动杀死。超时时间由mapred.task.timeout属性设定。如果超时时间设为0,任务将不进行超时判定。被挂起的任务永远不会释放任务槽,最终降低整个集群的效率。
  • JobTracker通过“心跳”知道一个任务失败后,会重新调度该任务的执行,但会尽量避免使用原来失败过的任务槽。
  • 当一个任务的失败次数超过4次,该任务将不会再被执行。失败次数由属性mapred.map.max.attempts(map任务)或mapred.reduce.max.attempts(reduce任务)设定,默认值都为4。
  • 另外,还可以设置在不触发作业失败的情况下允许任务失败的最大百分比,由属性mapred.max.map.failures.percent(map任务)和mapred.max.reduce.failures.percent( reduce任务)设定。
  5.3 TaskTracker失败
  • 如果JobTracker接收“心跳”超时,那么它会把这个TaskTracker移除。
  • 如果某个TaskTracker失败任务数远大于集群平均失败任务数,那么这个TaskTracker会被JobTracker列入黑名单。被列入黑名单的TaskTracker可以通过重启从黑名单中移出。

  5.4 JobTracker失败

JobTracker失败是所有失败中最严重的一种,但概率很小。因为这是一个单点故障,所以发生后作业注定失败。

Hadoop学习笔记(二):MapReduce的进度和状态相关推荐

  1. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  2. Hadoop学习笔记:MapReduce框架详解

    原文:http://blog.jobbole.com/84089/ 原文出处: 夏天的森林 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手, ...

  3. hadoop 学习笔记:mapreduce框架详解

    开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...

  4. Hadoop-HBASE案例分析-Hadoop学习笔记二

    之前有幸在MOOC学院抽中小象学院hadoop体验课.  这是小象学院hadoop2.X概述第八章的笔记  主要介绍HBase,一个分布式数据库的应用案例. 案例概况: 1)时间序列数据库(OpenT ...

  5. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  6. Hadoop学习笔记—18.Sqoop框架学习

    Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...

  7. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  8. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  9. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

  10. Hadoop学习笔记—16.Pig框架学习

    Hadoop学习笔记-16.Pig框架学习 一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin, ...

最新文章

  1. 遮罩,在指定元素上进行遮罩
  2. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
  3. oracle数据库查询人员和岗位,oracle岗位需求收集
  4. 21、深入浅出MFC学习笔记,Application Framework简介
  5. Linux DISPLAY作用
  6. python学习——把计算GC含量的代码封装成函数
  7. 第十一章 “她”值多少钱
  8. bing搜索引擎入口_互联网流量入口——头条的搜索计划
  9. 系统时钟(汇编语言程序设计)
  10. Java基础学习总结(117)——Feign入门使用详解
  11. VS2017更改设置目录一劳永逸的方法
  12. java actor和线程有什么区别_java – 在Akka Actors中使用OpenGL:保证单个线程用于特定的actor...
  13. 【渝粤教育】国家开放大学2018年秋季 0222-21T模拟电子电路 参考试题
  14. ANT的安装/配置笔记
  15. 反三角函数在线计算机,反三角函数(反正弦,反余弦,反正切,反余切,反正割,反余割)在线计算器_三贝计算网_23bei.com...
  16. 路由器开发相关知识总结 —— 光口和电口
  17. uni-app微信、支付宝小程序-银联支付
  18. 按键精灵手机助手之实战篇(一)需求理论分析
  19. 用devc++表白_【民大表白墙】表白七号楼332进门右面下铺哥哥的第四天。你再不来,我要下雪了。云雀叫了一整天。...
  20. (CCNET)criss-cross attention network学习笔记

热门文章

  1. PHP 将二维数组转成一维数组
  2. iOS 修改状态栏颜色
  3. BZOJ 1085: [SCOI2005]骑士精神( IDDFS + A* )
  4. Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
  5. CImage 获取图片RGB 、图片高和宽;
  6. [转]rails常用验证方法
  7. Tomcat—logs文件夹中不再产生日志文件
  8. RabbitMQ WEB管理端
  9. 经典排序算法(十九)--Flash Sort
  10. Linux下rpm安装git