码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop 之inputSplit

时间:2017-08-15 22:51:43      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:color   计算   ref   site   tsp   sdn   inux   nbsp   otto   

(本文非原创,摘抄于http://blog.csdn.net/dr_guo/article/details/51150278)

  输入分片(Input Split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组。

Hadoop 2.x默认的block大小是128MB,hadoop 1.x默认的block大小是64MB,可以在hdfs-site.xml中设置dfs.block.size,注意单位是byte。

 

分片大小范围可以在mapred-site.xml中设置,mapred.min.split.size mapred.max.split.size,minSplitSize大小默认为1B,maxSplitSize大小默认为Long.MAX_VALUE = 9223372036854775807

 

minSize=max{minSplitSize,mapred.min.split.size} 

 

splitSize=max{minSize,min{maxSize,blockSize}}

我们看一下源码

技术分享

所以:我们没有设置分片的范围的时候,分片大小是由block块大小决定的,和它的大小一样。比如把一个258MB的文件上传到HDFS上,假设block块大小是128MB,那么它就会被分成三个block块,与之对应产生三个split,所以最终会产生三个map task。我又发现了另一个问题,第三个block块里存的文件大小只有2MB,而它的block块大小是128MB,那它实际占用Linux file system的多大空间?

答案是实际的文件大小,而非一个块的大小。

 

hadoop 之inputSplit

标签:color   计算   ref   site   tsp   sdn   inux   nbsp   otto   

原文地址:http://www.cnblogs.com/Zchaowu/p/7367912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!