分布式计算引擎MapReduce
应用场景
当数据量大到一定程度,传统的技术无法进行解决的时候,那么需要采用分布式计算引擎MapReduce来尝试解决了!
操作步骤
1. 架构图
Hadoop是由Apache基金会所开发的分布式系统基础架构,组织架构如下图所示:
正如上图所示:Hadoop包含很多优秀的子项目,例如HDFS,Mapreduce,Hbase,Hive,Zookeeper等,其中最重要的,也是Hadoop当时风靡一时的原因是HDFS(分布式文件系统)和Mapreduce(分布式计算框架)。HDFS解释了,hadoop如何解决大数据的存储问题,而Mapreduce解释了,hadoop如何对大数据的计算问题。
2. MapReduce
把大量的数据放到了HDFS上,接下去如何对大数据进行分析,需要Hadoop的另一个核心技术,MapReduce。
Mapreduce是一种编程模型,是一种编程方法,抽象理论。MapReduce相当的抽象,还是用通俗的话来说比较好。比如,现在要做一份洋葱辣椒酱,当然取一个洋葱,把它切碎,然后拌入盐和水,最后放进混合研磨机里研磨。这样就能得到洋葱辣椒酱了。那现在要用薄荷、洋葱、番茄、辣椒、大蒜弄一瓶混合辣椒酱,我们会取薄荷叶一撮,洋葱一个,番茄一个,辣椒一根,大蒜一根,切碎后加入适量的盐和水,再放入混合研磨机里研磨,这样就可以得到一瓶混合辣椒酱了。
这其实和MapReduce是一个道理,Map和Reduce其实是两种操作,Map(映射): 把洋葱、番茄、辣椒和大蒜切碎,是各自作用在这些物体上的一个Map操作。所以你给Map一个洋葱,Map就会把洋葱切碎。
同样的,你把辣椒,大蒜和番茄一一地拿给Map,你也会得到各种碎块。 所以,当你在切像洋葱这样的蔬菜时,你执行就是一个Map操作。
Map操作适用于每一种蔬菜,它会相应地生产出一种或多种碎块,在我们的例子中生产的是蔬菜块。在Map操作中可能会出现有个洋葱坏掉了的情况,你只要把坏洋葱丢了就行了。所以,如果出现坏洋葱了,Map操作就会过滤掉坏洋葱而不会生产出任何的坏洋葱块。Reduce(化简):在这一阶段,你将各种蔬菜碎都放入研磨机里进行研磨,你就可以得到一瓶辣椒酱了。这意味要制成一瓶辣椒酱,你得研磨所有的原料。因此,研磨机通常将map操作的蔬菜碎聚集在了一起。
mapreduce操作过程如下图所示:
一切都是从最上方的user program开始的,user program链接了MapReduce库,实现了最基本的Map函数和Reduce函数。图中执行的顺序都用数字标记了。
1.MapReduce库先把user program的输入文件划分为M份(M为用户定义),每一份通常有16MB到64MB,如图左方所示分成了split0~4;然后使用fork将用户进程拷贝到集群内其它机器上。
2.user program的副本中有一个称为master,其余称为worker,master是负责调度的,为空闲worker分配作业(Map作业或者Reduce作业),worker的数量也是可以由用户指定的。
3.被分配了Map作业的worker,开始读取对应分片的输入数据,Map作业数量是由M决定的,和split一一对应;Map作业从输入数据中抽取出键值对,每一个键值对都作为参数传递给map函数,map函数产生的中间键值对被缓存在内存中。
4.缓存的中间键值对会被定期写入本地磁盘,而且被分为R个区,R的大小是由用户定义的,将来每个区会对应一个Reduce作业;这些中间键值对的位置会被通报给master,master负责将信息转发给Reduce worker。
5.master通知分配了Reduce作业的worker它负责的分区在什么位置(肯定不止一个地方,每个Map作业产生的中间键值对都可能映射到所有R个不同分区),当Reduce worker把所有它负责的中间键值对都读过来后,先对它们进行排序,使得相同键的键值对聚集在一起。因为不同的键可能会映射到同一个分区也就是同一个Reduce作业(谁让分区少呢),所以排序是必须的。
6.reduce worker遍历排序后的中间键值对,对于每个唯一的键,都将键与关联的值传递给reduce函数,reduce函数产生的输出会添加到这个分区的输出文件中。
7.当所有的Map和Reduce作业都完成了,master唤醒正版的user program,MapReduce函数调用返回user program的代码。
有人问:金庸的天龙八部小说里谁出现的次数最多?很多人说是乔峰,是错误的,其实这是一个用mapreduce的很好的例子,先把小说揉碎,揉成一个一个的词组,将人名词组定义为map中的key,value即为出现的次数,然后通过reduce进行归一,统计出现次数最多的人物,统计结果是段誉。结果前十位分别如下:
分布式计算引擎MapReduce相关推荐
- f分布表完整图_分布式计算引擎之星——Spark
点击上方"数风云"关注我们吧 文/李萌 Spark作为分布式计算引擎的一颗璀璨之星,继承了MapReduce分布式并行计算的优点,并改进了MapReduce明显的缺陷.它使用一种面 ...
- 任务调度Schedulerx2.0分布式计算之MapReduce模型
简介 阿里巴巴任务调度Schedulerx2.0自研轻量级分布式模型MapReduce,可以进行大数据的实时/离线跑批.通过一个map方法就能将海量数据分布式到多台机器上执行,通过process方法处 ...
- Hadoop技术(二)资源管理器YARN和分布式计算框架MapReduce
资源管理器YARN和分布式计算框架MapReduce 第一章 Hadoop MapReduce 是什么 一 MapReduce 介绍 1. 基本介绍 2. MR数据流程方向 3. MR 原语/ 核心思 ...
- 【MapReduce】分布式计算框架MapReduce
分布式计算框架MapReduce 什么是MapReduce? MapReduce起源是2004年10月Google发表了MapReduce论文,之后由Mike Cafarella在Nutch(爬虫项目 ...
- 批处理引擎MapReduce程序设计
批处理引擎MapReduce程序设计 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce API Hadoop同时提供了新旧两套MapReduce API,新AP ...
- 分布式计算框架MapReduce架构
Hadoop核心由HDFS和MapReduce组成,HDFS负责分布式存储,MapReduce负责分布式计算. MapReduce最早是由Google研究提出的一种面向大规模数据处理的并行计算模型和方 ...
- 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程
[大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...
- hive的引擎mapreduce、tez和spark三者比较
1.Hive引擎简介 MapReduce MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算. Tez Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapRe ...
- 大数据理论与实践5 分布式计算框架MapReduce和Spark
MapReduce和Spark MapReduce 简介 原理示例 基本概念 作业运行模式 Spark 简介 概念 编程模型 RDD RDD操作(Operator) RDD依赖(Dependency) ...
最新文章
- 《深入浅出Ext JS》2.19全国首发
- 生活中的化学物质 —— 化学盐
- SSE命令示例代码(转换、加载、置位、存储)
- 08.suggester02term_suggester
- 同步本地远程分支 git remote prune origin
- HTML的xmlns的作用
- windows创建进程的过程
- nginx安装http2.0协议
- html5实现电子签名并下载
- win10安装无法创建新分区也找不到现有分区问题
- 我在字节跳动「修电影」
- 基于gfortran的WRF安装
- vant picker confirm事件
- BNUZ-ACM 2018国庆新生欢乐赛部分题解+思路(已解出答案部分)
- 利用陀螺仪实现更真实的微信摇一摇动画
- 常用的计算机病毒检测方法都有哪些?
- 第一章 认识Java 2019-09-28
- wxpython可视化_wxPython GUI生成器工具
- 群发邮箱软件哪个好?邮箱群发平台哪个好用?
- 一个基于mobapi的手机号码归属地查询的app