`

第三章 MapReduce计算模型

 
阅读更多

 

 

 

3.1 为什么用MapReduce

分布式+海量数据

 

3.2 MapReduce计算模型

JobTracker,用户管理和调度工作

TaskTracker,用于执行工作

Job,每个个MapReduce任务被初始化为一个Job,每个Job又分为两个阶段,分别用Map函数和Reduce函数表示这两个阶段

InputSplit,存储的不是数据本身,而是一个分片长度和一个记录数据位置的数据

 

新的API包为org.appache.hadoop.mapreduce,旧API包为org.appache.hadoop.mapred

新/旧版API区别:

1、新,Mapper/Reducer为类,方便扩展,旧,Mapper/Reduce为接口

2、新API中广泛使用Context对象,并使用MapContext进行MapReduce间的通信

3、Job的配置统一由Configuration完成

4、Job类负责Job的控制,JobClient类被删除

 

WordCount程序执行流程图

1、按照TextInputFormat被处理成两个InputSplit,然后输入到两个Map中,Map程序会读取InputSplit指定位置的数据,然后交由Map函数处理

2、处理后的数据写入到本地磁盘,而不是HDFS,Map的数据在Job完成后可以删除

3、Reduce读取Map的输出作为自己的输入,合并value然后写入HDFS 

参照图3-2来对照图3-3WordCount程序


 

简单控制流:JobTracker调度任务给TaskTracker,TaskTracker执行任务时会把进度返回给JobTracker,JobTracker会记录进度的进行状况,如果某个TaskTracker上任务失败,JobTracker会把这个任务分配给另一个TaskTracker,知道任务完成。

 

3.3 MapReduce任务的优化

1、任务调度

优先将任务分配给空闲的机器,尽量将Map任务分配给InputSplit所在的机器,减少网络I/O消耗

2、数据预处理与InputSplit大小

MapReduce擅长处理少量大数据,不擅长处理大量小数据。在提交MapRedcue任务前可以先对数据进行一次预处理,将数据合并为少量大数据。一个block作为一个InputSplit,合理的设置block块大小。一个Map任务在一分钟左右比较合适

3、Map和Reduce任务的数量

Map/Reduce任务槽,是这个集群能够同时运行Map/Reduce任务的最大数量。例如:1200台的集群,设置每台机器可以运行10个Map任务,5个Reduce任务,这个集群的Map任务槽书为12000,Reduce任务槽为6000。一般Reduce任务数量是Reduce任务槽数的0.95或1.75倍,0.95时,如果一个Reduce任务失败,可以迅速找到一台空闲的机器重新运行这个任务,1.75时,执行速度快的机器可以获得更多的Reduce任务。

4、Combine函数

这是一个本地合并函数,WordCount程序中,词频最高的可能是“the”,每个Map任务肯那个产生千万个<the,1>记录,这些记录如果一一的传递给Reduce任务将会很耗时。可以通过Combine函数合并这些数据,减少网络I/O操作。可以使用Combine函数计算出这个block块中“the”的数量。



 5、压缩

可以选择对Map的输出或最终的输出进行压缩

6、自定义comparator

实现自定义类型时,自定义comparator来进行二进制流的比较,省去数据的反序列化

 

3.4 Hadoop流

 通过流的方式Hadoop可以支持任何语言编写Map/Reduce函数

P49

 

3.5 Hadoop Pipes

在Hadoop上运行C++程序的方法, Hadoop的流使用的是标准的输入/输出,Pipes使用的是Sockets

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 581.5 KB
  • 大小: 555.1 KB
  • 大小: 209.8 KB
分享到:
评论

相关推荐

    MapReduce计算模型详讲(结合源码深入解读)

    MapReduce计算模型详讲(结合源码深入解读) MapReduce是Hadoop中的一种编程模型,用于处理大规模数据。它主要由两部分组成:Map和Reduce。Map阶段负责将输入数据分割成小块,并对每个小块进行处理;Reduce阶段负责...

    第四章Mapreduce.pdf

    编写MapReduce程序涉及Mapper、Reducer和Driver三个部分: 1. Mapper:自定义Mapper类,实现map()方法,处理输入数据并生成中间键值对。 2. Reducer:自定义Reducer类,实现reduce()方法,对Mapper输出的中间键值对...

    hadoop大数据平台技术与应用-第4章MapReduce.pdf

    MapReduce计算模型为五个阶段:数据输入、Map任务、Shuffle任务、Reduce任务和结果输出。在数据输入阶段,数据被拆分成多个片段,并分配到不同的节点上进行处理。Map任务对数据进行处理,并生成中间键值对。Shuffle...

    MapReduce实现矩阵相乘算法

    在大数据处理领域,MapReduce是一种广泛使用的编程模型,尤其适合处理和存储大规模数据集。本话题将深入探讨如何使用Hadoop MapReduce实现两个矩阵相乘的算法,这在数据分析、机器学习以及高性能计算中有着重要应用...

    大数据实验四-MapReduce编程实践

    3. **分布式计算的认识**:认识到分布式计算的局限性与优势,在实际应用中需要权衡数据规模和计算需求。 4. **Hadoop框架的理解**:对Hadoop框架有了更全面的认识,为进一步学习Hadoop生态系统打下基础。 5. **编程...

    Hadoop技术-MapReduce编程模型.pptx

    在第二轮MapReduce中,可能会有新的Mapper对地区级别的数据进行进一步分析,如计算平均活动时间或活跃用户数。 ### 小结 MapReduce编程模型提供了一种高效且易于实现的分布式计算方式,尤其适用于批处理任务。...

    MapReduce2.0源码分析与实战编程

    MapReduce是一种分布式计算模型,由Google提出,用于处理和生成大规模数据集。它主要由两个阶段组成:Map阶段和Reduce阶段,分别对应于数据的映射和规约过程。 第2章:MapReduce2.0架构 这一章深入解析了Hadoop ...

    Hadoop mapreduce 实现MatrixMultiply矩阵相乘

    在大数据处理领域,Hadoop MapReduce 是一种广泛使用的并行计算框架,用于处理和存储海量数据。本主题将深入探讨如何使用Hadoop MapReduce来实现MatrixMultiply,即矩阵相乘,这是一个基础且重要的数学运算,尤其在...

    基于MapReduce的大规模图挖掘并行计算模型 (2012年)

    基于MapReduce框架的集群系统,提出了1种新 的计算模型用于大规模图形的3-clique计算,来实现图挖掘. 计算的基本步骤是:首先获取每个节点的第1跳信息,然 后是第2跳信息,最后得到所有基于该节点的3-clique. 该计算模型...

    高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门

    ### 高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门 #### 知识点一:分布式计算概述 - **定义**:分布式计算是一种计算模型,它通过网络将任务分配到多台计算机上并行处理,以提高计算效率...

    第一个Mapreduce程序.pdf

    本文主要介绍了如何使用Java编写MapReduce程序,并运行第一个MapReduce作业,包括遇到的问题和解决方案。 首先,环境搭建是使用Hadoop MapReduce的重要步骤。本文的环境基于CDH5(Cloudera's Distribution ...

    Hadoop平台的MapReduce模型性能优化研究

    程序和参数两个层面实现优化的可选项很多,本文在第三章对此作了详细阐述。 Hadoop在管理资源中将内存和CPU两种计算资源捆绑在一起,然后再根据任务类型分为Map Slot和Reduce Slot两种资源模型。这种管理机制实现简单,...

    mapreduce项目 数据清洗

    MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理和生成大规模数据集。它将复杂的并行计算任务分解成两个主要阶段:Map(映射)和Reduce(化简)。在这个"MapReduce项目 数据清洗"中,我们将探讨...

    第4章大数据技术教程-MapReduce.docx

    MapReduce 编程模型和分布式计算框架 MapReduce 是一种面向大规模数据并行处理的编程模型,也是一种并行分布式计算框架。它主要由两个处理阶段:Map 阶段和 Reduce 阶段,每个阶段都以键值对作为输入和输出,键值对...

    Hadoop-MapReduce项目代码ZIP压缩包 + 面向小白(注释详细清晰)

    MapReduce是一种编程模型,由Google提出,用于大规模数据集的并行计算。Hadoop是Apache开源项目,实现了MapReduce模型,并结合HDFS(Hadoop分布式文件系统)提供了一个可扩展、容错性强的大数据处理框架。在这个项目...

    大数据及MapReduce编程模型94.pptx

    MapReduce是由Google提出的用于大规模数据处理的编程模型,它将复杂的数据处理任务分解为两个主要阶段:Map(映射)和Reduce(归约)。Map阶段将原始数据分割成可管理的小块,然后并行地应用函数;Reduce阶段则聚合...

    Hadoop专业解决方案-第3章:MapReduce处理数据.docx

    MapReduce是Hadoop生态系统中的核心处理模块,它是一种分布式计算框架,特别适合处理和分析海量数据。这个框架的灵感来源于函数式编程中的map和reduce概念,最初由Google在2004年提出,随后在Hadoop中得到广泛应用。...

    MapReduce天气源数据和计算类

    MapReduce是一种分布式编程模型,由Google开发,用于处理和生成大数据集。在Hadoop框架下,MapReduce将大型任务拆分成一系列可并行处理的小任务,从而高效地运行在大规模集群上。本案例中,我们关注的是如何使用...

Global site tag (gtag.js) - Google Analytics