`
fredric0611
  • 浏览: 28940 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

基于Hadoop系统的MapReduce数据流优化

阅读更多
1  Hadoop管道改进思想
    在Hadoop系统的实现中,Map端的输出数据首先被溢写入本地磁盘,当本机任务完成后通知JobTracker,然后Reduce端在得到JobTracker的通知后会发出HTTP请求,利用复制的方式从相应的Map端拉回其输出。这样的方式只能等该Map任务完成后才能开始执行Reduce任务,并且Map任务和Reduce任务的执行是分离的。
    我们的改进思想是使Map任务和Reduce任务能够以管道的方式执行,即Map任务开始产生输出后直接发送给相应的Reduce任务,这需要在用户提交作业后JobTracker就分配相应的Map任务和Reduce任务,并将每个Map任务的位置发送给Reduce任务。每个Reduce任务启动后就联系每个任务并打开一个Socket。当每个Map输出一产生后Mapper便决定发送的分区(Reduce任务)并通过适合的Socket直接发送。
    Reduce任务接收从每个Map任务收到的管道数据并将其存储在内存缓冲区中,在需要时将已排好序的缓冲区内容写到磁盘。一旦Reduce任务得知每个Map任务均已完成,它执行已排序内容的最终合并,然后调用用户自定义的Reduce函数,将输出写入HDFS。
2  面临问题及解决方法
在以上的改进思想中面临以下几个实际问题,我们将对其进行分析并提出解决方法。
(1) Hadoop系统可能没有最够可用任务槽来调度作业的每个任务。
由于任务槽的限制,可能部分Reduce还没有被调度,则Map输出无法直接发送给它。改进方法为将这部分Map的输出写入磁盘,当Reduce任务被分配任务槽后,就像Hadoop系统一样从Map任务复制数据。
(2) 打开每个Map任务和Reduce任务之间的Socket需要大量的TCP连接。
大量的TCP将占用过多的网络带宽,容易造成网络堵塞。为了减少并发TCP连接数,每个Reducer可以被配置为从有限数量的Mapper以管道方式传送数据,其余的数据按Hadoop系统的传统方式从Mapper拉回。
(3) 调用Map函数和将输出写入管道Socket使用相同的线程。
这可能将导致如下情况,由于Reducer过度使用而造成网络I/O堵塞,则Mapper也无法做有用的工作。改进方法为以单独线程运行Map函数,将其输出存储到内存缓冲区,然后由另一线程定期发送缓冲区内容到管道Reducer端。
(4) Map任务急切发送产生的数据,阻止了Combiner的使用,并将一些排序工作从Mapper移动到Reducer。
    Map任务一产生数据便使用管道方式传送给对应的Reduce而没有机会应用Combiner函数,会增大网络流量。同时Map的排序过程更多的转移到Reduce任务会Reduce的响应时间并带来很大的系统开销,因为通常Map任务的数量远远大于Reduce任务。改进方法为修改内存缓冲区设计,不直接发送缓冲区内容给Reducer,而是等到缓冲区增长到阈值大小后应用Combiner函数,按分区和key值进行排序后将内容溢写入磁盘。第二个线程监测溢写文件并将其以管道方式发送给Reducer。如果Reducer能够赶上Mapper并且网络不是瓶颈,则溢写文件在产生后马上发送给Reducer。否则溢写文件将逐渐增加,Mapper定期对其应用Combiner函数将多个溢写文件合并成一个单一的大型文件。
3  改进系统的实现
    UC Berkeley的Tyson Condie等人基于MapReduce Online论文实现了Hadoop Online Prototype(HOP)[13]系统,它除了能够实现作业内Mapper到Reducer的管道之外,还利用“快照”技术实现了作业间Reducer到Mapper的管道执行。HOP还支持连续查询,这使得MapReduce程序能够被用于事件监测和流处理的等实时应用。同时,HOP保留了Hadoop的容错特性,并能够运行未修改的用户定义的MapReduce程序。
    HOP实现的数据流与Hadoop系统的对比如下图所示:



    在Hadoop-0.19.2中,org.apache.hadoop.mapred包实现了Hadoop MapReduce思想,HOP增加了org.apache.hadoop.mapred.bufmanager包来管理Map和Reduce任务的输入和输出。其中主要包含的类如下表所示:



    使用HOP系统在伪分布式上能够成功运行MapReduce作业,但是在集群中部署后执行WordCount应用程序时,当Map阶段完成后Reduce阶段完成25%时,作业长时间停滞无法继续执行,显示如下图所示的错误:



    我们参考HOP程序对Hadoop-0.19.2进行修改,并使用Ant编译,成功后执行情况与HOP相同,同样在集群情况下执行MapReduce作业过程中停滞。分析原因,如果HOP系统本身的实现不存在问题,那可能是实验集群的配置或者网络存在问题,但是具体原因一直没有发现并解决。
    基于Hadoop系统优化的测试实验使用HOP系统进行,能够使Map过程和Reduce过程管道执行。根据MapReduce Online论文中所示,作者在Amazon EC2上使用60节点集群执行了性能测试实验,对从维基百科提取的5.5GB数据进行排序,结果如下图所示:



    实验结果显示HOP比Hadoop更有优势,大大减少了作业完成时间,具有更高的系统利用率。
    但是由于在集群中执行HOP出现错误,为了验证其优化效果,使用伪分布式执行WordCount程序,通过与Hadoop系统上执行原始程序进行对比,得到两者的执行时间分别为314秒(HOP)和266秒(Hadoop),两者的Map过程和Reduce过程分别如下图1和下图2所示。通过对比可以发现,HOP系统确实实现了Map过程和Reduce过程的管道执行,但是在作业执行时间上HOP系统更长,这于上图的对比分析图有差异。具体可能由HOP系统实现、集群数量及配置、处理数据量等多方面原因导致。但是HOP这种改进思想还是很值得学习和借鉴。




  • 大小: 124.9 KB
  • 大小: 26.5 KB
  • 大小: 32 KB
  • 大小: 25 KB
  • 大小: 5.7 KB
  • 大小: 5.3 KB
分享到:
评论

相关推荐

    hadoop-mapreduce-examples-2.6.0

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来...HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

    基于Hadoop MapReduce的分布式数据流聚类算法研究.pdf

    #资源达人分享计划#

    基于Hadoop的煤矿数据中心架构设计

    采用Storm实时数据流引擎进行数据实时计算,并应用MapReduce、Spark实现批处理计算和内存计算,解决高频时序数据存储与海量数据计算问题;采用Hadoop分布式文件系统(HDFS)实现文件的可靠存储,并采用HBase分布式...

    (hadoop HDFS 和 Mapreduce 架构浅析

    Hadoop 是一个基于 Java 的分布式密集数据处理 和数据分析的软件框架。Hadoop 在很大程度上是受 Google 在 2004 年白皮书中阐述的 MapReduce 技术的 启发。MapReduce 工作原理是将任务分解为成百上千 个小任务,然后...

    HADOOP课程大纲.pdf

    模块二 Hadoop生态系统介绍和演示 Hadoop HDFS 和 MapReduce Hadoop数据库之HBase Hadoop数据仓库之Hive Hadoop数据处理脚本Pig Hadoop数据接口Sqoop和Flume,Scribe DataX Hadoop工作流引擎 Oozie 运用Hadoop...

    一种基于Hadoop 的云计算平台搭建与性能

    和GFS 分布式存储系统,在海量的非结构化数据的处理方面有着其他平台难以匹敌的优势。 10 本文在介绍了如何使用Hadoop搭建云计算平台的同时介绍了如何对Hadoop的各个参数进行 性能调优,使云计算各方面性能最优化,...

    基于Hadoop大数据平台和无简并高维离散超混沌系统的加密

    算法采用流密码对称加密方式,在Hadoop平台上读取存储于HDFS(Hadoop distributed file system)的大数据,进行分片处理和MapReduce编程后,用Map函数实现数据并行加密和解密,通过Reduce函数实现数据的合并操作并存储于...

    基于Hadoop的并行化协同过滤推荐算法研究.docx

    适用人群:该算法适用于对推荐系统性能有要求的研究者和工程师,以及对大规模数据处理感兴趣的数据科学家。 使用场景及目标:该算法可以应用于各种个性化推荐系统中,包括电子商务、社交媒体、视频流媒体等领域。其...

    hadoop 1.2.1 api 最新chm 伪中文版

    HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。 Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器...

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

    同时,本文基于Mahout技术实现了这两个分类算法在MapReduce框架上的海量数据流的分类计算,极大地提高了异常流量检测的效率。最后通过实验证明,基于分类器联合的分布式异常流量检测算法可以快速有效地对海量网络数据流...

    深入理解hadoop

    第8章~第14章介绍Hadoop生态系统,包括支持MapReduce程序的单元测试和集成测试框架、Hadoop系统的监控和日志系统、Hive框架、Pig和Crunch框架、HCatalog框架、Hadoop日志流处理、HBase等。第15章~第17章介绍了数据...

    Hadoop源码分析HDFS数据流

    hdfs上传文件过程源码分析

    Hadoop下载 hadoop-3.3.3.tar.gz

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 ...

    hamake:基于 Hadoop 数据流的任务管理器

    处理模型可以用数据流编程来表示。 它可以表示为有向图,以数据集为节点。 每条边表示两个或多个数据集之间的依赖关系,并与处理指令(Hadoop MapReduce 作业、PIG Latin 脚本或外部命令)相关联,该指令从其他数据...

    Hadoop实战中文版

    9.7 小结 第10章 用Pig编程 10.1 像Pig 一样思考 10.1.1 数据流语言 10.1.2 数据类型 10.1.3 用户定义函数 10.2 安装Pig 10.3 运行Pig 10.4 通过Grunt 学习Pig Latin 10.5 谈谈Pig Latin 10.5.1 数据类型...

    Hadoop技术在商业智能BI中的应用

    Hadoop是个很流行的分布式计算解决方案,是Apache的一个开源项目名称,核心部分包括HDFS及...Spark是一个类似MapReduce的并行计算框架,也提供了类似的HIVE的Spark SQL查询接口,Hive是基于hadoop的数据分析工具。

    Hadoop权威指南 第二版(中文版)

     数据流  文件读取剖析  文件写入剖析  一致模型  通过 distcp并行拷贝  保持 HDFS 集群的均衡  Hadoop的归档文件  使用Hadoop归档文件  不足 第4章 Hadoop I/O  数据完整性  HDFS的数据完整性  ...

    论文研究-基于MapReduce模型的侵蚀地形因子计算方法研究.pdf

    针对传统侵蚀地形因子提取方法在处理海量数据时出现的瓶颈,提出一种基于MapReduce模型的侵蚀地形因子计算方法。该方法将并行计算模型MapReduce与改进的通用土壤流失方程(revised universal soil loss equation,...

    Hadoop权威指南(中文版)2015上传.rar

    数据流 文件读取剖析 文件写入剖析 一致模型 通过 distcp并行拷贝 保持 HDFS 集群的均衡 Hadoop的归档文件 使用Hadoop归档文件 不足 第4章 Hadoop I/O 数据完整性 HDFS的数据完整性 LocalFileSystem ...

    基于大数据的数据分析系统架构.doc

    (三)Lambda数据分析结构 在大数据分析系统中Lambda架构是比较重要的一种数据分析架构方式,大多数 的架构都是基于这种架构,Lambda架构的数据通道分为两个:实时数据流分析和离线数 据分析,实时数据流的分析架构...

Global site tag (gtag.js) - Google Analytics