fs.datanode.handler.count
datanode上用于处理RPC的线程数。默认为3,较大集群,可适当调大些,比如8。需要注意的是,每添加一个线程,需要的内存增加。
tasktracker.http.threads
HTTP server上的线程数。运行在每个TaskTracker上,用于处理map
task输出。大集群,可以将其设为40~50。
dfs.replication
文件副本数,通常设为3,不推荐修改
dfs.block.size
HDFS中数据block大小,默认为64M,我们是128MB
mapred.local.dir
运行 mapreduce 中间结果存储处
dfs.data.dir
HDFS Block 存储空间
数据 使用 压缩 - LZO (使用更多 map)
FileInputFormat.setMaxInputSplitSize(job, 64 *1024 * 1024);
{map/reduce}.tasks.maximum
同时运行在TaskTracker上的最大map/reduce task数,
io.sort.factor
当一个map task执行完之后,本地磁盘上(mapred.local.dir)有若干个spill文件,merge sort
把这些文件合成一个。执行merge sort的时候,每次同时打开多少个spill文件由该参数决定。打开的文件越多,不一定merge
sort就越快,所以要根据数据情况适当的调整。
mapred.child.java.opts
设置JVM堆的最大可用内存,需从应用程序角度进行配置。
io.sort.mb
Map task的输出结果在内存中所占的buffer总大小。
mapred.compress.map.output/
Mapred.output.compress
中间结果和最终结果是否要进行压缩,如果是,指定压缩方式(Mapred.compress.map.output.codec/
Mapred.output.compress.codec)。推荐使用LZO压缩。Intel内部测试表明,相比未压缩,使用LZO压缩的
TeraSort作业运行时间减少60%,且明显快于Zlib压缩。
reduce task相关配置
Reduce
shuffle阶段copier线程数。默认是5,对于较大集群,可调整为16~25。