MapReduce浅析
来源:互联网 发布:好看的运动鞋 知乎 编辑:程序博客网 时间:2024/06/08 11:22
Map函数的功能是处理一个键值对儿来产生一组键值对儿,reduce函数的功能是将同一个键的所有值进行合并。很多现实的网络任务都可以被表示成为这个模型。使用这种模型撰写的程序可以自动在集群上运行。由于运行时系统处理了如何分割数据、调度运行、处理失效以及机器间交互,使得不具有任何并行编程的程序员也很容易使用分布式系统。
MapReduce的具体流程为(如下图所示):
1 用户程序调用MapReduce库来将输入文件分成M片(M个split)。通常每片16MB到64MB,然后在机器集群上启动运行多份处理程序。
2 在这些机器集群中,有一个是master负责分配任务,其他的都是worker执行任务。其中,任务包含M个map任务和R个reduce任务。每次Master会挑选一个空闲的worker来分配map任务或者reduce任务。
3 被分配了map任务的worker则读取对应的split文件分片,然后解析和统计其中的键值对,并传给用户定义的MAP函数生成所谓的“中间键值对”。
4 这些“中间键值对”会周期性地被从内存中写入本地磁盘,并且会被分割partition成R个分区存储(如通过hash(key) mod R)的方式)。最后会把本地存储的地址告知master以便分配给R个reducer worker.
5 被告知存储地址后,reducer worker通过远程过程调用读取map worker磁盘中的对应的中间数据。当读完后,首先要做一个排序,目的是让具有相同键的对被分组到一起。当然,如果中间数据很多,则有可能需要外部排序。
6 对于每个单独的中间键值,reduce worker将这个键与对应的值的集合传递给用户定义的Reduce函数,来为这个reduce partition生成最终输出文件。
7 当所有map任务和reduce任务全部执行完成后,master唤醒用户程序,即从对MapReduce的调用中返回。
- MapReduce浅析
- mapReduce原理浅析
- MapReduce源码浅析
- MapReduce实例浅析
- MapReduce实例浅析
- Hadoop Mapreduce 浅析
- MapReduce 浅析 (1)
- MapReduce 浅析 (2)
- MapReduce 浅析 (1)
- MapReduce原理浅析(转)
- 浅析Hadoop(二)之MapReduce
- Hadoop-MapReduce编程思想浅析
- Hadoop HDFS和MapReduce 架构浅析
- mapreduce.go源码浅析 MIT 6.824 Spring
- 浅析MapReduce单元测试框架—MRUnit
- Hadoop MapReduce核心技术浅析-----RPC框架解析
- Hadoop那些事儿(三)---MapReduce编程浅析
- 浅析Hadoop中MapReduce任务执行流程
- TCP三次握手/四次挥手详解
- 解密module_init
- NYOJ 236 VF (动态规划)
- 自己动手写 accordion 抽屉控件
- Android Compatibility Test Suite
- MapReduce浅析
- BMS导入问题
- 运输层TCP协议详细介绍
- 文章内容分页类
- qt 橡皮筋线
- ORA-01033: ORACLE initialization or shutdown in progress
- UITableView多选删除
- 嵌入式系统开发过程中的常见问题
- eclipse使用之导入第三方jar包