Hadoop参数设置中的关系疏理
2016-02-01 17:36
447 查看
I. 核心参数: map reduce.{map|reduce}.memory.mb
1. map reduce.{map|reduce}.memory.mb为Container即Hadoop允许为task分配的内存大小,mapreduce.{map|reduce}.java.opts为node manage为启动task初始化的JVM heap大小, 后者应该小于前者,因为我们还要我Java代码保留内存,一般为其75%
2. mapreduce.{map|reduce}.java.opts与mapreduce.{map|reduce}.child.java.opts为同一个参数,前者是Hadoop 2.x的参数名。其值设置过小则容易造成内存溢出,设置过大则意味着集群负载过大。其参数名对应关系如下:
3. map reduce.{map|reduce}.memory.mb的大小在yarn.scheduler.minimum-allocation-mb与yarn.scheduler.maximum-allocation-mb之间。
单个容器可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值,从这个角度看,最小值有点想操作系统中的页。最小值还有另外一种用途,计算一个节点的最大container数目。
4. yarn.nodemanager.resource.memory-mb为nodemanage节点上可用的最大内存,上述yarn.scheduler.minimum-allocation-mb/yarn.scheduler.maximum-allocation-mb不应该超过此值,该值的默认大小是8G,即使计算机内存不足8G也会按着8G内存来使用。同时此数值用于计算container的数据,即:yarn.nodemanager.resource.memory-mb/yarn.scheduler.minimum-allocation-mb。
5. yarn.nodemanager.vmem-pmem-ratio虚拟内存率,即为task所用内存的倍数。
II.核心参数:mapreduce.map.java.opts
1. mapreduce.task.io.sort.mb应该为mapreduce.map.java.opts/2,同时,mapreduce.reduce.java.opts应该为mapreduce.map.java.opts的2倍。
2. mapreduce.reduce.shuffle.input.buffer.percent控制运行reduce任务的服务器上多少比例的内存用作缓存copy Map产生的属于本reduce处理的那部分数据的Buffer,默认为0.7,mapreduce.reduce.shuffle.parallelcopies控制shuffle过程的并行度,即同时从多少个Map中copy数据。如果这些map同时完成计算并进行copy,则需要满足mapreduce.reduce.shuffle.input.buffer.percent*mapreduce.reduce.shuffle.parallelcopies<1,否则报错。如果这些map不同时完成,超过1没有问题。
III.核心参数:mapreduce.task.io.sort.mb
此参数用于map端排序所用的内存buffer,最小为1M,可以根据实际情况调大,BUG-12005:最大硬性编码不超过2047M。要确定你所用集群所有节点可用内存有你所设置的数目。
mapreduce.task.io.sort.factor为map端merge小文件时,并发有多少stream即同时有多少文件可用于合并,越大则越能减少磁盘IO。排序数据的每个分区大小=io.sort.mb / io.sort.factor,增大此参数可以减少每个分区数据量。如果你发现你的job在map端所用时间多于reduce端,则需要增加map task 的数目并降低此参数设置,降低内存压力。增大此参数配置会增加集群内存压力。
1. map reduce.{map|reduce}.memory.mb为Container即Hadoop允许为task分配的内存大小,mapreduce.{map|reduce}.java.opts为node manage为启动task初始化的JVM heap大小, 后者应该小于前者,因为我们还要我Java代码保留内存,一般为其75%
2. mapreduce.{map|reduce}.java.opts与mapreduce.{map|reduce}.child.java.opts为同一个参数,前者是Hadoop 2.x的参数名。其值设置过小则容易造成内存溢出,设置过大则意味着集群负载过大。其参数名对应关系如下:
Hadoop 0.x, 1.x (deprecated) Hadoop 2.x ------------------------------- -------------------------- mapred.child.java.opts mapred.map.child.java.opts mapreduce.map.java.opts mapred.reduce.child.java.opts mapreduce.reduce.java.opts
3. map reduce.{map|reduce}.memory.mb的大小在yarn.scheduler.minimum-allocation-mb与yarn.scheduler.maximum-allocation-mb之间。
yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocation-mb
单个容器可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值,从这个角度看,最小值有点想操作系统中的页。最小值还有另外一种用途,计算一个节点的最大container数目。
4. yarn.nodemanager.resource.memory-mb为nodemanage节点上可用的最大内存,上述yarn.scheduler.minimum-allocation-mb/yarn.scheduler.maximum-allocation-mb不应该超过此值,该值的默认大小是8G,即使计算机内存不足8G也会按着8G内存来使用。同时此数值用于计算container的数据,即:yarn.nodemanager.resource.memory-mb/yarn.scheduler.minimum-allocation-mb。
5. yarn.nodemanager.vmem-pmem-ratio虚拟内存率,即为task所用内存的倍数。
II.核心参数:mapreduce.map.java.opts
1. mapreduce.task.io.sort.mb应该为mapreduce.map.java.opts/2,同时,mapreduce.reduce.java.opts应该为mapreduce.map.java.opts的2倍。
2. mapreduce.reduce.shuffle.input.buffer.percent控制运行reduce任务的服务器上多少比例的内存用作缓存copy Map产生的属于本reduce处理的那部分数据的Buffer,默认为0.7,mapreduce.reduce.shuffle.parallelcopies控制shuffle过程的并行度,即同时从多少个Map中copy数据。如果这些map同时完成计算并进行copy,则需要满足mapreduce.reduce.shuffle.input.buffer.percent*mapreduce.reduce.shuffle.parallelcopies<1,否则报错。如果这些map不同时完成,超过1没有问题。
III.核心参数:mapreduce.task.io.sort.mb
此参数用于map端排序所用的内存buffer,最小为1M,可以根据实际情况调大,BUG-12005:最大硬性编码不超过2047M。要确定你所用集群所有节点可用内存有你所设置的数目。
mapreduce.task.io.sort.factor为map端merge小文件时,并发有多少stream即同时有多少文件可用于合并,越大则越能减少磁盘IO。排序数据的每个分区大小=io.sort.mb / io.sort.factor,增大此参数可以减少每个分区数据量。如果你发现你的job在map端所用时间多于reduce端,则需要增加map task 的数目并降低此参数设置,降低内存压力。增大此参数配置会增加集群内存压力。
相关文章推荐
- Linux硬盘挂载
- 护士工作站执行签名颜色不同的意思------运维日志18
- docker: 构建openldap镜像(image)
- icare3.0中医生诊间开出检验检查保存提交失败--------运维日志17
- Linux防火墙之具有命令行的FirewallD的基本操作
- 软件架构设计
- Codeforces Round #341 (Div. 2) --B. Wet Shark and Bishops
- 研究源码的网站 -- github
- hadoop hdfs 启动出现dfs/name/in_use.lock (Permission denied)错误,导致NN启动失败
- icare3.0程序中关于诊疗卡号长度的设置-------运维日志16
- opencv(6)
- Hadoop 安装异常处理
- 将3.0程序已三层的模式安装,二层的模式运行-----运维日志15
- Linux Shell脚本教程:30分钟玩转Shell脚本编程(笔记)
- Linux输入输出重定向(编程:实现写入、展示cat和复制cp的功能)
- 架构师发展之路 -- 每日一点点
- xcode7的那些坑-“Your binary is not optimized for iPhone 5” (ITMS-90096) when submitting
- opencv 常见细碎问题解决
- 在OPENSTACK建VM时候,设置采用SSH密码认证登录
- CentOS下UTF8和GBK的互转