MapReduce作业流程图
HDFS ——> InputFormat 阶段
InputFormat 是一个 Interface ,包含了getSplits(…) 、getRecordReader(…) 两个方法。这两个方法分别完成着以下工作:
1)方法 getSplits 将输入的数据切分为多个逻辑上的 InputSplit,其中每一个 InputSplit 作为一个 map 的输入,InputSplit 的大小默认为 block 的大小(block 是 HDFS 存储文件的单位,默认为128MB)
2)方法 RecordReader 将每个 InputSplit 解析成 records,再依次将 record 解析成<K,V>对。RecordReader 决定了 map 任务如何读取输入数据, 例如一行一行的读取还是一个字节一个字节的读取等等。
用户在启动 MapReduce 的时候需要指定一个 InputFormat 的 Implement:
InputFormat 直接子类有三个:DBInputFormat、DelegatingInputFormat 和FileInputFormat,分别表示输入文件的来源为从数据库、用于多个输入以及基于文件的输入。
对于FileInputFormat,即从文件输入的输入方式,又有五个继承子类:CombineFileInputFormat,KeyValueTextInput,NLineInoutForm