MapReduce 是一种简化、并行计算编程模型,MapReduce 用于进行大数据量的计算,能让缺乏并行计算经验的开发人员也可以开发并行应用程序。 它采用“分而治之”的思想,将大规模数据集的操作分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,最终得出计算结果。简而言之,就是“分散任务,汇总结果”。
拉勾的专业讲师从编程思想及案例分析、原理剖析之切片机制源码解读、ReduceTask 工作机制及 Shuffle 机制等方面分 19 个部分视频讲解了大数据分布式计算框架之 MapReduce。
MapReduce 的特点:
易于编程:用一些简单接口,即可完成一个分布式程序,且能分布到大量廉价的 PC 上运行;
良好扩展性:可通过增加计算机来扩展计算能力;
高容错性:若其中一台主机出故障,可把上面的计算任务转移到另一个节点上运行,保证任务运行成功,且这个过程无需人工干预,由 MapReduce 内部完成。
能对PB级以上海量数据进行离线处理。
MapReduce的两个重要组件:
1、合并Combiner
Mapper先输出<k2 ,v2 >键值对,然后在网络节点间对其进行Shuffle(洗牌),再传入 Reducer 处理,获得最终输出。
若存在这样一个实际场景:有 10 个数据文件,Mapper 会生成10 亿个<k2,
v2 >的键值对在网络间进行传输,但我们只对数据求最大值。因此 Mapper 只需输出它所知道的最大值。这样不仅可以减轻网络压力,还可以大幅度提高程序效率。
可将合并Combiner操作看做是一个在每个单独节点上先做一次 Reduce 操作,其输入及输出的参数和 Reduce 是一样的。
2、洗牌Shuffle
MapReduce确保每个Reducer的输入都是按键排序。系统执行排序、将Mapper输出作为输入传给Reducer的过程,就称为洗牌Shuffle。
另外,在大数据领域,从初级工程师进阶到高级工程师,除了技术的精进以外,更重要的是对业务的熟悉和理解,技术只有真正落地到业务中,才能发挥其价值。
因此,本文除了MapReduce,还详细解读了大数据杀熟的现象和原理,以及美团基于 Flink 搭建的实时数仓是如何实现亿级数据秒级响应的。