先来看看TaskAttemptContext的类图

Figure1:TaskAttemptContext类图

用户向Hadoop提交Job(作业),Job在JobTracker对象的控制下执行。Job不是独立完成的,Job提交后,Hadoop根据集群的规模将Job分解为若干个Task(任务),然后分发到集群中,在TaskTracker的控制下运行。Task包括Map Task和Reduce Task,是MapReduce的Map操作和Reduce操作的地方。

要了解这个类,还得去看看另一个类——TaskAttemptID,Figure2是TaskAttemptID的类图:

Figure2:TaskAttemptID类图

TaskAttemptID的功能就是提供一个task attempt的ID,而一个task attempt是一个Map Task或Reduce Task实例。TaskAttemptID由两部分组成,第一部分是TaskID,第二部分是task attempt序号。TaskAttemptID的格式如下:

attempt_201108091551_0001_m_000000_0  

attempt_local_0001_m_000000_0

attempt_201108091551_0001_m_000000_0表示2011年8月9日15时51分启动的JobTracker中第0001号作业的第000000号map task的第0号task attempt。

分段来分析就是:

attempt:表示该标识代表task attempt;

201108091551:表示JobTracker启动时间;

0001:表示在JobTracker上运行的0001号job;

000000:如果紧跟后面的字母是“m”,表示000000号map task,如果紧跟后面的字母是“r”,则表示000000号reduce task;

0:表示0号task attempt;

第二种格式有点不一样,在第二个字段中不是JobTracker的启动日期,而是local,表示单机或伪集群模式运行,其他字段含义与第一种格式一样。

分析了TaskAttemptID类后,我们现在来分析TaskAttemptContext类。由类名可以知道,该类是提供task attempt的相关信息。

getTaskAttemptID获取task attempt的ID,即类似attempt_local_0001_m_000000_0;

setStatus设置task当前的状态;

getStatus获取task当前的状态;

progress报告进度,这是个空方法,子类会通过重写这份方法来进行相关操作,如使用StatusReporter报告进度;

TaskInputOutputContext继承TaskAttemptContext,重写了setStatus方法和progress方法。在TaskInputOutputContext的这两个方法中,都使用StatusReporter对象。可见,继承TaskAttemptContext的子类主要是重写这两个方法来完成工作的。

Hadoop之TaskAttemptContext类和TaskAttemptID类的更多相关文章

  1. Hadoop: Text类和String类的比较

    一般认为Text类和String类是等价的,但二者之间其实存在着不小差别: 以<Hadoop权威指南>中的案例为例,给定字符串  String s = "\u0041\u00DF ...

  2. JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  3. 【转】UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  4. Java如何解决脆弱基类(基类被冻结)问题

    概述  大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系).实际上80%的代码应该完全用interfaces写,而不是通过extends.“JAVA设计模式”一书详细阐述了怎样用 ...

  5. 类A have-a 类B,类B访问类A public 成员

    需求是类A中包含类B,而类B又需要访问类A的public属性的成员. 首先类B中要访问类A的属性,那么对于类B而言,我们必须要知道有类A这个类,所以在类B的具体实现之前我们需要前向声明类A. 对于类A ...

  6. UML(一) 类图及类间关系

    原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...

  7. JAVA正则表达式:Pattern类与Matcher类详解(转)

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...

  8. C# 根据类名称创建类示例

    //获得类所在的程序集名称(此处我选择当前程序集) string bllName = System.IO.Path.GetFileNameWithoutExtension(System.Reflect ...

  9. 使用date类和format类对系统当前时间进行格式化显示

    一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...

随机推荐

  1. http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html

    http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html

  2. 读写ZIP&JAR文件

    1. ZipEntry 是包括目录的,也就是目录也被当做是一个单独的Entry,在列出它下面的文件之前先列出这个directory entry. 这个在解压ZIP文件的的时候特别有用,我们要先创建这个 ...

  3. .emacs

    (tool-bar-mode 0)(menu-bar-mode 0)(blink-cursor-mode 0);;(set-scroll-bar-mode nil);;(global-linum-mo ...

  4. JavaScript:综合案例---房贷计算器的实现

    房贷计算器的实现 (可以使用的编辑器:webStrom.subLime.notePad++.editPlus) 输入数据: 平方单价 70,000.00 元/平方  B1 租金 382.50 元/平方 ...

  5. 图像分割之(三)从Graph Cut到Grab Cut

    zouxy09@qq.com http://blog.csdn.net/zouxy09 上一文对GraphCut做了一个了解,而现在我们聊到的GrabCut是对其的改进版,是迭代的Graph Cut. ...

  6. git安装步骤

    Git简单使用说明 安装git msysgit是Windows版的Git,从https://git-for-windows.github.io下载,然后按默认选项安装即可(注:安装适合自己电脑版本的g ...

  7. PHP回调函数的几种用法

    PHP回调函数的实现方法 目录 前言      全局函数的回调      类静态函数的回调      对象的方法的回调      PHP事件模型(观察者模式)的实现思路    前言 最近在开发一个PH ...

  8. gdb使用_转

    在编程调试中,经常出现段错误,此时可用gdb调试.具体方法为注册段错误信号处理函数,在处理函数中启动gdb.具体代码如下:void segv_handler(int no) { char buf[51 ...

  9. shell中引用其他脚本的方法

    在Shell中引用其他脚本的方法是source   filename.sh 或    .    filename.sh 注意:      .   和   filename.sh之间必须有空格

  10. Vue.2.0.5-插件

    开发插件 插件通常会为Vue添加全局功能.插件的范围没有限制--一般有下面几种: 添加全局方法或者属性,如: vue-element 添加全局资源:指令/过滤器/过渡等,如 vue-touch 通过全 ...