MapReduce

一、MapReduce是什么?

                    MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算。

对于大数据量的计算,通常采用的处理手法就是并行计算。但对许多开发者来说,自己完完全全实现一

个并行计算程序难度太大,而MapReduce就是一种简化并行计算的编程模型,它使得那些没有多有多少

并行计算经验的开发人员也可以开发并行应用程序。这也就是MapReduce的价值所在,通过简化编程模

型,降低了开发并行应用的入门门槛。

 Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在

由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据

集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五

是海量数据集。

二、MapReduce能做什么?

•简单地讲,MapReduce可以做大数据处理。所谓大数据处理,即以价值为导向,对大数据加工、挖掘和优化等各种处理。

[if ppt]•[endif]

•MapReduce擅长处理大数据,它为什么具有这种能力呢?这可由MapReduce的设计思想发觉。

[if ppt]•[endif]

•MapReduce的思想就是“分而治之”。

     (1)Mapper负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”         包含三层含义:一是数据或计算的规模相对原任务要大大缩小;二是就近计算原则,即任务会  分配到存放着所需数据的节点上进行计算;三是这些小任务可以并行计算,彼此间几乎没有依  赖关系。

     (2)Reducer负责对map阶段的结果进行汇总。至于需要多少个Reducer,用户可以根据具体问题,  通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值,缺省值为1。


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

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

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

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

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

三、MapReduce工作流程

     在Hadoop中,一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块,由Map  任务以完全并行的方式去处理它们。框架会对Map的输出先进行排序,然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中,整个框架负责任务的调度和监控,以及重新执行已经关闭的任务。

      通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上,也就是说,计算节点和存储节点通常都是在一起的。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使得整个集群的网络带宽被非常高效地利用。


(1)JobTracker

  JobTracker负责调度构成一个作业的所有任务,这些任务分布在不同的TaskTracker上(由上图的JobTracker可以看到2 assignmap 和 2

assign reduce)。你可以将其理解为公司的项目经理,项目经理接受项目需求,并划分具体的任务给下面的开发工程师。

(2)TaskTrackerTaskTracker负责执行由JobTracker指派的任务,这里我  们就可以将其理解为开发工程师,完成项目经理安排的开发任务即可,执行Map任务,或者Reduce任务。


        MapReduce框架运转在键值对上,也就是说,框架把作业的输入看成是一组键值对,同样也产生一组键值对作为作业的输出,这两组键值对有可能是不同的。

       一个MapReduce作业的输入和输出类型如下图所示:可以看出在整个流程中,会有三组键值对类型的存在

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MapReduce是一个数据处理的编程模型。这个模型很简单,但也不是简单到不能够支持一些有用的语言。Hadoop能...
    单行线的旋律阅读 1,536评论 0 2
  • MapReduce是面向大数据并行处理的计算模型、框架和平台。MapReduce是一个基于集群的高性能并行计算平台...
    VVictoriaLee阅读 435评论 0 1
  • 课程地址:MapReduce官方文档:MapReduce Tutorial参考文献:MapReduce原理与设计思...
    拾壹北阅读 968评论 0 12
  • MapReduce框架结构## MapReduce是一个用于大规模数据处理的分布式计算模型MapReduce模型主...
    Bloo_m阅读 3,788评论 0 4
  • 看着我们的时间 同时醒,没话 同时睡,没梦
    兰芷清客阅读 253评论 2 1