Map 阶段: 输入:Map 阶段接收输入数据,通常是键值对(key-value pairs)。 处理:Map 函数对输入数据进行处理,生成中间结果。 输出:Map 函数的输出是新的键值对,这些中间结果将传递给 Reduce 阶段^1^。
Shuffle 阶段: 分区:将 Map 阶段的输出数据进行分区,每个分区对应一个 Reduce 任务。 排序:对每个分区内的数据按键进行排序。 合并:将相同键的值合并在一起,准备传递给 Reduce 阶段^2^。
Reduce 阶段: 输入:Reduce 阶段接收 Shuffle 阶段处理后的数据。 处理:Reduce 函数对相同键的值进行合并计算,生成最终结果。 输出:Reduce 函数的输出是最终结果,通常存储在 HDFS 中^1^。
MapReduce 的运行流程
提交任务:用户通过 Client 提交 MapReduce 任务到 JobTracker。
任务调度:JobTracker 负责资源监控和作业调度,将任务分配给 TaskTracker。
执行任务:TaskTracker 启动 Map 和 Reduce 任务,并定期向 JobTracker 汇报任务进度。
结果输出:Reduce 任务完成后,将最终结果输出到 HDFS2。