mapreduce配置调优

默认情况下,hadoop为各个守护进程分配1000M(1G)内存,该值在文件hadoop-env.sh的HADOOP_HEAPSIZE属性控制,tasktracker启动子JVM运行map和reduce任务也需要内存。
按照默认配置,一个tasktracker可运行2个map(mapred.tasktracker.map.tasks.maximum)和2个reduce (mapred.tasktracker.reduce.tasks.maximum) ,分配给每个子jvm的大小为-Xmx200M(mapred.child.java.opts),所以机器占用总内存大小为:1000M的datanode+1000M的tasktrack+(map任务2*200)+(reduce任务2*200)=2800

namenode默认内存大小为2000M(HADOOP_NAMENODE_OPTS),辅助namenode的内存需求量和主namenode差不多,不过辅助namenode大对数情况下是空闲的,在合并时瞬间内存需求量较大。

实际配置中,根据机器配置情况,修改配置参数。
比如,配备8核处理器时,并计划在各个处理器上分别跑2个进程,可将 mapred.tasktracker.map.tasks.maximum和 mapred.tasktracker.reduce.tasks.maximum分别设为7,每个子JVM的内存量 mapred.child.java.opts提提高至400M。

部分参数优化列表:
属性名称
类型
默认值
说明
所属文件
io.file.buffer.size
B
4kb
辅助I/O操作的缓冲区,实际使用可提高该值,比如128Kb(131072)

dfs.block.size
b
64MB
HDFS的块大小,实际可提供该值,以降低namenode压力,并向mapper传更多数据

io.sort.mb
int
100M
map输出时缓冲区的大小,实际应用中可根据情况尽可能提高该值

io.sort.record.percent
float
0.05
map输出时缓存边界的io.sort.mb的比例

io.sort.spill.percent
float
0.80
map输出时缓冲区的阀值,如果超过这个阀值,缓冲区内容被spill到磁盘

io.sort.factor
int
10
map溢出文件排序时,一次最多合并的流数,这个属性也在reduce中使用,将此值增加到100很常见。

mapred.compress.map.output
BooLean
false
压缩map输出
使用压缩可提供磁盘写的速度,节约磁盘空间,减少传给reducer的数据量





mapred.map.output.compression.codec
Class name
org.apache.hadoop.io.compress.DefaultCodec
用于压缩的编码器

tasktracker.http.threads
int
40
通过http方式传送给reducer的文件分区的工作线程数,此设置针对tasktracker,而非map的任务槽
在大型集群上,可根据需要增加

mapred.reduce.parallel.copies
int
5
用于把map输出并行复制到reducer的线程数

mapred.job.shuffle.input.buffer.percent
float
0.70
在shuffle的复制阶段,被复制到reducer的缓冲区大小,如果map输出较小,则会直接复制到缓冲区

  
加入和移除节点     
dfs.hosts 记录即将作为datanode加入集群的机器列表
mapred.hosts 记录即将作为tasktrack加入集群的机器列表
dfs.hosts.exclude 待移除机器列表
mapred.hosts.exclude 待移除机器列表

JVM重用
通过属性mapred.job.reuse.jvm.num.tasks配置,表示可重用的最多数,默认是1,当设置为-1时,表示无限制。
JobConf的setNumTasksToExecutePerJvm()方法也可以设置。

dfs.name.dir,可以指定一个或多个目录,在各个目录中均存放。
dfs.data.dir,也可以指定多个挂载盘作为目录,可循环的在各个目录中写数据,属于块存放于某一个目录里

回收站
fs.trash.interval,回收站中保留的时间,以分钟为单位,0表示回收站特性无效

账号及权限
赋予用户权限,并限定目录可用容量
hadoop fs -chown username:username /user/username
hadoop dfsadmin -setSpaceQuota 1t /user/username

你可能感兴趣的:(mapreduce,hadoop)