MapReduce的实现目标及核心关注点

实现目标及核心关注点

MapReduce接口可能有多种不同的实现方式,需根据具体的计算环境来选择

以Google的常用计算环境为例

1.机器配置 Linux dual-process x86 2-4GB Memory

2.网络硬件 100/1000 MB/s, 平均整体二分带宽少很多

3.集群 由数百、数千台机器组成,机器故障很常见

4.存储由连接到每个机器的廉价IDE磁盘提供,它们内部开发的分布式文件系统用于管理这些磁盘上的数据。文件系统使用副本在不可靠的硬件之上提供可用性和可靠性

5.用户提交Job到调度系统,每个Job由一组Tasks组成,并由调度器将每个Task映射到机器中一组可用计算机上执行

MapReduce实现流程

Map调用被分布在多台机器,输入数据被自动划分为M个分割,输入分割之间没有交互,可以在不同机器上并行处理。使用分区函数(e.g. hash(key) mod R),将中间键空间划分为R个片段分发给Reduce并行调用,分区函数和分区数由用户指定。用户调用MapReduce函数的系列操作如下

1.Split Input FIles 将输入文件按指定大小S(16~64MB,用户通过可选参数指定)划分为M个分割文件,然后在集群中启动多个副本程序

2.Assign Tasks Master挑选空闲Worker节点并为其分配一个map task或reduce task

3.Parses K/V 被分配map task的worker读取相关分割的内容,从输入内容中解析键/值对并生成中间键/值对缓存于内存中

4.Written to Local Disk 缓存的中间键/值对,通过分区函数划分为R个区域,定期写到本地磁盘并将其相对位置返回给Master,Master再将这些位置信息传给Worker

5.RPC Read and Sort 当Master将位置信息通知到Reduce Worker, Reduce Worker使用远程过程调用从Map Worker的磁盘读入缓存数据。当Reduce Worker读入所有的中间数据按key排序,如果中间数据过大不适合在内存运算,可考虑使用外部排序

6.Iterates and Appended Reduce Worker对已排序的中间数据进行迭代,对于每一个唯一的中间键,它将与之对应的中间值集传递给用户的Reduce函数。将Reduce函数的输出Append到这个reduce分区的最终输出文件

7.Completed 完成所有map和reduce任务后master唤醒用户程序

--- edit by 云时代的运维开发(clouddevops)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值