hadoop2 mapreduce简介

 

 

0 mapreduce概述:

 

◆MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题.

MapReduce合并了两种经典函数:
映射(Mapping)对集合里的每个目标应用同一个操作。即,如果你想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping。

化简(Reducing )遍历集合中的元素来返回一个综合的结果。即,输出表单里一列数字的和这个任务属于reducing。

◆MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。

◆这两个函数的形参是key、value对,表示函数的输入信息。

MapReduce在多于10PB数据时趋向于变慢。

 

 

1 MapReduce原理***

 

map reduce跑的都是代码
代码在运行的时候在mapreduce模型中,学名叫做任务。

map任务执行的事情: 映射(Mapping)对集合里的每个目标应用同一个操作
reduce任务执行的事情: 化简(Reducing )遍历集合中的元素来返回一个综合的结果

mapreduce模型中间运行的数据单位是: 键值对

 

map任务(mapperTask),reduce任务(reducerTask)
执行的都是进程, 因为进程容易资源隔离   进程之间互相不影响,当一个进程死掉时,不会影响其余进程执行,具有较好的独立性。

 

 

原理图如下:

 


 
 2 MapReduce执行过程***

 

◆执行步骤:
 1. map任务处理
1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
1.3 框架对所有输出的key、value进行分区(默认为一个区)。
1.4 对不同分区的数据,按照key(ascii)进行排序、分组。相同key的value放到一个集合中。
1.5 (可选)分组后的数据进行归约。
2.reduce任务处理
2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
2.2 对多个map任务(比如多个map节点发送来)的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、values处理,转换成新的key、value输出。
2.3 把reduce的输出保存到文件(hdfs 或者其他类型文件)中。

 

说明:

 

从map传到reduce阶段的时候,键值对没有变化,只是map的键值对被分组化了,到了reduce阶段接受到的是分组化的键值对,
如果将分组拆分开,还是map阶段的键值对, 比如两人处对象后结婚变成了一组,但是这还是那两个人一样。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值