MapReduce主要分为两个过程:Map和Reduce
Mapper过程:Mapper<K1, V1, K2, V2 >
Reducer过程:Reducer<K2, V2, K3, V3 >
Mapper和Reducer的K2 V2需要保持一致:
当Mapper输出格式与Reducer的输出格式一样时
可以省略job.setOutputKeyClass()与job.setOutputValueClass()设置
Mapper
将输入键/值对映射到一组中间键/值对。
将 K1和V1 映射到 K2和V2
映射是将输入记录转换为中间记录的单个任务。
转换后的中间记录不需要与输入记录具有相同的类型。
给定的输入对可能映射到零或多个输出对。
执行一次map只对一行记录进行处理,K1V1和K2V2不需要具有相同类型
Hadoop map - reduce框架为作业的InputFormat生成的每个InputSplit生成一个map任务。
Mapper实现可以通过JobContext.getConfiguration()访问作业的配置。
InputFormat对文件进行切分,一般情况文件有几个块就会被切分成几个InputSplit,
每一个InputSplit产生一个map任务, 文件130M ,2个块 128M 2M 1.1 InputSplit数是1
InputSplit是逻辑切分 Block是物理的
框架首先调用
setup(org.apache.hadoop.mapreduce.Mapper.Context),