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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�