应用场景

当数据量大到一定程度,传统的技术无法进行解决的时候,那么需要采用分布式计算引擎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相关推荐

  1. f分布表完整图_分布式计算引擎之星——Spark

    点击上方"数风云"关注我们吧 文/李萌 Spark作为分布式计算引擎的一颗璀璨之星,继承了MapReduce分布式并行计算的优点,并改进了MapReduce明显的缺陷.它使用一种面 ...

  2. 任务调度Schedulerx2.0分布式计算之MapReduce模型

    简介 阿里巴巴任务调度Schedulerx2.0自研轻量级分布式模型MapReduce,可以进行大数据的实时/离线跑批.通过一个map方法就能将海量数据分布式到多台机器上执行,通过process方法处 ...

  3. Hadoop技术(二)资源管理器YARN和分布式计算框架MapReduce

    资源管理器YARN和分布式计算框架MapReduce 第一章 Hadoop MapReduce 是什么 一 MapReduce 介绍 1. 基本介绍 2. MR数据流程方向 3. MR 原语/ 核心思 ...

  4. 【MapReduce】分布式计算框架MapReduce

    分布式计算框架MapReduce 什么是MapReduce? MapReduce起源是2004年10月Google发表了MapReduce论文,之后由Mike Cafarella在Nutch(爬虫项目 ...

  5. 批处理引擎MapReduce程序设计

    批处理引擎MapReduce程序设计 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MapReduce API Hadoop同时提供了新旧两套MapReduce API,新AP ...

  6. 分布式计算框架MapReduce架构

    Hadoop核心由HDFS和MapReduce组成,HDFS负责分布式存储,MapReduce负责分布式计算. MapReduce最早是由Google研究提出的一种面向大规模数据处理的并行计算模型和方 ...

  7. 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程

    [大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...

  8. hive的引擎mapreduce、tez和spark三者比较

    1.Hive引擎简介 MapReduce MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算. Tez Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapRe ...

  9. 大数据理论与实践5 分布式计算框架MapReduce和Spark

    MapReduce和Spark MapReduce 简介 原理示例 基本概念 作业运行模式 Spark 简介 概念 编程模型 RDD RDD操作(Operator) RDD依赖(Dependency) ...

最新文章

  1. 《深入浅出Ext JS》2.19全国首发
  2. 生活中的化学物质 —— 化学盐
  3. SSE命令示例代码(转换、加载、置位、存储)
  4. 08.suggester02term_suggester
  5. 同步本地远程分支 git remote prune origin
  6. HTML的xmlns的作用
  7. windows创建进程的过程
  8. nginx安装http2.0协议
  9. html5实现电子签名并下载
  10. win10安装无法创建新分区也找不到现有分区问题
  11. 我在字节跳动「修电影」
  12. 基于gfortran的WRF安装
  13. vant picker confirm事件
  14. BNUZ-ACM 2018国庆新生欢乐赛部分题解+思路(已解出答案部分)
  15. 利用陀螺仪实现更真实的微信摇一摇动画
  16. 常用的计算机病毒检测方法都有哪些?
  17. 第一章 认识Java 2019-09-28
  18. wxpython可视化_wxPython GUI生成器工具
  19. 群发邮箱软件哪个好?邮箱群发平台哪个好用?
  20. 一个基于mobapi的手机号码归属地查询的app

热门文章

  1. Angular中实现路由跳转并通过get方式传递参数
  2. Ubuntu Server中安装keepalived
  3. Python的Tkinter点击按钮触发事件
  4. MySQL高级-索引是个什么东西?explain到底怎么用-MySQL查询优化大全
  5. 让用户故事真的像故事那样
  6. 信息系统项目管理师 案例1
  7. 「神策 2020 数据驱动用户大会」开幕在即,10 月 13-14 日,八城联动·北京场,带你一起见证数据的力量!
  8. 70 周岁快乐 | 盛世华诞,每一刻都值得铭记
  9. mysql压力测试工具Mysqlslap
  10. hdu5126stars