MapReduce是hadoop的三驾马车之一,是一个批处理计算框架。
以下内容中,为方便描述 MapReduce有时简写为MR。
理论基础:源自于Google发表于2014年12月的MapReduce论文,可以把Hadoop MapReduce是Goole MapReduce的克隆版。
整体思路:局部性原理将整个问题分而治之。
MR之前,数据分布在各个节点;MR时每个节点就近读取本地存储的数据处理(MAP)-处理后的数据进行合并(combine)-排序(shuffle & sort)-分发到各个reduce节点。
MapReduce特性:
-
易于编程
(1)用户主要考虑如何使用MR模型,实现几个hook函数即可实现一个分布式程序。
(2)由mapTask 和 reduceTask组成。
(3)分发、合并、同步、监测均由执行框架负责,用户无需关心。
-
良好的扩展性(HDFS的分布式存储特点)
-
高容错性(HDFS数据副本策略)
-
适合海量数据的离线处理(就近读取,避免大量数据传输,提高处理效率)
任何编程语言和框架都有适合和不适合的场景,
MapReduce亦是如此:
适合的场景 |
(1)聚类算法 (2)分类算法 (3)推荐算法 ... ... |
不适合的场景 |
|
如果觉得这篇文章对您有帮助,欢迎关注公众号 “学点儿编程”,公众号不断推送干货文章!
MapReduce将作业的整个运行过程分为Map阶段和Reduce阶段
下面表格中,红色字体部分属于可自定义的范围。