Hadoop源代码分析(Task的内部类和辅助类)
来源:互联网 发布:凡科网站源码下载 编辑:程序博客网 时间:2024/06/05 18:57
从前面的图中,我们可以发现Task有很多内部类,并拥有大量类成员变量,这些类配合Task完成相关的工作,如下图。
MapOutputFile管理着Mapper的输出文件,它提供了一系列get方法,用于获取Mapper需要的各种文件,这些文件都存放在一个目录下面。
我们假设传入MapOutputFile的JobID为job_200707121733_0003,TaskID为task_200707121733_0003_m_000005。MapOutputFile的根为
{mapred.local.dir}/taskTracker/jobcache/{jobid}/{taskid}/output
在下面的讨论中,我们把上面的路径记为{MapOutputFileRoot}
以上面JogID和TaskID为例,我们有:
{mapred.local.dir}/taskTracker/jobcache/job_200707121733_0003/task_200707121733_0003_m_000005/output
需要注意的是,{mapred.local.dir}可以包含一系列的路径,那么,Hadoop会在这些根路径下找一个满足要求的目录,建立所需的文件。MapOutputFile的方法有两种,结尾带ForWrite和不带ForWrite,带ForWrite用于创建文件,它需要一个文件大小作为参数,用于检查磁盘空间。不带ForWrite用于获取以建立的文件。
getOutputFile:文件名为{MapOutputFileRoot}/file.out;
getOutputIndexFile:文件名为{MapOutputFileRoot}/file.out.index
getSpillFile:文件名为{MapOutputFileRoot}/spill{spillNumber}.out
getSpillIndexFile:文件名为{MapOutputFileRoot}/spill{spillNumber}.out.index
以上四个方法用于Task子类MapTask中;
getInputFile:文件名为{MapOutputFileRoot}/map_{mapId}.out
用于ReduceTask中。我们到使用到他们的地方再介绍相应的应用场景。
介绍完临时文件管理以后,我们来看Task.CombineOutputCollector,它继承自org.apache.hadoop.mapred.OutputCollector,很简单,只是一个OutputCollector到IFile.Writer的Adapter,活都让IFile.Writer干了。
ValuesIterator用于从RawKeyValueIterator(Key,Value都是DataInputBuffer,ValuesIterator要求该输入已经排序)中获取符合RawComparator<KEY> comparator的值的迭代器。它在Task中有一个简单子类,CombineValuesIterator。
Task.TaskReporter用于向JobTracker提交计数器报告和状态报告,它实现了计数器报告Reporter和状态报告StatusReporter。为了不影响主线程的工作,TaskReporter有一个独立的线程,该线程通过TaskUmbilicalProtocol接口,利用Hadoop的RPC机制,向JobTracker报告Task执行情况。
FileSystemStatisticUpdater用于记录对文件系统的对/写操作字节数,是个简单的工具类。
- Hadoop源代码分析(Task的内部类和辅助类)
- Hadoop源代码分析(类Task)
- Hadoop源代码分析(MapTask辅助类 I)
- Hadoop源代码分析(MapTask辅助类,II)
- Hadoop源代码分析(MapTask辅助类,III)
- 内部类和外部类的使用区间分析
- Java内部类的分析和整理
- Java内部类原理分析(静态内部类和成员内部类)
- 类可以访问它的内部类(和内部类的内部类)的所有成员
- 嵌套类(静态内部类)和普通内部类的用法和总结
- 静态内部类类和普通内部类(2)
- Java基础----其他类的总结(二) 以及内部类和匿名内部类
- Java类和接口(常规内部类、静态内部类、局部内部类、匿名内部类、抽象类、接口)
- Hadoop源代码分析(*IDs类和*Context类)
- JAVA内部类的分析
- java内部类的分析
- 匿名内部类的分析
- Android源代码中使用的内部类
- Hadoop源代码分析(类TaskStatus)
- cxf-Writing a service with Spring
- Hadoop源代码分析(IFile)
- Solaris-NTP時間同步
- C语言中不同进制数的输入输出及表示方法
- Hadoop源代码分析(Task的内部类和辅助类)
- C/C++ 代码换行问题
- 【Test Design Studio 3】-02.智能提示功能增加
- Hadoop源代码分析(类Task)
- Xmanager 连接Solaris 10 系统
- Hadoop源代码分析(MapTask)
- Lu32.DLL V1.0 用户指南(测试版)
- Linux系统下设置环境变量(PATH)总结
- Hadoop源代码分析(MapTask辅助类 I)