Hadoop源代码分析(类TaskStatus)
来源:互联网 发布:凡科网站源码下载 编辑:程序博客网 时间:2024/06/06 03:07
我们先分析Task,这是一个规模比较大的类,类图如下。Task是一个虚类,它有两个子类,MapTask和ReduceTask,分别是Map任务和Reduce任务的抽象。
在分析Task相关类之前,我们来分析和ID,JobID,TaskID相关的类。
我们从TaskStatus开始来分析Task相关的类,TaskStatus,一看类名就知道它保持了Task的状态。从前面介绍MapReduce的过程中,我们了解到,MapReduce的过程可以处于下面6个阶段,它们定义在枚举:TaskStatus.Phase中,包括如下状态:
l STARTING:开始
l MAP:Map阶段
l SHUFFLE:混洗阶段
l SORT:排序阶段
l REDUCE:Reduce阶段
l CLEANUP:清理阶段
除了阶段,TaskStatus还维护任务的状态,很明显,如果不考虑异常,一次任务应该包括准备,运行和清理三个主要阶段,其实TaskStatus的正常流程和这个非常类似,同时,考虑到任务可能异常结束或被JobTracker杀死,系统还引入配合这两种异常情况的状态,其状态如下:
图中引入了复合状态,只是表明这些状态中包含的状态(如绿色的COMMIT_PENDING和SUCCESSED)可以转移到外面的状态(FAILED)。
(注:这张图是通过人肉逆向工程画出来的,在以后的分析过程中,这张图会根据我们对系统的深入了解而修改)
接下来我们来看TaskStatus的其它成员,它的完整类图如下,基本上是一些信息,没有复杂的操作。
它包含的主要状态信息有:taskid(对应的任务号),progress(处理情况),runState(运行状态,注意和任务阶段做区分),diagnosticInfo(诊断信息),stateString(运行状态),taskTracker(对应的taskTracker),startTime(开始时间),finishTime(结束时间),outputSize(输出大小),phase(任务阶段,注意和运行状态做区分),counters(相关的计数器),includeCounters(是否包含成员变量counters)nextRecordRange(处理的记录范围)。
TaskStatus有两个子类,分别是MapTaskStatus(没有添加任何新的成员变量)和ReduceTaskStatus。ReduceTaskStatus是Reduce任务的状态,它包含了新信息shuffleFinishTime(shuffle结束时间)和sortFinishTime(sort结束时间)。同时,获取Map结果出错时,对应的Map的TaskAttemptID会保存在failedFetchTasks中,等待上报。
最后我们看一下辅助类Counters/Counters.Counter/Counters.Group,它们保存了MapReduce过程中的一些统计计数器,Counters.Counter记录了一个计数器的<名字,显示名,值>,Counters.Group将相关的Counters.Counter聚合成组,并引入组名,组显示名。
- Hadoop源代码分析(类TaskStatus)
- Hadoop源代码分析(类Task)
- Hadoop源代码分析(一)
- Hadoop源代码分析(一)
- Hadoop源代码分析(二)
- Hadoop源代码分析(三)
- Hadoop源代码分析(IFile)
- Hadoop源代码分析(MapTask)
- Hadoop源代码分析(一)
- Hadoop源代码分析(三)
- Hadoop源代码分析(九)
- Hadoop源代码分析(一二)
- Hadoop源代码分析(*IDs类和*Context类)
- Hadoop源代码分析(MapTask辅助类 I)
- Hadoop源代码分析(MapTask辅助类,II)
- Hadoop源代码分析(MapTask辅助类,III)
- Hadoop-0.20.0源代码分析(01)
- Hadoop-0.20.0源代码分析(02)
- 2012百度校园招聘笔试杭州站
- Hadoop源代码分析(*IDs类和*Context类)
- Solaris/Linux 命令行 简单手册
- java中的设计模式(三)--抽象工厂模式 反射机制
- Linux 查看rpm安装
- Hadoop源代码分析(类TaskStatus)
- cxf-Writing a service with Spring
- Hadoop源代码分析(IFile)
- Solaris-NTP時間同步
- C语言中不同进制数的输入输出及表示方法
- Hadoop源代码分析(Task的内部类和辅助类)
- C/C++ 代码换行问题
- 【Test Design Studio 3】-02.智能提示功能增加
- Hadoop源代码分析(类Task)