split和block的区别以及maptask和reducetask个数设定

来源:互联网 发布:经纬度转换成坐标软件 编辑:程序博客网 时间:2024/05/17 12:49

转:http://blog.csdn.net/qq_20641565/article/details/53457622

  • split和block的区别:

很多人可能认为在Hadoop中的split和block是一样的,可能是因为hadoop在默认情况下split的大小和hdfs文件分块大小是一样而被误导吧。

下面来谈谈他们的区别和联系:
1.split是mapreduce中的概念,而block是hdfs中切块的大小。

2.split的大小时默认和hdfs的block块大小一致,但是可以通过配置文件自己设置:
其中有俩个配置文件(如下):

--minsize   默认大小为1mapreduce.input.fileinputformat.split.minsize  --maxsize   默认大小为Long.MAXValue mapreduce.input.fileinputformat.split.maxsize

在mapreduce的FileInputFormat类中有个getSplits() 方法对文件进行split,算法如下:

Math.max(minSize, Math.min(maxSize, blockSize));

1.如果blockSize小于maxSize && blockSize 大于 minSize之间,那么split就是blockSize;

2.如果blockSize小于maxSize && blockSize 小于 minSize之间,那么split就是minSize;

3.如果blockSize大于maxSize && blockSize 大于 minSize之间,那么split就是maxSize;


maptask和reducetask个数设定:

  • 列表内容

1.在hadoop中一个split对应一个maptask,需要改变maptask的个数就需要改变上面所描述的配置。

2.而reducetask的个数可以又自己设定

job.setNumReduceTasks(10);

0 0
原创粉丝点击