MapReduce执行流程
来源:互联网 发布:红蜘蛛网络怎么解控制 编辑:程序博客网 时间:2024/05/21 17:51
转载:可详细了解map/reduce执行的过程
MapReduce的概念:
处理和生成海量数据的并行编程模型;
用于大规模数据集(通常大于1TB)的并行运算;
MapReduce的核心是Map和Reduce两个函数:
Map,映射,对列表中的所有元素进行指定的操作,返回基于这个处理的中间结果集;
Reduce,化简,对中间结果集进行分类和归纳得到最终的计算结果;
两个函数可能会并行运行普通的PC机集群上;
MapReduce算法的调用过程:
1.在用户的应用程序中,MapReduce库首先将计算所需的输入文件分割成M块(每块从16MB到64MB不等,可由用户指定),然后在集群上的多台机器上启动相同程序的副本; 2.在启动的所有程序副本中,有一个比较特殊,作为Master程序,剩下的机器被称为Worker,(假设有M个Map任务,R个Reduce任务),Master会挑选所有空闲中的Worker来指派给其Map或者Reduce任务; 3. 分配到Map任务的Worker会自动去读取被分割过的文件,通过运行用户定义的Map操作,来解析处理输入的数据,生成键值对,并不断的抛出;这些中间键值对构成中间结果集,会被缓存在内存中; 4.因为内存的大小有限,每隔段时间,缓存的中间结果集会被写到执行Map任务的及其的硬盘上,在写之前,这些中间结果集会被Partition函数分隔成块,这些块的位置会报告给Master程序,因为这些文件将会作为Reduce任务的输入; 5.当Reduce Worker受到Master程序发来的中间结果集任务时,通过远程调用来读取Map Worker上缓存的中间结果集,读取完毕之后,Reduce Worker会将中间结果集排序,所以相同的Key的键值对会排到一块,如果中间结果集太大,则使用外部程序来排序; 6.Reduce Worker通过遍历排序过的中间结果集,对于相同key的键值对进行合并化简,Reduce任务的结果将会被作为结果写入到GFS文件系统中; 7.当所有的Map和Reduce操作都完成的时候,Master程序会唤醒用户的程序,通知其任务已经完成,继而执行其他的任务;
执行过程中的文件存储位置:
源文件:GFS
Map处理结果:本地存储
Reduce处理结果:GFS
日志:GFS
MapReduce示例:单词统计
案例:单词记数问题(WordCount)
给定巨大的文本文件(大于1TB),如何计算文件中所有单词出现的数目?
使用MapReduce求解该问题
定义Map和Reduce函数(Pseudo Code)
Map函数,以键值对作为输入,经过处理后抛出中间结果的键值对(key,value),MapReduce库会收集Map函数抛出的结果,并且把具有相同的键的键值对分组;
Reduce函数接受MapReduce库分过组的(key,value[]),然后对具有相同键的中间结果集进行规约,返回给MapReduce库,最后得到计算结果;
Step 1: 自动对文本进行分割
Step 2:在分割之后的每一对(key, value)进行用户定义的Map进行处理,生成新的(key,value)对
Step 3: 对Map返回的中间结果集归拢排序
Step 4: 将分组过的中间结果集传给Reduce操作,通过计数生成最后结果
0 0
- hadoop mapreduce执行流程
- MapReduce执行流程
- MapReduce执行流程
- hadoop mapreduce执行流程
- MapReduce执行流程
- MapReduce执行流程
- MapReduce执行流程
- MapReduce执行流程
- MapReduce执行流程
- MapReduce执行流程图解
- MapReduce执行流程详解
- MapReduce执行流程
- MapReduce执行流程
- MapReduce作业执行流程
- nutch中mapreduce执行流程
- MapReduce执行流程之我见
- Hadoop MapReduce执行流程详解
- 【3-2】mapreduce执行流程
- 多线程的优缺点
- for loop in python demo
- meta 小身材大作用
- Socket调用Close后如何终止套接口的问题
- android listview直接定位到某一行位置
- MapReduce执行流程
- 十二、我们应当怎样做需求分析:用例说明
- 今天遇到的问题:关于input onclick中实现action跳转
- scala Map类型笔记
- Android中Bitmap, Drawable, Byte之间的转化
- APP时代,没那么容易结束
- Nginx系列(十六.)nginx日志分析(goaccess)
- 【六】栈的定义及实现
- poj 3252 数位DP