从零开始学Hadoop——浅析MapReduce(一)

      之前,我们说过Hadoop的两个核心为HDFS和MapReduce,既然我们已经学习了Hadoop的HDFS,那么我们就来看看MapReduce是什么。当然,我们学习的顺序还是先看看基本概念,再研究一下原理,最后做一些练习。

一、是什么

1、概念理解

      Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

2、Map(映射)

      “Map”:主结点读入输入数据,把它分成可以用相同方法解决的小数据块(这里是一个分而治之的思想),然后把这些小数据块分发到不同的工作节点上(worder nodes)上,每一个工作节点(worder node)循环做同样的事,这就行成了一个树行结构(分布式计算中的很多模型都和图论有关,pageRank也是),而每一个叶子节点有来处理每一个具体的小数据块,再把这些处理结果返回给父节点。

3、Reduce(归约)

      “Reduce”:主结节得到所有子节点的处理结果,然后把所有结果组合并且返回到输出。

4、个人理解

      简单的来讲,map就是分,reduce就是合。怎么理解呢?我们来看个例子。
      我们将100吨砖,从山东运到北京,如果我们用一辆能装1吨的大卡车来运,一天跑一个来回,那么我们需要100天,可是如果我们用10辆这样的车来做同样的事情,那么我们10天就可以完成了。虽然在现实生活中,我们增加了车费等一系列支出,可能不太划算,但是对于计算机来说,我们的成本是相当低的。所以在迎接大数据的到来时,MapReduce将大大提高的计算的速度,特别方便。

二、原理解析

1、图解细说

这里写图片描述

(1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...)
(2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HDFS)和jobId
(3).client将jar包写入到HDFS当中(path = hdfs上的地址 + jobId)
(4).开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
(5).JobTracker进行初始化任务(放入调度器)
(6).读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask
(7).TaskTracker通过心跳机制领取任务(任务的描述信息)
(8).下载所需的jar,配置文件等
(9).TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
(10).将结果写入到HDFS当中

经过自己的理解后,自己又画了一张运行图
这里写图片描述

2、详细流程

这里写图片描述

  • map任务处理
读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
对输出的key、value进行分区。
对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
(可选)分组后的数据进行归约。
  • reduce任务处理
对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
把reduce的输出保存到文件中。

总结:

      虽然之前学到的HDFS与今天的MapReduce是两个完全不一样的东西,但是通过今天的学习,我们知道了两者是如何协同工作的,这样对我们以后的实战是非常有帮助的。下次我们将通过实例,来深层解析MapReduce的运行机制,请大家继续关注。

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值