阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop之MapReduce 分析

123次阅读
没有评论

共计 2307 个字符,预计需要花费 6 分钟才能阅读完成。

摘要:MapReduce 是 Hadoop 的又一核心模块,从 MapReduce 是什么,MapReduce 能做什么以及 MapReduce 的工作机制三方面认识 MapReduce。

关键词:Hadoop  MapReduce    分布式处理

面对大数据,大数据的存储和处理,就好比一个人的左右手,显得尤为重要。Hadoop 比较适合解决大数据问题,很大程度上依赖其大数据存储系统,即 HDFS 和大数据处理系统,即 MapReduce。关于 HDFS,可以参阅作者写的《Hadoop 之 HDFS》文章。而对于 MapReduce,我们从如下三个问题来认识 MapReduce。

问题一:MapReduce 是什么?

问题二:MapReduce 能做什么?

问题三:MapReduce 工作机制?

对于第一个问题,我们引用 Apache Foundation 对 MapReduce 的介绍“Hadoop MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.”由此可知,Hadoop MapReduce 是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上 TB 级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集。因此,对于 MapReduce,可以简洁地认为,它是一个软件框架,海量数据是它的“菜”,它在大规模集群上以一种可靠且容错的方式并行地“烹饪这道菜”。写到这里,作者由衷地感叹思想之伟大,分解之神奇,合并之巧妙。

认识了 MapReduce 是什么,关于第二个问题,也就清晰了。MapReduce 能做什么?简单地讲,可以做大数据处理。所谓大数据处理,即以价值为导向,对大数据加工、挖掘和优化等各种处理。

MapReduce 擅长处理大数据,它为什么具有这种能力呢?这可由 MapReduce 的设计思想发觉。MapReduce 的思想就是“分而治之”。Mapper 负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”包含三层含义:一是数据或计算的规模相对原任务要大大缩小;二是就近计算原则,即任务会分配到存放着所需数据的节点上进行计算;三是这些小任务可以并行计算,彼此间几乎没有依赖关系。Reducer 负责对 map 阶段的结果进行汇总。至于需要多少个 Reducer,用户可以根据具体问题,通过在 mapred-site.xml 配置文件里设置参数 mapred.reduce.tasks 的值,缺省值为 1。

MapReduce 是如何来处理大数据呢?用户可以通过编 MapReduce 应用程序来实现对大数据的操作。既然是用 MapReduce 程序处理大数据,那么 MapReduce 程序怎样工作呢?这就是第三个问题,即 MapReduce 的工作机制。

Hadoop 之 MapReduce 分析

MapReduce 的整个工作过程如上图所示,它包含如下 4 个独立的实体。

实体一:客户端,用来提交 MapReduce 作业。

实体二:jobtracker,用来协调作业的运行。

实体三:tasktracker,用来处理作业划分后的任务。

实体四:HDFS,用来在其它实体间共享作业文件。

通过审阅 MapReduce 工作流程图,可以看出 MapReduce 整个工作过程有序地包含如下工作环节。

环节一:作业的提交

环节二:作业的初始化

环节三:任务的分配

环节四:任务的执行

环节五:进程和状态的更新

环节六:作业的完成

关于每一个环节里具体做什么事情,可以参读《Hadoop 权威指南》的第六章 MapReduce 工作机制的内容,下载见 http://www.linuxidc.com/Linux/2013-05/84948.htm。

对于用户来说,若是想使用 MapReduce 来处理大数据,就需要根据需求编写 MapReduce 应用程序。因而,如何利用 MapReduce 框架开发程序,是需要深入思考和不断实践的事情。

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2307字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中