MapReduce

发布时间:2022-06-25 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了MapReduce脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

介绍

基本编程模型

  • MapReduce

实现(Mapreduce执行流程,容错方案...)

MaPReduce执行流程

  • 将输入文件切分为大小在16-64MB的文件,然后在一组多个机器上启动用户程序,每个机器是一个worker

    MapReduce

  • 其中一个worker会成为master,master给worker指定任务(M个map任务,R个reduce任务),master会给idle的worker map或reduce的任务

    MapReduce

  • 执行map的worker会接收切分后的input,执行map函数,将结果缓存到机器的内存中

    MapReduce

  • 内存中的中间结果会周期性的写到本地磁盘中,并切分成R份(reducer的数量),这R个文件的位置会发送给master,master转发给reducer

    MapReduce

    MapReduce

  • reduce worker收到中间文件的位置信息会通过RPC读取,读取到之后根据intemediate<k, v>排序,然后按照key分组合并

    MapReduce

  • 将排序后的数据,执行reduce函数,并写入到output文件

    MapReduce

  • 所有的output文件会被写到叫做GFS的全局文件系统,MapReduce程序结束之后,Master返回到UserProgram

    MapReduce

Master数据结构

  • 在master中会记录每一个task的状态,以及每个task属于哪一个worker machine

    MapReduce

容错

Worker failure

  • 对于map task的worker失效,对于已经完成的map task会被重新标记为idle,那么需要另一个worker重新执行map task,因为map的结果是存储在locl disk,而reduce的结果存在GFS中,GFS上的数据不会丢失,每个数据会有多个备份。并且关于这个map task的结果的位置,会被重新通知

    MapReduce

Master failure

  • master会周期性的备份数据(也就是tasks的状态),有备份点checkpoints

    MapReduce

Backup Tasks

  • 对于执行缓慢的任务(Straggler),在MapReduce操作接近完成的时候,master会对(in-progress)的余下任务启动backup执行,也就是创建一个副本task,(有可能原来的task卡住了),那么原来的task就是Primary,当primary与backup中任意一个完成,那么该task会被标记为完成

    MapReduce

优化/完善

combiner function

  • MapReduce

    zipf‘s law齐夫定律,在任何语言中存在一种现象,就是有些词出现频率高,比如英语中的the

    MapReduce

  • MapReduce

  • map阶段结束之前不能启动reduce阶段,但是可以以combiner的身份执行reduce代码

    MapReduce

性能

经验

相关工作

结论

问题

  • our use of a functional model wITh user-sPEcified map and reduce operations allows us to parallelize large computations easily and to use re-execution as the primary mechanism for fault tolerance.re-execution作为容错机制?
  • MapReduce

    输入的k/v与输出的k/v的类型不同,中间的k/v与输出的k/v类型相同?
  • MapReduce

  • MapReduce

参考

b站视频1 b站视频2 MapReduce

脚本宝典总结

以上是脚本宝典为你收集整理的MapReduce全部内容,希望文章能够帮你解决MapReduce所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。