hadoop 2.2.X 配置参数说明:mapred-site.xml

<!--Thu Aug 15 20:47:13 2013-->

 <configuration>

   <property>

   <name>mapreduce.task.timeout</name>

   <value>600000</value>

 </property>

   <property>

   <name>mapreduce.cluster.local.dir</name>

   <value>/hadoop/mapred</value>

<!-- 这两个参数决定把 Hadoop 中的数据放在什么地方,mapred.local.dir 决定存储 MapReduce 中间数据

( map 输出数据)的位置,dfs.data.dir 决定存储 HDFS 数据的位置。 -->

 </property>

   <property>

   <name>mapreduce.reduce.input.buffer.percent</name>

   <value>0.0</value>

<!-- 默认值是: 0;

说明:这个参数设置用于在 reduce 阶段保存 map 输出的内存的百分比(相对于最大堆大小),当 shuffle 结束时,内存中剩余的 map 输出必须少于这个阈值,然后 reduce 阶段才能够开始。

这个值越大,磁盘上的合并就越少,因此会减少 reduce 阶段本地磁盘上的 I/O 时间。如果 map 输出很大而且在 reduce 到排序阶段本地磁盘 I/O 很频繁,应该尝试增加这个值。

注意,如果给每个任务分配的内存不够大,增加这个值可能会导致更多垃圾收集活动。-->

 </property>

   <property>

   <name>mapreduce.jobhistory.address</name>

   <value>hadoop01:10020</value>

<!-- jobhistory web UI-->

 </property>

   <property>

   <name>mapreduce.cluster.reducememory.mb</name>

   <value>2048</value>

<!--每个reduce slot预留的内存-->

 </property>

 <property>

   <name>mapred.cluster.max.reduce.memory.mb</name>

   <value>4096</value>

<!-- 每个reduce task使用的内存上限-->

 </property>

 <property>

   <name>mapred.cluster.max.map.memory.mb</name>

   <value>6144</value>

<!--每个map task使用的内存上限-->

 </property>

 <property>

   <name>mapred.cluster.map.memory.mb</name>

   <value>1536</value>

<!-- 新版本使用参数,每个map slot预留的内存-->

 </property>

 <property>

   <name>mapreduce.map.memory.mb</name>

   <value>1536</value>

  <!--map/reduce阶段申请的container的内存的大小-->

 </property>

 <property>

   <name>mapreduce.reduce.memory.mb</name>

   <value>2048</value>

<!--每个Reduce Task需要的内存量 -->

 </property>

   <property>

   <name>mapred.child.java.opts</name>

   <value>-Xmx1024m</value>

<!-- 默认值是 -Xmx200m,说明:与内存相关的参数,同时这是这个参数用于 JVM 调优的主要参数。这给每个子任务线程分配最多 200 MB 内存。

如果作业很大,可以增加这个值,但是应该确保这不会造成交换,交换会严重降低性能。我们来研究一下这个参数如何影响总内存使用量。

假设 map/reduce 任务的最大数量设置为 7,mapred.child.java.opts 保持默认值。那么,正在运行的任务的内存开销为 2x7x200 MB =2800 MB。

如果每个工作者节点都有 DN 和 TT 守护进程,每个守护进程在默认情况下占用 1 GB 内存,那么分配的总内存大约为 4.8 GB。

   在 mapred-site.xml 中设置此参数。jvms启动的子线程可以使用的最大内存。改为-Xmx1024m,内存再大也可以继续增加。

   但是如果一般任务文件小,逻辑不复杂用不了那么多的话太大也浪费。 -->

 </property>

   <property>

   <name>mapreduce.tasktracker.healthchecker.script.path</name>

   <value>file:mapred/jobstatus</value>

 </property>

   <property>

   <name>yarn.app.mapreduce.am.staging-dir</name>

   <value>/user</value>

 </property>

   <property>

   <name>mapred.task.tracker.task-controller</name>

   <value>org.apache.hadoop.mapred.DefaultTaskController</value>

<!--任务管理器的设定-->

 </property>

   <property>

   <name>mapreduce.jobhistory.intermediate-done-dir</name>

   <value>/mr-history/tmp</value>

 </property>

   <property>

   <name>mapreduce.map.sort.spill.percent</name>

   <value>0.1</value>

<!-- 这个值就是上述buffer的阈值,默认是0.8,即80%,

当buffer中的数据达到这个阈值,后台线程会起来对buffer中已有的数据进行排序,然后写入磁盘。-->

 </property>

   <property>

   <name>mapreduce.jobhistory.done-dir</name>

   <value>/mr-history/done</value>

 </property>

   <property>

   <name>mapreduce.jobhistory.webapp.address</name>

   <value>hadoop01:19888</value>

<!--jobhistory 节点服务器端口-->

 </property>

   <property>

   <name>mapreduce.map.speculative</name>

   <value>false</value>

<!-- 默认值: TRUE,map任务的多个实例可以并行执行 -->

 </property>

   <property>

   <name>mapreduce.output.fileoutputformat.compress.type</name>

   <value>BLOCK</value>

<!-- 默认值:false 这些参数控制是否对输出进行压缩,磁盘 I/O 相关的参数

说明:mapreduce.output.fileoutputformat.compress.type 用于 map 输出压缩;-->

 </property>

 <property>

   <name>mapreduce.map.output.compress</name>

   <value>FALSE</value>

<!--20140312 add  用于作业输出压缩; -->

 </property>

   <property>

   <name>mapreduce.output.fileoutputformat.compress.codec</name>

   <value>org.apache.hadoop.io.compress.DefaultCodec</value>

<!-- 20140312 add 用于压缩代码;-->

<!-- 启用输出压缩可以加快磁盘(本地/Hadoop Distributed File System (HDFS))写操作,减少数据传输的总时间(在 shuffle 和 HDFS 写阶段),但是在另一方面压缩/解压过程会增加开销。

   经验:启用压缩对于使用随机键/值的操作序列是无效的。建议只在处理大量有组织的数据(尤其是自然语言数据)时启用压缩。中间结果和最终结果是否要进行压缩,

如果是,指定压缩方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。推荐使用LZO压缩。Intel内部测试表明,相比未压缩,使用LZO压缩的TeraSort作业运行时间减少60%,且明显快于Zlib压缩。-->

 </property>

   <property>

   <name>mapreduce.task.io.sort.mb</name>

   <value>200</value>

<!-- 默认值:100M 说明:这个参数设置用于 map 端排序的缓冲区大小,单位是 MB,默认值是 100。

这个值越大,溢出到磁盘就越少,因此会减少 map 端的 I/O 时间。注意,增加这个值会导致每个 map 任务需要的内存增加。

根据**经验,在 map 输出很大而且 map 端 I/O 很频繁的情况下,应该尝试增加这个值。Map task的输出结果和元数据在内存中所占的buffer总大小。对于大集群,可设为200M。

当buffer达到一定阈值,会启动一个后台线程来对buffer的内容进行排序,然后写入本地磁盘(一个spill文件)。-->

 </property>

   <property>

   <name>mapreduce.reduce.merge.inmem.threshold</name>

   <value>1000</value>

<!--内存中的合并文件数设置-->

 </property>

   <property>

   <name>mapreduce.shuffle.port</name>

   <value>8081</value>

 </property>

   <property>

   <name>mapred.jobtracker.taskScheduler</name>

   <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value>

<!-- 设定任务的执行计划实现类 -->

 </property>

   <property>

   <name>mapreduce.task.io.sort.factor</name>

   <value>100</value>

<!-- 默认值:10 说明:当一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,map task最后做的一件事就是执行merge sort,把这些spill文件合成一个文件(partition)。

执行merge sort的时候,每次同时打开多少个spill文件由该参数决定。打开的文件越多,不一定merge sort就越快,所以要根据数据情况适当的调整。

   这个参数设置在 map/reduce 任务中同时合并的输入流(文件)数量。这个值越大,溢出到磁盘就越少,因此会减少 map/reduce 的 I/O 时间。

   注意,如果给每个任务分配的内存不够大,增加这个值可能会导致更多垃圾收集活动。

   根据**经验,如果出现大量溢出到磁盘,而且排序和 shuffle 阶段的 I/O 时间很高,就应该尝试增加这个值。 -->

 </property>

   <property>

   <name>mapreduce.jobtracker.system.dir</name>

   <value>/mapred/system</value>

 </property>

   <property>

   <name>mapreduce.jobtracker.tasktracker.maxblacklists</name>

   <value>16</value>

<!--如果tasktrack上有超过4次失败(mapreduce.job.maxtaskfailures.per.tracker 默认值:3次),jobtracker将会把当前 tasktracker加入黑名单,

不会再分配任务。在这之前分配的工作任务可以继续使用,被加入黑名单的节点,重启后可以重新加入集群。-->

 </property>

   <property>

   <name>mapreduce.reduce.shuffle.input.buffer.percent</name>

   <value>0.7</value>

<!-- shuffle 阶段内存使用的最大值,默认为0.7-->

 </property>

 <property>

   <name>mapreduce.job.maps</name>

   <value>6</value>

<!-- 每个Job的Map个数,默认为2,调整为6 -->

 </property>

 <property>

   <name>mapreduce.job.reduces</name>

   <value>3</value>

<!-- 每个Job的Reduce个数,默认为1,调整为3 -->

 </property>

   <property>

   <name>mapreduce.reduce.shuffle.merge.percent</name>

   <value>0.66</value>

<!--默认值: 0.66 说明:reduce归并接收map的输出数据可占用的内存配置百分比。类似mapreduce.reduce.shuffle.input.buffer.percen属性。 -->

 </property>

   <property>

   <name>mapred.jobtracker.maxtasks.per.job</name>

   <value>-1</value>

<!-- 一单独作业的最大任务数,-1为不限制-->

 </property>

   <property>

   <name>mapreduce.job.reduce.slowstart.completedmaps</name>

   <value>0.05</value>

<!-- 在maptask完成了一定百分比后将触发fetch,默认为0.05-->

 </property>

   <property>

   <name>mapreduce.tasktracker.healthchecker.script.timeout</name>

   <value>60000</value>

<!--mapreduce健康检查超时时间 -->

 </property>

   <property>

   <name>mapreduce.reduce.input.limit</name>

   <value>10737418240</value>

<!-- Reduce输入量的限制,-1是不限制。-->

 </property>

   <property>

   <name>mapreduce.reduce.shuffle.parallelcopies</name>

   <value>30</value>

<!-- 默认值是 5:这个参数决定把 map 输出复制到 reduce 所使用的线程数量。

增加这个值可以提高网络传输速度,加快复制 map 输出的过程,但是也会增加 CPU 使用量。

   根据**经验,增加这个值的效果不太明显,建议只在 map 输出非常大的情况下增加这个值。

   Reduce shuffle阶段copier线程数。默认是5,对于较大集群,可调整为16~25。 -->

 </property>

 <property>

   <name>mapreduce.tasktracker.reduce.tasks.maximum</name>

   <value>4</value>

<!-- 默认值是 2:与 CPU 相关的参数:说明:决定由任务跟踪器同时运行的 map/reduce 任务的最大数量。

这两个参数与 CPU 利用率最相关。这两个参数的默认值都是 2。根据集群的具体情况适当地增加它们的值,这会提高 CPU 利用率,由此提高性能。

例如,假设集群中的每个节点有 4 个 CPU,支持并发多线程,每个 CPU 有两个核;那么守护进程的总数不应该超过 4x2x2=16 个。

考虑到 DN 和 TT 要占用两个,map/reduce 任务最多可以占用 14 个,所以这两个参数最合适的值是 7。 -->

 </property>

 <property>

   <name>mapreduce.tasktracker.map.tasks.maximum</name>

   <value>4</value>

<!-- 默认值是 2:原理同 mapreduce.tasktracker.reduce.tasks.maximum -->

 </property>

   <property>

   <name>mapreduce.reduce.speculative</name>

   <value>false</value>

<!--是否对Reduce Task启用推测执行机制-->

 </property>

   <property>

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

<!-- 新框架支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,注意通常情况下这个配置的值都设置为 Yarn,

如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,而不是分布式模式-->

 </property>

   <property>

   <name>mapred.userlog.retain.hours</name>

   <value>24</value>

<!--作业完成后的用户日志留存时间为24小时-->

 </property>

 <property>

<name>mapreduce.admin.map.child.java.opts</name>

<value>-server -XX:NewRatio=8 -Djava.library.path=/usr/lib/hadoop/lib/native/ -Djava.net.preferIPv4Stack=true</value>

<final>true</final>

<!--管理员设定的map/reduce阶段申请的container的默认JVM启动参数。启动container的命令行会先连接管理员设定参数,然后再连接用户设定参数。-->

</property>

 <property>

<name>mapreduce.admin.reduce.child.java.opts</name>

<value>-server -XX:NewRatio=8 -Djava.library.path=/usr/lib/hadoop/lib/native/ -Djava.net.preferIPv4Stack=true</value>

<final>true</final>

<!--管理员设定的map/reduce阶段申请的container的默认JVM启动参数。启动container的命令行会先连接管理员设定参数,然后再连接用户设定参数。-->

 </property>

 <property>

<name>io.compression.codecs</name>    

<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>

<!--压缩和解压的方式设置-->

 </property>

 </configuration>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值