先来看看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. malloc函数和其他内存分配函数

    1. 需要包含头文件:#i nclude 或 #i nclude 函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间 ...

  2. WPF基础知识、界面布局及控件Binding

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

  3. 快速理解Docker - 容器级虚拟化解决方案

    是什么 简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案 拿现实世界中货物的运输作类比, 为了解决各种型号规格尺寸的货物在各种运输工具 ...

  4. RFS_窗口或区域之间的切换

    1.  测试用例描述 [前置条件]: 1. 已经登录系统 [测试步骤]: 1. 验证登录成功 2. 选择[用户管理]菜单 3. 打开[新增用户]页面 4. 输入必填字段,点击[Submit]按钮 [预 ...

  5. 三层交换配置VLAN+DHCP+ACL

    使用思科模拟软件Cisco Packet Tracer Student,软件功能有限,只能架设简单的网络架构,适合初学者使用.

  6. OSG第一个Demo

    环境:Vs2010 OpenSceneGraph-3.0.1-VS10.0.30319-x86-debug-12741 OpenSceneGraph-3.0.1-VS10.0.30319-x86-re ...

  7. css页面布局

    写在前面: 页面布局整体上可以分为两类:固定宽度(一般固定960px):流式布局:将流式布局转换为固定布局很容易,只需要外围再包括一个div,为其设置宽度即可. html默认的布局方式是将每个块状标签 ...

  8. iOS 快递查询

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  9. leetcode 116- Populating Next Right Pointers in Each Node

    题目: Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...

  10. 使用pgbench测试PostgreSQL

    pgbench –help 初始化选项: -i            调用初始化模式 -F NUM  填充因子 -s NUM   规模因子(与产生数据量大小有关) Benchmarking选项: -c ...