设为首页 加入收藏

TOP

Hadoop参数设置的关系疏理(2)
2019-05-12 12:32:59 】 浏览:115
Tags:Hadoop 参数 设置 关系 疏理

I. blocksize

此参数是不是设置越大越好,比如1GB,是否使得MR变得更快呢?越大的block size,container比之default更少的向RM申请资源由此降低延迟。但是,这样的设置带来多方面的影响,首先一个文件将由更少的块组成,这势必造成不与Namenode通讯的条件下R/W更多的数据并减少NN的元数据大小、降低NN负载。更少的block也意味着文件存储到更少的节点上,这将减少并行访问的吞吐,使得MR scheduler更难调度起数据本地的task。

当你用这样的文件作为MR的输入且并不限制最大split大小小于此block size,则将减少task数目从而降低消耗,但更少、更大的task也意味着你不能获得最大的并行,增加计算拖延的几率,而且一旦任务失败,更多的工作需要重做。增加每个task处理的数据量也会造成额外的R/W操作,比如,一个map由仅一个spill转变为多个spill,因此最后需要merge操作。

一般来说,它依赖于input data,如果你想获得一个大输入文件的最大吞吐,设置为较大的block size(128/256MB)最好。对于小文件利用更小的block size更好,你可以通过改变dfs.block.size参数值来为同一个文件系统不同文件的写入设置不同的block size,比如上传文件用如下命令:

hdfs dfs -put localpath dfspath -D dfs.block.size=xxxxxxx

2. mapred.max.split.size

改变split size,如果默认的64 MB使得Job执行很慢,要改为1MB,如何操作?

通过改变io.file.buffer.size来改变吗?行不通,我们可以直接设置mapred.max.split.size,产生的split为一个或部分输入文件,也可以为每个Job单独设置,操作如下:

-D mapred.max.split.size=..
split size的最终结果由如下公式决定:

max(minimumSize, min(maximumSize, blockSize))
一般来说,minimumSize < blockSize < maximumSize
所以,split size就是blocksize。

3.io.file.buffer.size

有人发现集群中hadoop IO的chunk大小一般为4k、64K。而默认值只有4K,它被用于设置输出文件buffer的大小。BlockSender用此参数设置transfer buffer大小,默认值为64K。为了获得更好的性能,应该调整为一个较大的值,比如16MB,上限为MAX_PACKET_SIZE。




】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇插入排序之直接插入排序(Java篇) 下一篇安装eclipse maven插件m2eclipse

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目