概念介绍
分块
在HDFS系统中,为了便于文件的管理和备份,引入分块概念(block)。这里的 块 是HDFS存储系统当中的最小单位,HDFS默认定义一个块的大小为64MB。当有文件上传到HDFS上时,若文件大小大于设置的块大小,则该文件会被切分存储为多个块,多个块可以存放在不同的DataNode上,整个过程中 HDFS系统会保证一个块存储在一个datanode上 。但值得注意的是 如果某文件大小没有到达64MB,该文件并不会占据整个块空间 。
HDFS中的NameNode会记录在上述文件分块中文件的各个块都存放在哪个dataNode上,这些信息一般也称为 元信息(MetaInfo) 。元信息的存储位置由dfs.name.dir指定。
分片
当一个作业提交到Hadoop运行的时候,其中的核心步骤是MapReduce,在这个过程中传输的数据可能会很多,Hadoop会将MapReduce的输入数据划分为等长的小数据块,称为输入分片或者分片。hadoop为每个分片构建一个map任务,分片的默认实现由InputSplitFormat 类的 getSplits() 方法指定:
long splitSize = computeSplitSize(goalSize, minSize, blockSize);
//computeSplitSize方法中省略其他代码,核心计算规则如下
Math.max(minSize, Math.min(goalSize, blockSize));
- 1
- 2
- 3
- 4
其中goalSize的

本文介绍了Hadoop中分块和分片的概念,HDFS的分块是文件存储的最小单位,默认大小为64MB。分片是MapReduce输入数据的等长小块,通常与分块大小相同。分块和分片大小相等是为了确保数据本地化,提高性能。
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



