`
samuschen
  • 浏览: 398490 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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 ...

    18_尚硅谷大数据之MapReduce_Hadoop数据压缩1

    4.1 概述 4.2 MR 支持的压缩编码 4.3 压缩方式选择 4.4 压缩位置选择 4.5 压缩参数配置 4.6 压缩实操案例 4.6.1 数据流的压缩和解

    Hadoop实战(第2版)

    技术点41 内存交换技术点42 磁盘健康技术点43 网络6.3 可视化技术点44 提取并可视化任务执行时间6.4 优化 .6.4.1 剖析MapReduce 的用户代码 技术点45 剖析map 和reduce 任务 6.4.2 参数配置6.4.3...

    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实战

    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 )

    6.4.2 参数配置 6.4.3 优化 shuffle 和 sort 阶段 技术点46 避免reducer 技术点47 过滤和投影 技术点48 使用 combiner 技术点49 超炫的使用比较器的快速排序 6.4.4 减轻倾斜 技术点50 收集倾斜数据 ...

    大数据技术概述.pdf

    Pig数据流处 理,数据清洗转换。Mahout数据挖掘的算法库,实现常⽤数据挖掘算法(分类、聚类、回归等),调⽤接⼝,传⼊参数,减少⼯作量,针 对海量数据进⾏数据挖掘分析。Ambari⾃动化的安装部署配置管理Hadoop...

    大数据场景化解决方案.pdf

    离线批处理 实时检索 实时流处理 融合数仓 3.1 离线批处理 离线批处理,是指对海量历史数据进处理和分析,⽣成结果数据,供下⼀步数据应⽤使⽤的过程。离线批处理对数据处理的时延要求不 ⾼,但是处理的数据量较⼤...

Global site tag (gtag.js) - Google Analytics