Mapper端输入: 例:Mapper<LongWritable, Text, Text, IntWritable>,输入的键、值类型在作业中的 FileInputFormat 中定义,默认是 TextInputFormat。 TextInputFormat 的 键是LongWritable,表示截至目前从文件中读出的字节数。输入值是Text对象,表示从文本中读入的一行记录。当然了,如果使用不同的输入格式,很可能需要改变这些键、值的数据类型.
简单复习一下mapreduce过程
map端
一个split 对应一个 map task,首先数据会按照key进行分区(partition默认计算方法:key的hash值对reduce task数量取模),然后进入环形缓冲区,进行分区,排序,溢写,然后对多个临时小文件merge,落盘形成一个分区有序的文件。所谓分区有序, 相同partition的键值对存储在一起,partition里面又按照key升序(默认)排列
reduce端
reduce大致分为三个阶段 copy、sort、 reduce
copy阶段,reduce进程启动 fetcher线程,通过http方式请求map端获取属于自己的文件。首先将文件写入内存缓冲区,当copy的文件到达一定的阈值,就合并文件到磁盘,磁盘中产生大量的溢写文件,直到没有map的数据才结束,然后合并磁盘中的文件,生成最终的文件。