Hadoop源码分析1 MapReduce的输入
2014-09-12 13:24
387 查看
1. 输入格式InputFormat
InputFormat作为Hadoop作业的所有输入格式的抽象基类,描述了作业的输入需要满足的规范细节。该抽象类内部定义了如下两个抽象方法:public abstract List<InputSplit> getSplits(JobContext context) throws IOException, InterruptedException;
该方法的主要作用就是将所有的输入文件分割成逻辑上的多个分片InputSplit。这分片仅仅是逻辑上的,并不是真正的将文件分割成多个数据块。每个InputSplit通过输入文件路径、开始位置和偏移量三个信息来唯一的标识。
public abstract RecordReader<K,V> createRecordReader(InputSplit split,TaskAttemptContext context) throws IOException,InterruptedException;
该方法的主要作用就是为指定的InputSplit创建记录读取器,通过创建的记录读取器从输入分片中读取键值对,然后将键值对交给Map来处理。
FileInputFormat:InputFormat的直接子类之一
FileInputFormat类也是一个抽象类,它是所有不同类型的文件的输入格式的基类。在该类中,它只提供了对于InputFormat的getSplit抽象方法的实现。它没有提供createRecordReader的实现是因为不同格式的文件的读取策略是不同的。
FileInputFormat所在的包为org.apache.hadoop.mapreduce.lib.input中,具体的getSplit方法的实现可以去这个包中查看。
TextInputFormat:FileInputFormat抽象类的默认实现
该类主要重写了FileInputFormat中的createRecordReader和isSplit方法。
createRecordReader的实现是通过创建LineRecordReader行记录读取器,该读取器用于从文件中读取一行,并将行的偏移量作为键,行的文本内容作为值。
2. 输入分片InputSplit
InputSplit是一个单独的Map要处理的数据单元。输入分片的数据类型一般都是字节型。输入分片经过相应的RecordReader处理后,转化成记录视图的形式,然后交给Map处理。一般一条记录以一个键值对的形式展现。3. 记录读取器 RecordReader
抽象基类RecordReader所在的包为org.apache.hadoop.mapreduce。该类中包含6个抽象方法:
public abstract void initialize(InputSplit split,TaskAttemptContext context) throws....;初始化方法,该方法只会在初始化时执行一次;
public abstract boolean nextKeyValue() throws...;取得分片中的下一个键值对,如果读取到就返回true,否则返回false;
public abstract KEYIN getCurrentKey() throws...;取得当前读取到的键值对中的键对象;
public abstract VALUEIN getCurrentValue() throws...;取得当前读取到的键值对中的值对象;
public abstract float getProgress() throws...;取得当前数据读取的进度,该方法会返回一个0.0到1.0之间的浮点数;
public abstract void close() throws...;主要用于关闭recordreader,从而清理掉它所占用的资源。
相关文章推荐
- hadoop之MapReduce框架TaskTracker端心跳机制分析(源码分析第六篇) 推荐
- HADOOP:MapReduce源码分析总结
- Hadoop源码分析,map输入
- Hadoop2 使用 YARN 运行 MapReduce 的过程源码分析
- Hadoop2.7.3 mapreduce(二)类型匹配异常解决方案及源码分析
- MapReduce的输入格式---KeyValueTextInputFormat---源码分析
- Hadoop源码分析23:MapReduce的Job提交过程
- hadoop自带例子SecondarySort源码分析MapReduce原理
- Hadoop源码分析(mapreduce.lib.partition/reduce/output)
- (转载)Hadoop -- MapReduce源码分析总结
- Hadoop之wordcount源码分析和MapReduce流程分析
- Hadoop-2.4.1源码分析--MapReduce作业切片(Split)过程
- Hadoop基础之MapReduce原理、序列化和源码分析
- MapReduce 的格式输入----SequenceFileInputFormat ---源码分析
- hadoop之MapReduce框架JobTracker端心跳机制分析(源码分析第七篇) 推荐
- Hadoop-2.7.3源码分析:MapReduce作业提交源码跟踪
- Hadoop源码分析--MapReduce作业(job)提交源码跟踪
- Hadoop源码分析(MapReduce概论)
- hadoop源码分析之MapReduce(一)
- hadoop源码分析(MapReduce)