亲宝软件园·资讯

展开

7,MapReduce基础

平凡的神灯 人气:0
# MapReduce基础 [TOC] ### 一、关于MapReduce #### 1.1 为什么要MapReduce - **单机资源有限:**由于单台计算机的资源有限,计算能力不足以处理海量数据;所以需要多台计算机组成分布式集群来处理海量数据。 - **分布式计算较复杂:**在分布式计算中,计算任务的分发,各个主机之间的协作;程序的启动以及运行过程中的监控、容错、重试等都会变得很复杂。所以引入了MapReduce框架,框架解决了分布式开发中的复杂性,开发人员只需要将大部分工作集中在业务逻辑的开发上,从而极大的提高了工作效率。 #### 1.2 MapReduce的定义 - MapReduce是一个分布式运算程序的编程框架,用于大规模数据集(大于1TB)的并行计算;Map(映射)和reduce(归约)是它的主要思想;它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 ### 二、MapReduce的优缺点 #### 2.1 优点: - **易于编程:**只需要实现一些接口,就可以完成一个分布式程序的编写;跟编写一个串行程序一样; - **良好的扩展性:**当计算资源不足时,只需要简单的增加机器来扩展它的计算能力; - **高容错性:**当一个机器挂了之后,会自动把上面的计算任务转移到另一个节点上运行,无需人工干预; - **海量:**适合PB级海量数据的离线处理。 #### 2.2 缺点: - **不适合实时计算:**MapReduce由于过程较为复杂,IO次数较多,所以无法做到毫秒或秒级响应; - **不适合流式计算:**流式计算的输入是动态的,可以不断添加,而MapReduce的输入是静态的; - **不适合DAG(有向图)计算:**对于多个程序之间有依赖关系,即后一个程序的输入是前一个程序的输出;虽然MapReduce也可以完成,但都是通过磁盘来传递中间数据,造成大量的磁盘IO,性能极低。 ### 三、MapReduce的执行阶段 ![](https://img2020.cnblogs.com/blog/1201165/202003/1201165-20200314170748279-1829726130.png) #### 3.1 执行的两个阶段 - **Map阶段:**若干个maptask并发实例,完全并行运行,互不相干。 - **Reduce阶段:**若干个reducetask并发实例,完全并行运行,但是他们的数据依赖于Map阶段的输出。 - **注意:**MapReduce模型只能包含一个map阶段和一个reduce阶段;如果业务逻辑非常复杂,就只能使用多个MapReduce程序,串行运行。 ### 四、编写MapReduce程序 - ##### 用户需要编写的三个部分:Mapper、Reducer、Driver(提交MR程序)。 #### 4.1 以WordCount为例: ![](https://img2020.cnblogs.com/blog/1201165/202003/1201165-20200314170850390-872440303.png) **1. 编写Mapper** ~~~java // 注意:hadoop1.0版本中是mapred下包,hadoop2.0是mapreduce下的包 import org.apache.hadoop.mapreduce.Mapper; // 继承Mapper父类,泛型为输入和输出的

加载全部内容

相关教程
猜你喜欢
用户评论