zoukankan      html  css  js  c++  java
  • Hadoop之MapReduce

    http://blog.csdn.net/wangloveall/article/details/21407531

    摘要: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的工作机制

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

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

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

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

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

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

    环节一:作业的提交

    环节二:作业的初始化

    环节三:任务的分配

    环节四:任务的执行

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

    环节六:作业的完成 

    关于每一个环节里具体做什么事情,可以参读《Hadoop权威指南》的第六章MapReduce工作机制的内容。

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

    Source:

    http://www.wangluqing.com/2014/02/hadoop-mapreduce/

    http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html

    http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html

    炼数成金《Hadoop数据分析平台》课程

    5《Hadoop权威指南(第二版)》第六章MapReduce工作机制

  • 相关阅读:
    javascript简繁转换函数
    在嵌套的repeater中加ItemDataBound事件
    asp.net url重写方法和步骤
    打开,另存为,属性,打印"等14个JS代码
    php中global的用法
    ini_get
    PHP学习笔记
    PHP isset()与empty()的使用区别详解
    PHP符号说明
    html禁止清除input文本输入缓存
  • 原文地址:https://www.cnblogs.com/ExMan/p/3716735.html
Copyright © 2011-2022 走看看