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

2024-08-27 11:18

本文主要是介绍hadoop 2.2.X 配置参数说明:mapred-site.xml,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:http://michaelkang.blog.51cto.com/1553154/1382816

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


这篇关于hadoop 2.2.X 配置参数说明:mapred-site.xml的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111516

相关文章

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过