核心思想
- 分而治之:将大规模的数据处理任务分解成多个可以并行处理的子任务,然后将这些子任务分配到不同的计算节点上进行处理,最后将各个子任务的处理结果合并起来,得到最终的结果。
工作流程
- Map 阶段:
- 输入数据被分割成多个小块,每个小块作为一个独立的任务由不同的 Map 任务处理。
- Map 函数将输入数据转换为键值对形式,并对键值对进行处理,生成中间结果。
- Shuffle 阶段:
- 对 Map 阶段产生的中间结果进行分区、排序和合并等操作,将具有相同键的键值对发送到同一个 Reduce 任务中进行处理。
- Reduce 阶段:
- Reduce 函数对收到的具有相同键的中间结果进行汇总、计算等操作,最终生成处理后的结果。
优点
- 易于编程:程序员只需实现 Map 和 Reduce 函数,无需关注分布式计算的底层细节,如任务调度、数据传输等,降低了分布式编程的难度。
- 高可扩展性:可以方便地通过增加计算节点来扩展系统的处理能力,以应对不断增长的数据量和计算需求。
- 高容错性:当计算节点出现故障时,系统能够自动重新分配任务到其他正常节点上执行,保证任务的顺利完成,不会因为个别节点的故障而影响整个计算过程。
- 适合大规模数据处理:能够高效地处理海量数据,通过并行计算充分利用集群的计算资源,大大提高数据处理的效率。