欢迎回家
我们一直在改变

Hadoop 的计算 — MapReduce

MapReduce 是 Google 提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”以及它们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。

当前的软件实现是指定一个 Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的 Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组,如图所示。

下面将以 Hadoop 的“Hello World”例程—单词计数来分析MapReduce的逻辑,如图所示。一般的 MapReduce 程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。

  1. 输入就不用说了,数据一般放在 HDFS 上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。
  2. 输入分片:在进行 Map 阶段之前,MapReduce 框架会根据输入文件计算输入分片(split),每个输入分片会对应一个 Map 任务,输入分片往往和 HDFS 的块关系很密切。例如,HDFS 的块的大小是 128M,如果我们输入两个文件,大小分别是 27M、129M,那么 27M 的文件会作为一个输入分片(不足 128M 会被当作一个分片),而 129MB 则是两个输入分片(129-128=1,不足 128M,所以 1M 也会被当作一个输入分片),所以,一般来说,一个文件块会对应一个分片。如图 1-7 所示,Splitting 对应下面的三个数据应该理解为三个分片。
  3. Map 阶段:这个阶段的处理逻辑其实就是程序员编写好的 Map 函数,因为一个分片对应一个 Map 任务,并且是对应一个文件块,所以这里其实是数据本地化的操作,也就是所谓的移动计算而不是移动数据。如图 1-7 所示,这里的操作其实就是把每句话进行分割,然后得到每个单词,再对每个单词进行映射,得到单词和1的键值对。
  4. Shuffle 阶段:这是“奇迹”发生的地方,MapReduce 的核心其实就是 Shuffle。那么 Shuffle 的原理呢?Shuffle 就是将 Map 的输出进行整合,然后作为 Reduce 的输入发送给 Reduce。简单理解就是把所有 Map 的输出按照键进行排序,并且把相对键的键值对整合到同一个组中。如图 1-7 所示,Bear、Car、Deer、River 是排序的,并且 Bear 这个键有两个键值对。
  5. Reduce 阶段:与 Map 类似,这里也是用户编写程序的地方,可以针对分组后的键值对进行处理。如图 1-7 所示,针对同一个键 Bear 的所有值进行了一个加法操作,得到 <Bear,2> 这样的键值对。
  6. 输出:Reduce 的输出直接写入 HDFS 上,同样这个输出文件也是分块的。

说了这么多,其实 MapReduce 的本质用一张图可以完整地表现出来,如图所示。

MapReduce 的本质就是把一组键值对 <K1,V1> 经过 Map 阶段映射成新的键值对 <K2,V2>;接着经过 Shuffle/Sort 阶段进行排序和“洗牌”,把键值对排序,同时把相同的键的值整合;最后经过 Reduce 阶段,把整合后的键值对组进行逻辑处理,输出到新的键值对 <K3,V3>。这样的一个过程,其实就是 MapReduce 的本质。

Hadoop MapReduce 可以根据其使用的资源管理框架不同,而分为 MR v1 和 YARN/MR v2 版本,如图所示。

在 MR v1 版本中,资源管理主要是 Jobtracker 和 TaskTracker。Jobtracker 主要负责:作业控制(作业分解和状态监控),主要是 MR 任务以及资源管理;而 TaskTracker 主要是调度 Job 的每一个子任务 task;并且接收 JobTracker 的命令。

在 YARN/MR v2 版本中,YARN 把 JobTracker 的工作分为两个部分:

  1. ResourceManager(资源管理器)全局管理所有应用程序计算资源的分配。
  2. ApplicationMaster 负责相应的调度和协调。

NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源(CPU、内存、硬盘、网络)使用情况,并且向调度器汇报。

原文链接 :http://www.cnblogs.com/binarylei/p/8903601.html

赞(0)
未经允许不得转载:91coding » Hadoop 的计算 — MapReduce
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

立即登录   注册

91CODING 小白轻松上手,大牛稳健进步

关于我们免责声明