Hadoop的split和block的区别和联系

hadoop在默认的情况下,split和hdfs的block的大小是一样的,这样容易造成误解认为两者是一样的,下面说下两者的区别和联系:

  1. split是MapReduce里的概念,是切片的概念,split是逻辑切片 ;而block是hdfs中切块的大小,block是物理切块;

  2. split的大小在默认的情况下和HDFS的block切块大小一致,为了是MapReduce处理的时候减少由于split和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));其中maxSize是取得longValueMax的值

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

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

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

发布了277 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/105432979