MapReduce2.0原理及基本架构
MapReduce是Hadoop核心框架之一,我们知道Hadoop是又分布式文件系统HDFS和分布式计算框架组成。MapReduce就是一种离线数据计算框架。那么作为计算机框架的套路,会有输入经过处理后输出结构,MapReduce就是将任务分为两个阶段:Map阶段和Reduce阶段。每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。
MapReduce的特点
Hadoop MapReduce设计理念来源于2004年Google发布的MapReduce论文,随后开源界模范Google MapReduce设计出了Hadoop MapReduce。Hadoop MapReduce的主要特点为:
- 易于编程
- 良好的扩展性
- 高容错性
- 适合PB级以上的离线海量数据处理
MapReduce擅长的是离线海量的数据处理,当然也存在不擅长的方面,比如说
(1)实时计算。
像Mysql一样在毫秒级或秒级内返回数据处理结果
(2)流式计算
MapReduce的自身设计决定了他的输入数据必须是静态的,不能动态变化
(3)DAG计算
多个程序存在依赖关系,后一个应用程序的输入为前一个程序的输出。
MapReduce的编程模型
MapReduce的运行阶段用语言描述会显得有点抽上,以WorldCount为例先上图吧