`
jimmee
  • 浏览: 529329 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hadoop的mapreduce的一些关键点整理

阅读更多

  1. hadoopmapreduce的流程图如下:

 



 

1)用户提交一个任务以后,该任务由JobTracker协调,先执行Map阶段(图中M1M2M3),然后执行Reduce阶段(图中R1R2)。Map阶段和Reduce阶段动作都受TaskTracker监控,并运行在独立于TaskTrackerJava虚拟机中。

 

2)输入和输出都是HDFS上的目录(如上图所示)。输入由InputFormat接口描述,它的实现如ASCII文件,JDBC数据库等,分别处理对于的数据源,并提供了数据的一些特征。通过InputFormat实现,可以获取InputSplit接口的实现,这个实现用于对数据进行划分(图中的split1split5,就是划分以后的结果),同时从InputFormat也可以获取RecordReader接口的实现,并从输入中生成<k,v>对。有了<k,v>,就可以开始做map操作了。

 

3map操作通过context.collect(最终通过OutputCollector. collect)将结果写到context中。当Mapper的输出被收集后,它们会被Partitioner类以指定的方式区分地写出到输出文件里。我们可以为Mapper提供Combiner,在Mapper输出它的<k,v>时,键值对不会被马上写到输出里,他们会被收集在list里(一个key值一个list),当写入一定数量的键值对时,这部分缓冲会被Combiner中进行合并,然后再输出到Partitioner中(图中M1的黄颜色部分对应着CombinerPartitioner)。

 

(4) Map的动作做完以后,进入Reduce阶段。这个阶段分3个步骤:copy(复制数据)、排序(sort)和reducecopy就是reduce节点从执行各个Map任务的服务器那里,拷贝的属于自己的数据;sort将从各个map节点那里copy到的数据进行排序;reduce是对排序的结果进行操作输出。

 

2. map端操作的关键点

 

map端的数据结构如下图:



 

 

Hadoop的机制是通过一个circle buffer 收集Mapper的输出, 到了io.sort.mb * io.sort.spill.percent或者key-value的数目超限(通过io.sort.record.percent可以计算出记录的最大数目的时候,就spilldisk,如下图。图中出现了两个数组和一个缓冲区,kvindices保持了记录所属的(Reduce)分区、key在缓冲区开始的位置和value在缓冲区开始的位置;通过kvindices,可以在缓冲区中找到对应的key-value记录。kvoffets用于在缓冲区满的时候对kvindicespartition进行排序,排完序的结果将输出到输出到本地磁盘上,其中索引(每个reduce的数据的index)保存在spill{spill}.out.index中,数据保存在spill{spill}.out中。

 

Mapper任务结束后,有可能会出现多个spill文件,这些文件会做一个归并排序,形成Mapper的一个输出(spill.outspill.out.index)。

 

map小结:map的输出结果包括两部分,一部分是将要传输到每个reduce节点的数据的索引文件(spill.out.index);另一个部分是将要传输到reduce节点的key-value的值。其中,将输出到每个reduce节点的数据已根据key进行了排序。简言之,map的输出结果先根据reduce的节点进行排序,再根据key进行排序。

 

 

 

3. reduce端操作的关键点

 

下图来自《hadoop the definitive guide》。说明了reduce的三个主要阶段:copysortreduce



 

 

1copy阶段:reduce端启动copy的线程,当有map任务完成的时候,即从map服务器节点copyreduce节点对应的数据;由于reduce节点的数据可能来自多个map节点,既然每个map节点的输出已经根据key排好序了,因此进行merge操作即可实现全局的有序,在copy的同时,同时会针对copy过来的数据进行merge排序操作

 

2sort阶段:虽然copy阶段已经进行了针对copy的数据进行了部分合并,在所有的文件都拷贝完毕后,还需要使用工具类Merger归并所有的文件。经过这一个流程,一个合并了所有所需Map任务输出文件的新文件产生了。

 

3reduce阶段:对sort的结果进行处理输出。

 

4. 一个关于shuffle的误解

 

其实shuffle并不是什么复杂的东西,shuffle描述的是从map端处理完数据后,reduce端从map端获取数据进行处理的过程,只需要明白map端和reduce分别都怎么处理的,就明白了mapreduce的原理。因此,shuffle可以理解为一个描述性的词语,想想一个map的结果会输出到不同的reduce节点;而一个ruduce节点的数据是来自多个map,这样一个mxn的形式,用线连起来,是不是像洗牌操作?

 

  • 大小: 68.8 KB
  • 大小: 164.5 KB
  • 大小: 52.8 KB
分享到:
评论

相关推荐

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    并通过Eclipse进行MapReduce程序的开发,步骤详细完整,在相关过程中配有完整代码和解释,全程无误,只需复制粘贴即可,小白新手按步骤一步一步来也能搭建Hadoop集群成功并进行MapReduce程序开发!!!喜欢请关注...

    Hadoop实战(第2版)

    1.2.4 运行MapReduce 作业 1.3 本章小结第2 部分 数据逻辑.2 将数据导入导出Hadoop.2.1 导入导出的关键要素2.2 将数据导入Hadoop .2.2.1 将日志文件导入Hadoop技术点1 使用Flume 将系统日志文件...

    大数据基础知识入门.pdf

    2003-2006年,Google提出了三大关键技术来解决大规模数据的存 储和处理: GFS、MapReduce、BigTable并称Google大数据的三驾马 车。虽然Google没有公布这三个产品的源码,但是他发布了这三个 产品的详细设计论文,...

    大数据与Hadoop.doc

    Hadoop MapReduce:基于YARN的大型数据分布式并行编程模式和程序执行框架,是Google的Map Reduce的开源实现。它帮助用户编写处理大型数据集的并行运行程序。MapReduce隐藏了 分布式并行编程的底层细节,开发人员只...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点4 使用MapReduce 将数据导入数据库 技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源 2.3 将数据导出Hadoop 2.3.1 将数据...

    Hadoop海量网络数据处理平台的关键技术

    针对移动互联网流量数据的特性,本文对基于Hadoop的海量网络数据处理平台的关键技术进行了深入研究。具体来说,本文的主要研究内容和创新点如下: 1.提出了一种针对移动互联网的海量数据处理架构针对移动互联网中海量...

    云计算与数据中心建设

    中国信息化培训中心 朱永春 系统架构师讲解 课程内容: 云计算与虚拟化 云计算概述 虚拟化技术概述 Power服务器的虚拟化 云计算的实现 存储系统概述 大数据存储系统(Hadoop HDFS等) ...数据库性能的关键点:锁

    PDM :基于Hadoop的并行数据分析系统 (2012年)

    提出了一款基于Hadoop的并行数据分析系统―――PDM.该系统拥有大量以MapReduce...介绍了基于电信数据的典型应用,如采用并行k均值和决策树算法实现的“套餐推荐”,利用并行PageRank算法实现的“营销关键点发现”等;最后

    互联网行业大数据分析报告项目信息分析.pptx

    大数据可以概括为5个V, 数据量大(Volume)、速度快(Velocity)、类型多(Variety)、价值(Value)、真实性(Veracity) 大数据分析 Hadoop HDFS、Hadoop MapReduce, HBase、Hive、Spark、Flink 渐次诞生,早期Hadoop...

    大数据常见问题之数据倾斜.docx

    数据倾斜长的表现 以Hadoop和Spark是最常见的两个计算平台,下面就以这两个平台说明: 1、Hadoop中的数据倾斜 Hadoop中直接贴近用户使用使用的时Mapreduce程序和Hive程序,虽说Hive最后也是用MR来执行(至少目前...

    大数据技术概述.pdf

    Flume⽇志采集,Sqoop数据库ETL(抽取、转换、加载),完成Hadoop系统组 件之间的互通,Hadoop系统组件当中数据和关系数据库当中数据之间相互导⼊导出(HDFS数据可以导⼊MySql当中去)。 MapReduce,Map函数和Reduce...

    大数据时代银行业的机遇与挑战.docx

    (1)Hadoop Hadoop是效仿谷歌FileSystem和谷歌MapReduce而实现的一套海量数据分布式处理的开源软件框架,被广泛部署运用于雅虎、Facebook等互联网企业。目前,运行于雅虎的Hadoop集群被广泛用于雅虎广告、财经数据...

    大数据常见问题之数据倾斜.pdf

    数据倾斜长的表现 以Hadoop和Spark是最常见的两个计算平台,下⾯就以这两个平台说明: 1、Hadoop中的数据倾斜 Hadoop中直接贴近⽤户使⽤使⽤的时Mapreduce程序和Hive程序,虽说Hive最后也是⽤MR来执⾏(⾄少⽬前...

    java重量级源码-alpakka-jdbc:面向Java开发人员的JDBC流简介

    java重量级源码面向 Java 开发人员的 JDBC 流简介 ...虽然这些架构有很多名称(数据仓库、分析等)并有多种风格(Hadoop、MapReduce、ETL 等),但它们有一个共同点,那就是它们批量处理工作负载。

    37篇经过消化云计算论文打包下载

    本文讨论了云计算中的能量问题,为了使能量有效的整合,我们要研究能量消耗,资源利用,整合后的工作量的性能之间的内在关系,研究揭露了能量性能的权衡与整合,证明存在最佳的工作点,我们模拟了整合的问题,并用一...

    37篇经过消化的云计算论文

    本文讨论了云计算中的能量问题,为了使能量有效的整合,我们要研究能量消耗,资源利用,整合后的工作量的性能之间的内在关系,研究揭露了能量性能的权衡与整合,证明存在最佳的工作点,我们模拟了整合的问题,并用一...

    大数据特征与发展历程.pdf

    从技术上看,Hadoop由两项关键服务构成:采⽤Hadoop分布式⽂件系统(HDFS)的可靠数据存储 服务,以及利⽤⼀种叫做MapReduce技术的⾼性能并⾏数据处理服务。这两项服务的共同⽬标是,提供⼀个使对结构化和复杂数据的快...

    大数据发展历史.pdf

    成熟阶段: 2006——2009年,⾕歌公开发表两篇论⽂《⾕歌⽂件系统》和《基于集群的简单数据处理:MapReduce》,其核⼼的技术包括分布式⽂ 件系统GFS,分布式计算系统框架MapReduce,分布式锁Chubby,及分布式数据库...

Global site tag (gtag.js) - Google Analytics