集群的优化
1、合理分配 map 和 reduce 任务的数量(单个节点上 map 任务、reduce 任务的最大数
量)
2、其他配置
io.le.buer.size
hadoop 访问文件的 IO 操作都需要通过代码库。因此,在很多情况下,
io.le.buer.size 都被用来设置缓存的大小不论是对硬盘或者是网络操作来讲,较大的
缓存都可以提供更高的数据传输,但这也就意味着更大的内存消耗和延迟
这个参数要设置为系统页面大小的倍数,以 byte 为单位,默认值是 4KB,一般情况下,
可以设置为 64KB(65536byte)
dfs.balance.bandwidthPerSec
HDFS 平衡器检测集群中使用过度或者使用不足的 DataNode,并在这些 DataNode 之
间移动数据块来保证负载均衡,如果不对平衡操作进行带宽限制,那么它会很快就会抢占
所有的网络资源,不会为 Mapreduce 作业或者数据输入预留资源
参数 dfs.balance.bandwidthPerSec 定义了每个 DataNode 平衡操作所允许的最大使
用带宽,这个值的单位是 byte,这是很不直观的,因为网络带宽一般都是用 bit 来描述的。
因此,在设置的时候,要先计算好。DataNode 使用这个参数来控制网络带宽的使用,但
不幸的是,这个参数在守护进程启动的时候就读入,导致管理员没办法在平衡运行时来修
改这个值
dfs.block.size****默认 128M
dfs.block.size 的单位是 byte,默认值是 67108864*(64MB)。对于很多情况来说,
134217728*(128MB)更加合适
对于一个 Mapreduce 作业(尤其是用子类 FileInputFormat 定义输入格式的作业),
对文件的每个数据块会启用一个 map 任务来处理
这就意味这数据块的大小显著地影响 Mapreduce 作业的效率
dfs.datanode.du.reserved 保留空间ÈÈ用于 mapreduce 使用È默认为 0
当 DataNode 向 NameNode 汇报可用的硬盘大小的时候,它会把所有 dfs.data.dir 所
列出的可用的硬盘大小总和发给 NameNode
由于 mapred.local.dir 经常会跟 DataNode 共享可用的硬盘资源,因为我们需要为
Mapreduce 任务保留一些硬盘资源。dfs.datanode.du.reserved
定义了每个 dfs.data.dir 所定义的硬盘空间需要保留的大小,以 byte 为单位。默认情况
下,该值为 0.也就意味着 HDFS 可以使用每个数据硬盘的所有空间
节点硬盘资源耗尽时就会进入读模式。因此,建议每个硬盘都为 map 任务保留最少
10GB 的空间,如果每个 Mapreduce 作业都会产生大量的中间结果