文章取自《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》
Map Task可调整参数
参数名称 | 参数含义 | 默认值 |
---|
io.sort.mb | Map Task缓冲区所占内存大小 | 100MB |
io.sort.record.percent | 缓冲kvoffsets和kvindices共占io.sort.mb的内存比例 | 0.05 |
io.sort.spill.percent | 缓冲区kvoffsets或者kvoffsets内存使用率达到该比例后,会触发溢写操作,将内存中的数据写成一个文件 | 0.80 |
mapred.compress.map.output | 是否压缩Map Task中间结果 | true |
mapred.map.output.compression.codec | 如果支持压缩Map Task中间结果,则采用什么压缩器 | org.apache.hadoop.io.compress.zlib |
Reduce Task可调整参数
参数名称 | 参数含义 | 默认值 |
---|
mapred.reduce.parallel.copies | Reduce Task同时启动的数据拷贝线程数目 | 5 |
mapred.job.reduce.input.buffer.percent | Hadoop假设用户的reduce()函数需要所有的JVM内存,因此执行reduce()函数前要释放所有内存。如果设置了该值,可将部分文件保存在内存中(不必写到磁盘上) | 0 |
mapred.job.shuffle.input.buffer.percent | ShuffleRamManager管理的内存占JVM Heap Max Size的比例 | 0.70 |
mapred.job.shuffle.merge.percent | 当内存使用率超过该值后,会触发一次合并,将内存中的数据写到磁盘上 | 0.66 |
mapred.inmem.merge.threshold | 当内存中的文件数量超过该阈值时,会触发一次合并,将内存中的数据写到磁盘上 | 1000 |
io.sort.factor | 文件合并时,一次合并的文件数目(合并后,将合并后的文件放到磁盘上继续合并,注意,每次合并时,选择最小的前io.sort.factor进行合并) | 10或100 |
tasktracker.http.threads | HTTP Server上的线程数。该Server运行在每个Task Tracker上,用于处理Map Task输出 | 40 |