大数据运算模型 MapReduce 原理

MapReduce 是一个大数据集合的并行运算模型,由google提出,现在流行的hadoop中也使用了MapReduce作为计算模型

MapReduce 通俗解释

图书馆要清点图书数量,有10个书架,管理员为了加快统计速度,找来了10个同学,每个同学负责统计一个书架的图书数量 张同学 统计 书架1 王同学 统计 书架2 刘同学 统计 书架3 ...... 过了一会儿,10个同学陆续到管理员这汇报自己的统计数字,管理员把各个数字加起来,就得到了图书总数 这个过程就可以理解为MapReduce的工作过程 MapReduce中有两个核心操作 (1)map 管理员分配哪个同学统计哪个书架,每个同学都进行相同的“统计”操作,这个过程就是map (2)reduce 管理员把每个同学的结果进行汇总,这个过程就是reduce

MapReduce 工作过程拆解 下面通过一个经典案例(单词统计)看MapReduce是如何工作的 有一个文本文件,被分成了4份,分别放到了4台服务器中存储 Text 1: the weather is good Text 2: today is good Text 3: good weather is good Text 4: today has good weather 需求:统计出每个单词的出现次数 处理过程

01

分词处理

map节点 1 输入:(text1, “the weather is good”) 输出:(the, 1), (weather, 1), (is, 1), (good, 1)

map节点 2 输入:(text2, “today is good”) 输出:(today, 1), (is, 1), (good, 1)

map节点 3 输入:(text3, “good weather is good”) 输出:(good, 1), (weather, 1), (is, 1), (good, 1)

map节点 4 输入:(text3, “today has good weather”) 输出:(today, 1), (has, 1), (good, 1), (weather, 1)

02

排序

map节点 1

map节点 2

map节点 3

map节点 4

03

合并

map节点 1

map节点 2

map节点 3

map节点 4

04

汇总统计

MapReduce引入了barrier概念,有的译为“同步障”,我理解为“分界线”,是进入reduce的一道分界线 barrier的作用是对合并结果进行组合 例如使用了3个reduce节点,需要对上面4个map节点的结果进行重新组合,把相同的单词放在一起,并分配给3个reduce节点 reduce节点进行统计,计算出最终结果

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

从图灵机开始

说到图灵机,我们首先要说说图灵这个人。笔者觉得我们这种搞计算机的人都应该知道并记得这个人。 图灵,1912年6月23日生于英国帕丁顿。是数学家、密码破译专家,当...

2128
来自专栏机器学习从入门到成神

Python3读取深度学习CIFAR-10数据集出现的若干问题解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

1252
来自专栏恰同学骚年

设计模式的征途—8.桥接(Bridge)模式

在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=...

1323
来自专栏PingCAP的专栏

Succinct Data Structure

最近看了一篇论文 SuRF: Practical Range Query Filtering with Fast Succinct Tries,里面提到使用一种...

3456
来自专栏机器学习算法工程师

实例介绍TensorFlow的输入流水线

在训练模型时,我们首先要处理的就是训练数据的加载与预处理的问题,这里称这个过程为输入流水线(input pipelines,或输入管道,[参考:https://...

2886
来自专栏听雨堂

Pandas对行情数据的预处理

库里是过去抓取的行情数据,间隔6秒,每分钟8-10个数据不等,还有开盘前后的一些数据,用Pandas可以更加优雅地进行处理。 ? 需要把当前时间设置为index...

22010
来自专栏程序员互动联盟

二维码是如何实现的?

二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长...

3385
来自专栏人工智能头条

在Apache Spark上跑Logistic Regression算法

2003
来自专栏诸葛青云的专栏

教你利用Python把图片转字符画!代码哆啦A梦你见过嘛?

图片转字符画的关键是把图片的灰度值与自定义的字符集之间建立映射关系,不同区间的灰度值对应不同的字符,之后将图片每一个像素对应的字符打印出来,就是我们要的字符画。...

3454
来自专栏三十课

基于规则评分的密码强度检测算法分析及实现(JavaScript)

用正则表达式做用户密码强度的通过性判定,过于简单粗暴,不但用户体验差,而且用户帐号安全性也差。那么如何准确评价用户密码的强度,保护用户帐号安全呢?本文分析介绍了...

5686

扫码关注云+社区

领取腾讯云代金券