图解mapreduce原理和执行过程

说明:

&">nbsp;   下面的图来自南京大学计算机系黄宜华老师开设的mapreduce课程的课件,这里稍作整理和 总结。

本文旨在对接触了mapreduce之后,但是对mapreduce的工作流程仍不是很清楚的人员,当然包括博主自己,希望与大家一起学习。

mapreduce的原理

MapReduce借鉴了函数式程序设计语言Lisp中的思想,Lisp(List processing)是一种列表处理语言,可对列表元素进行整体处理。

如:(add #(1 2 3 4) #(4 3 2 1))  将产生结果:#(5 5 5 5)

mapreduce之所以和lisp类似,是因为mapreduce在最后的 reduce阶段也是以key为分组进行列的运算。

下面这幅图就是mapreduce的工作原理

1)首先文档的数据记录(如文本中的行,或数据表格中的行)是以“键值对”的形式传入map 函数,然后map函数对这些键值对进行处理(如统计词频),然后输出到中间结果。

2)在键值对进入reduce进行处理之前,必须等到所有的map函数都做完,所以既为了达到这种同步又提高运行效率,在mapreduce中间的过程引入了barrier(同步障)

在负责同步的同时完成对map的中间结果的统计,包括 a. 对同一个map节点的相同key的value值进行合并,b. 之后将来自不同map的具有相同的key的键值对送到同一个reduce进行处理。

3)在reduce阶段,每个reduce节点得到的是从所有map节点传过来的具有相同的key的键值对。reduce节点对这些键值进行合并。

以词频统计为例。

词频统计就是统计一个单词在所有文本中出现的次数,在hadoop中的事例程序就是wordcount,俗称hadoop编程的"hello world".

因为11545.html">我们有多个文本,所以可以并行的统计每个文本中单词出现的个数,然后最后进行合计。

所以这个可以很好地体现map,reduce的过程。

可以发现,这张图是上面那张图的进一步细化,主要体现在:

1)Combiner 节点负责完成上面提到的将同一个map中相同的key进行合并,避免重复传输,从而减少传输中的通信开销。

2)Partitioner节点负责将map产生的中间结果进行划分,确保相同的key到达同一个value.

原文链接:http://blog.csdn.net/michael_kong_nju/article/details/23826979

时间: 2014-12-17

图解mapreduce原理和执行过程的相关文章

Web APi之过滤器执行过程原理解析【二】(十一)

前言 上一节我们详细讲解了过滤器的创建过程以及粗略的介绍了五种过滤器,用此五种过滤器对实现对执行Action方法各个时期的拦截非常重要.这一节我们简单将讲述在Action方法上.控制器上.全局上以及授权上的自定义特性的执行过程. APiController  之前有讲到该APiController,也就稍微介绍了,这节我们来详细此Web API控制器的基类: 1 public abstract class ApiController : IHttpController, IDisposable

Grunt-cli的执行过程以及Grunt加载原理

通过本篇你可以了解到: 1 grunt-cli的执行原理 2 nodeJS中模块的加载过程 Grunt-cli原理 grunt-cli其实也是Node模块,它可以帮助我们在控制台中直接运行grunt命令.因此当你使用grunt的时候,往往都是先安装grunt-cli,再安装grunt. 如果你使用的是npm install -g grunt-cli命令,那么安装地址如下: windows: C:\\Users\\neusoft\\AppData\\Roaming\\npm\\node_modul

《Hadoop与大数据挖掘》一2.4.2 MapReduce原理

2.4.2 MapReduce原理 1.通俗理解MapReduce原理 现在你接到一个任务,给你10本长篇英文小说,让你统计这10本书中每一个单词出现的次数.这便是Hadoop编程中赫赫有名的HelloWorld程序:词频统计.这个任务的结果形式如表2-6所示. 即在这10本书中a共出现了12300次,ai共出现了63次--依次计算出每一个单词出现多少次.天啊,这个工作必须由专业人士做呀,自己做的话还不累死呀.这时你可以把这个工作外包给一支职业分布式运算工程队做. 分布式运算工程队中按岗位有Ma

php内核探索之zend_execute的具体执行过程

解释器引擎最终执行op的函数是zend_execute,实际上zend_execute是一个函数指针,在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在{PHPSRC}/Zend/zend_vm_execute.h: ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { zend_execute_data *execute_data; zend_bool nested = 0; zend_b

网站渗透测试原理及详细过程

网站渗透测试原理及详细过程 原文地址:http://blog.csdn.net/kingmax54212008/article/details/11833059 渗透测试(Penetration Testing)目录 零.前言 一.简介 二.制定实施方案 三.具体操作过程 四.生成报告 五.测试过程中的风险及规避 参考资料 FAQ集     零.前言 渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为. 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德

《R与Hadoop大数据分析实战》一2.3 Hadoop MapReduce原理

2.3 Hadoop MapReduce原理 为了更好地理解MapReduce的工作原理,我们将会: 学习MapReduce对象. MapReduce中实现Map阶段的执行单元数目. MapReduce中实现Reduce阶段的执行单元数目. 理解MapReduce的数据流. 深入理解Hadoop MapReduce. 2.3.1 MapReduce对象 由Hadoop的MapReduce技术可以引申出如下3个主要对象: Mapper:它主要用于实现MapReduce的Map阶段的操作.该对象在M

openstack nova 源码解析 — Nova API 执行过程从(novaclient到Action)

目录 目录 Nova API Nova API 的执行过程 novaclient 将 Commands 转换为标准的HTTP请求 PasteDeploy 将 HTTP 请求路由到具体的 WSGI Application Routes 将 HTTP 请求路由到具体的操作函数并执行 Nova API Nova API 是访问.使用 Nova 各组件服务的唯一途径,作为 novaclient 和 Nova services 之间的中间层.Nova API 需要保证高度的稳定性,所以这些 API 的名称

【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理

白话图解HTTPS原理         [前言]最近看过几篇文章,内容是关于"全民HTTPS"的.为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢?     带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头疼,很难理解.按我个人的认知,这个世界上根本不存在任何高深的道理,尤其是西方讲究科学性的思维,再高深,也不可能高深过中国传统思想中的八个字"只可意会,不可言传",完全不该诉你,让你自己去领

深入理解PHP原理之执行周期分析_php技巧

本文讲述了PHP原理之执行周期.分享给大家供大家参考,具体如下: PHP的执行周期,从最初我们编写的PHP脚本->到最后脚本被执行->得到执行结果,这个过程,其实可以分为如下几个阶段: 首先,Zend Engine(ZE),调用词法分析 器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格 ,注释,分割成一个一个的token. 然后,ZE会将得到的token forward给语法分析 器(yacc生成, 源文件在 Zend