前言
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
正文
MapReduce 来源于 Google 2004 年发布的论文,它是一个编程模型,用以进行大数据量的计算。
对于大数据量的计算,通常采用的处理方式就是并行计算。
但对许多开发者来说,自己完完全全实现一个并行计算程序难度太大,而 MapReduce 就是一种简化并行计算的编程模型,它使得那些没有多少并行计算经验的开发人员也可以开发并行应用程序。
这也是 MapReduce 的价值所在,通过简化编程模型,降低了开发并行应用程序的入门门槛。
MapReduce 中的 Map 代表了并行计算,Reduce 代表了聚合分析。
Apache Hadoop MapReduce 是 Doug Cutting 基于 Google 的 MapReduce 论文而开发的分布式计算框架。
诸多 Hadoop 生态体系中的技术框架比如 Hive,Flume,Sqoop,Azkaban 等底层计算引擎都是使用的Apache Hadoop MapReduce。
Hadoop MapReduce 特点
- 易于编程。它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器运行。
也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点,使得 MapReduce 编程变得非常流行。 - 良好的扩展性。当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
- 高容错性。 MapReduce 设计的初衷就是使程序能够部署在廉价的PC机器上, 这就要求它具有很高的容错性。
比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于使这个任务运行失败,而且这个过程不需要人工干预,完全是由 Hadoop 内部完成的 - 能对PB级以上海量数据进行离线处理。适合离线处理而不适合实时处理, 比如要求毫秒级别的返回一个结果, MapReduce 很难做到。