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

基于Hadoop配置文件的MapReduce数据流优化

阅读更多
    Hadoop配置文件设定了Hadoop平台运行时各方面属性。大量实验证明,合理的配置会大大提高Hadoop的性能。在Hadoop-0.19.2版本中,Hadoop配置文件在conf目录下,包括文件hadoop-default.xml和hadoop-site.xml,前者做了默认配置,不允许修改,用户需要配置时可以在后者中设置。Hadoop平台启动时首先加载hadoop-site.xml文件来配置系统属性,然后加载hadoop-default.xml文件来配置其它默认属性。属性的结构以及解释如下所示。
<property>
  <name>XXX</name> //XXX代表某属性的名称
  <value>YYY</value> //YYY代表某属性值,修改属性值以达到优化目的
  <description>ZZZ</description> //ZZZ代表某属性的说明
</property>
    Hadoop配置文件分为以下几个大类:包括全局(global)属性、日志(logging)属性、输入/输出(i/o)属性、文件系统(file system)属性、MapReduce(map/reduce)属性、进程通信(ipc)属性,以及作业通知(Job Notification)配置、网页界面(web interface)配置、代理(proxy)配置、机架(Rack)配置。
    在本节主要关注与MapReduce数据流相关的属性,具体包括I/O属性和MapReduce属性这两类。在开始具体介绍配置属性的优化之前,有几个问题需要首先说明:
(1) 部分属性除了配置文件之外还可以在MapReduce作业中动态修改,将其放在下一节介绍。
(2) 在MapReduce执行过程中,特别是Shuffle阶段,尽量使用内存缓冲区存储数据,减少磁盘溢写次数;同时在作业执行过程中增加并行度,都能够显著提高系统性能,这也是配置优化的一个重要依据。
(3) 由于每个Hadoop集群的机器和硬件之间都存在一定差别,所以Hadoop框架应根据其集群特性做配置优化,可能需要经历大量的实验。在此仅提出部分比较重要的可优化属性,以及其优化的依据。
    下面分别介绍I/O属性和MapReduce属性这两个类的部分属性,并指明其优化方向。
1   I/O属性类的优化
I/O属性类主要包括在Shuffle阶段中相关的I/O过程的属性,在分析了每个具体属性后从以下几个属性入手进行优化。
(1) io.sort.factor属性,int类型,Map端和Reduce端使用
该属性设置在Map端和Reduce端都使用到的对文件Sort时一次合并的最大流,其默认值是10,即一次合并10个流。在集群中,将其适当增大能够提高并行度以缩短合并所需时间。将此默认值增加到100是比较常见的。
(2) io.sort.mb属性,int类型,Map端使用
该属性设置对Map输出进行排序时使用的环形内存缓冲区的大小,以M字节为单位,默认是100M。如果允许,应该增加它的值来减少磁盘溢写的次数以提高性能。
(3) io.sort.record.percent属性,float类型,Map端使用
该属性设置保留的io.sort.mb的比例用来存储Map输出的记录边界,剩余的空间用来存储Map输出记录本身,默认是0.05。
(4) io.sort.spill.percent属性,float类型,Map端使用
该属性设置Map输出内存缓冲和边界记录索引两者使用比例的阈值,达到此值后开始溢写磁盘的过程,默认是0.80。
(5) io.file.buffer.size属性,int类型,MapReduce作业使用
该属性设置MapReduce作业的I/O操作中所提供的缓冲区的大小,以字节为单位,默认是4096字节。这是一个比较保守的设置,通过增大它的大小能够减少I/O次数以提高性能。如果系统允许,64KB(65536字节)至128KB(131072字节)是较普遍的选择。
2   MapReduce属性类的优化
    MapReduce属性类主要包括在MapReduce执行过程中相关配置属性,重点从以下的部分属性去分析性能优化。
(1) mapred.reduce.parallel.copies属性,int类型,Reduce端使用
该属性设置将Map输出复制到Reduce的线程的数量,默认为5。根据需要可以将其增大到20-50,增加了Reduce端复制过程的并行数,提高了系统性能。
(2) mapred.child.java.opts属性,String类型,Map和Reduce任务虚拟机使用
该属性设置Map和Reduce任务运行时Java虚拟机指定的内存的大小,默认-Xmx200m,分配给每个任务200MB内存。只要条件允许,应该让任务节点上的内存大小尽量大,可以将其增大到-Xmx512m,即512MB,以提高MapReduce作业的性能。
(3) mapred.job.shuffle.input.buffer.percent属性,float类型,Reduce端使用
该属性设置整个堆空间的百分比,用于Shuffle的复制阶段分配给Map输出缓存,默认是0.70,适当增大比例可以使Map输出不被溢写到磁盘,能够提高系统性能。
(4) mapred.job.shuffle.merge.percent属性,float类型,Reduce端使用
该属性设置Map输出缓存中使用比例的阈值,用于启动合并输出和磁盘溢写的过程,默认是0.66。如果允许,适当增大其比例能够减少磁盘溢写次数,提高系统性能。
(5) mapred.inmem.merge.threshold属性,int类型,Reduce端使用
该属性设置启动合并输出和磁盘溢写过程的最大Map输出数量,默认为1000。由于Reduce端复制的中间值能够全部存在内存中可以获得最佳性能。如果Reduce函数内存需求很少,可以将该属性设置为0,即没有阈值限制,由mapred.job.shuffle.merge.percent属性单独控制溢写过程。
(6) mapred.job.reduce.input.buffer.percent属性,float类型,Reduce端使用
该属性设置在Reduce过程中用来在内存中保存Map输出的空间占整个堆空间的比例。Reduce阶段开始时,内存中的Map输出大小不能大于这个值。默认为0.0,说明在Reduce开始前所有的Map输出都合并到硬盘中以便为Reduce提供尽可能多的内存。然而如果Reduce函数内存需求较小,可以将该值设置为1.0来提升性能。
(7) tasktracker.http.threads属性,int类型,Map端使用
该属性设置集群中每个tasktracker用于将map输出传给reducer的工作线程的数量,默认是40。可以将其提高至40-50之间,能够增加并线线程数,提高集群性能。
分享到:
评论

相关推荐

    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权威指南 第二版(中文版)

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

    hadoop 1.2.1 api 最新chm 伪中文版

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

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

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

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    04-hadoop-HA机制的配置文件.avi 05-hadoop分布式集群HA模式部署.avi 06-hdfs--HA测试.avi 07-hdfs--动态增加节点和副本数量管理.avi 08-HA的java api访问要点.avi 09-hive入门.avi 第六天 hbase hive 01-...

    Hadoop实战(第2版)

    技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出Hadoop 2.3.1 将数据导入本地文件系统技术点8 自动复制HDFS 中的文件...

    Hadoop实战中文版.PDF

    1759.6 Amazon Elastic MapReduce和其他AWS服务 1769.6.1 Amazon Elastic MapReduce 1769.6.2 AWS导入/导出 1779.7 小结 177第10章 用Pig编程 17810.1 像Pig一样思考 17810.1.1 数据流语言 ...

    Hadoop实战(陆嘉恒)译

    用Pig编程10.1 像Pig 一样思考10.1.1 数据流语言10.1.2 数据类型10.1.3 用户定义函数10.2 安装Pig10.3 运行Pig10.4 通过Grunt 学习Pig Latin10.5 谈谈Pig Latin10.5.1 数据类型和schema10.5.2 表达式和函数10.5.3 ...

    大数据与Hadoop.doc

    2.1 Hadoop的核心模块 Hadoop Common:Hadoop的公用应用模块,是整个Hadoop项目的核心,为Hadoop各子项目提供各 种工具,如配置文件和日志操作等,其他Hadoop子项目都是在此基础上发展起来的。 Hadoop Distributed ...

    Hadoop实战

    1779.7 小结 177第10章 用Pig编程 17810.1 像Pig一样思考 17810.1.1 数据流语言 17910.1.2 数据类型 17910.1.3 用户定义函数 17910.2 安装Pig 17910.3 运行Pig 18010.4 通过Grunt学习Pig Latin 18210.5 谈谈Pig ...

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

    3 数据序列化――处理文本文件及其他格式的文件 3.1 了解MapReduce 中的输入和输出 3.1.1 数据输入 3.1.2 数据输出 3.2 处理常见的序列化格式 3.2.1 XML . 技术点12 MapReduce 和XML 3.2.2 JSON...

    project-rhino:增强了针对Apache Hadoop生态系统的数据保护

    HDFS:Hadoop文件系统 MapReduce:并行计算框架 ZooKeeper:配置管理和协调 HBase:HDFS上的面向列的数据库 蜂巢:HDFS上的数据仓库具有类似SQL的访问权限 Pig:用于Hadoop计算的高级编程语言 Oozie:编排和工作流...

    mongo-hadoop:适用于HadoopMongoDB连接器

    用于HadoopMongoDB连接器是一个库,该库允许将MongoDB(或数据格式为BSON的备份文件)用作Hadoop MapReduce任务的输入源或输出目标。 它旨在提供更大的灵活性和性能,并使MongoDB中的数据与Hadoop生态系统的其他部分...

    point-of-sales-proof-of-concept:使用 Hadoop MapReduce、Hive 和 Luigi 处理事务日志的概念证明

    ======== 销售点概念验证使用 Hadoop MapReduce、Hive 和 Luigi 处理事务日志的概念证明。 'pos' 包包含处理销售点交易日志的所有代码。 计算每个用户最受欢迎的产品类别,以及每个用户每季度的收入。 preprocessing...

    大数据开发技术.pdf

    hadoop 安装包下载 2、hadoop 安装包解压 3、hadoop 伪分布式 环境搭建环境搭建步骤如下:1、将 hadoop 安装目录添加到系统环 境变量(~/.bash_profile)2、配置 hadoop 环境的配置文件 hadoop-env.sh3、配置 ...

    SCTools:Hadoop 工具包,用于处理各种文本挖掘任务的 StreamCorpus 数据集

    SCTools 是一小组工具,用于在 Hadoop MapReduce 环境中预处理。 当前任务包括(仍在更新中): ========== 梗索引: 使用 Terrier 在 Hadoop 模式下索引 TREC StreamCorpus 该软件包括一个 Terrier 补丁,以支持...

    农业大数据技术.pptx

    数 据 层 结构化业务数据、机器数据 半结构化数据、机器数据 序列化 算法库 机器学习 Storm内存 流式计算框架 Hadoop MapReduce 计算框架 Spark 并行计算框架 计 算 层 运营 分析 日志 分析 个性化 推荐 供应链 分析...

    AWS_STREAM_FIREHOSE_GLUE:通过结合AWS提供的服务,从流应用程序到etl流程的总体数据摄取最终确定目标位置

    AWS_STREAM_FIREHOSE_GLUE ... 创建一个EMR集群,将数据加载到其中,然后编写Hadoop作业(MapReduce,Spark等,选择您喜欢的任何人)来计算跨信号组的组织数。 将结果保存到DynamoDB表中。解决方案此存储库中有3个文件

    FocusBigData:【大数据成神之路学习路径+面经+简历】

    FocusBigData :elephant:Hadoop分布存储框架 Hadoop篇 HDFS篇 ...MapReduce之InputFormat数据输入 MapReduce之OutputFormat数据输出 MapReduce之Shuffle机制 MapReduce之MapJoin和ReduceJoin MapReduce之

Global site tag (gtag.js) - Google Analytics