hadoop-mapreduce编程模型
Hadoop的MapReduce编程模型是一种分布式计算范式,其核心思想是通过分而治之将大规模数据处理分解为Map和Reduce两个阶段,实现并行化计算。以下是其技术解析:
一、编程模型架构
-
核心组件
- InputFormat:定义数据分片逻辑(如TextInputFormat按行读取HDFS文件)和输入解析方式。
- Mapper:处理输入键值对
<k1,v1>
,输出中间结果<k2,v2>
,开发者需重写map()
函数实现业务逻辑。 - Partitioner:控制中间数据的分配策略(默认HashPartitioner按Key哈希分发到Reduce节点)。
public void write(K key, V value) throws IOException, InterruptedException {this.collector.collect(key, value, this.partitioner.getPartition(key, value, this.partitions)); }
- Reducer:聚合相同Key的中间值集合
<k2, [v2]>
,输出最终结果<k3,v3>
至HDFS。 - OutputFormat:指定结果存储格式(如TextOutputFormat)。
-
辅助组件
-
Combiner:本地Reduce阶段,代码中mapTa
-