大数据运算模型 MapReduce 原理
大数据运算模型 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节点进行统计,计算出最终结果
相关文章
- Exif.js 读取图像的元数据
- 第十五节:HttpContext五大核心对象的使用(Request、Response、Application、Server、Session) 第十四节:再探MVC中路由的奥秘 第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链) 第十二节:MVC中的一些特殊优化 第十一节:Bundles压缩合并js和css及原理分析 第十节:数据批注(DataAnnotationMode
- Google Earth Engine ——混合坐标海洋模型HYCOM 数据子集包含变量盐度、温度、速度和海拔数据集
- Google Earth Engine ——数据全解析专辑(US NED Physiographic Diversity地貌数据集代表地貌和岩性数据集)
- 网络安全-OSI模型中数据链路层及交换机工作原理
- vue 响应式的数据原理
- C++程序设计:原理与实践(进阶篇)15.1 存储和处理数据
- 《数据库技术原理与应用教程第2版》——1.3数据与数据库
- 一个update,误用一个双引号,生产数据全变0了
- 【手撕源码】vue2.x双向数据绑定原理
- 《不只是美:信息图表设计原理与经典案例》—— 2.2 数据的展示形式
- 大数据计算模式
- (数据科学学习手札24)逻辑回归分类器原理详解&Python与R实现
- (数据科学学习手札23)决策树分类原理详解&Python与R实现
- 《大数据分析原理与实践》一一1.2 哪里有大数据
- 《Storm分布式实时计算模式》——第3章 Trident和传感器数据3.1 使用场景
- SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)
- 浅析虚拟列表高性能渲染大体量数据原理
- 模拟源码深入理解Vue数据驱动原理(2)
- vue实现数据驱动视图原理
- 可视化数据matplotlib之安装与简单折线图
- Flex数据交互之Remoting[转]
- 【HMS Core】REST获取运动健康APP数据的问题
- 如何在存储过程中实现插入更新数据