mapreduce OSDI04

总结:MapReduce就是一个数据处理过程,将数据转换成相应个<Key, Value>对, 然后将相同的Key值的<Key, Value>划分成组,中间Key空间分成R个pieces(Hash(Key)mod R),然后分别交给Reduce进行处理。

Hadoop联想:

Map任务而言,它的输入往往是输入文件的一个数据块,或者是数据的一部分,通常不垮数据块。

作业被拆分成若干个Map任务后,会预先挂在作业服务器上的任务拓扑树上(按照分布式文件数据块的位置来划分)比如一 个Map任务需要用某个数据块,这个数据块有三份备份,那么,在这三台服务器上都会挂上此任务,可以视为是一个预分配。

Hadoop中,默认的任务 分配器,是JobQueueTaskScheduler选择作业的基本次序是:Map Clean Up Task(Map任务服务器的清理任务,用于清理相关的过期的文件和环境...) -> Map Setup Task(Map任务服务器的安装任务,负责配置好相关的环境...) -> Map Tasks -> Reduce Clean Up Task -> Reduce Setup Task -> Reduce Tasks

基本思路就是一切为高优先级的作业服务。 最后由JobInProgressfindNewMapTask函数完成的。它的算法很简单,就是尽全力为此服务器分配且尽可能好。

Reduce任务:


*MapReduce: Simplified Data Processing on Large Clusters

**abstract
mapreduce是一种计算模型,处理和产生大的数据集。用户指定map函数来处理key/value,产生中间的key/value对,指定reduce函数来合并所有key相同的中间value
这种类型的程序能够在大集群机器上自动并行执行,系统关注于如何划分输入数据,调度程序的执行,处理程序的错误。

**introduction
map/reduce来自于功能语言Lisp etc.
通过map产生相应的中间key/value对,然后通过reduce对中间key值相同的value进行相应的处理。
通过re-execution作为主要容错机制

**Programming Model
map 输入Key/Value对,产生中间Key/Value对
reduce 接收中间Key及其对应的Value集合(Set) 合并这些value产生可能更小的Value集合 输出(Zero或one output value)
中间的Key/Value对通过一个遍历器(iterator)传递给Reduce,这样可以能够帮助处理lists of value过大
Example: Count of URL Access Frequency: <URL, 1> ==> <URL, total count>
         Reverse Web-Link Graph: <target, source> ==> <target, list(source)>

**Implementation
Map调用将自动把输入数据分成M splits。输入的splits被并行的分配到不同的机器上。
Reduce调用 通过Partition函数将中间Key空间分成R个pieces(Hash(Key)mod R),分块的数目R和分块函数由用户指定
过程:
1.MapReduce将输入数据划分成M块(16M~64M) 代表M个map任务 程序被拷贝成好几份
2.一份程序为 master 剩下的为workers。
3.worker读取对应的input split  产生对应的中间Key/Value对 buffered 在内存中。
4.间歇性缓存的数据对被写到本地磁盘上,划分成R个区域(被partition function)。这些buffer数据的地址会被传递到master上。
5.当master通知reducer这些buffer数据的地址,reducer将使用RPC来读取buffered数据,当reducer读取了所有的数据,它将通过
中间key值来进行排列,相同key值的将变成一组。(数据太大可能需要外排)
6.对于每个相同的中间Key对,reducer将其传递给用户的Reduce函数进行处理
7.所有的map和reduce程序结束,返回用户程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值