理解MapReduce

执行流程

  1. 创建一个map函数处理一个基于key/value对的数据集合,输出中间数据,并写入磁盘
  2. 创建一个reduce函数来合并处理中间数据,具有相同key值的value调用被分布到多台机器上

reduce可以分布到多台机器上,例如hash(key) mod R, R为分区数目,一个job包含多个task,每个reduce任务产生一个输出文件,因此有R个输出文件。

实现模型

在这里插入图片描述

执行过程

  1. 首先调用MapReduce库,将输入文件分成M个数据片段(split)。用户程序在集群中创建(fork)大量程序副本。
  2. 程序副本中,有一个特殊的程序(master),其他程序都早worker
  3. map任务的workder读取相关的输入数据片段(split),从中解析出key-value对,输出并缓存在内存中
  4. 缓存中的key-value通过分区函数分成R个区域之后,写入到本地硬盘上,然后将存储位置传递给master
  5. reduce worker接收到master发来的数据存储位置,使用RPC读取数据,读取之后对key进行排序,是具有相同的key聚合在一起
  6. reduce worker输出
  7. master唤醒用户程序,对MapReduce调用返回

master执行了O(M+R)个调度,在内存中保存O(M*R)个状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值