HDFS最小文件大小不是默认块大小吗?

时间:2016-10-26 23:37:27

标签: hadoop mapreduce hdfs

HDFS的默认块大小为60MB。那么,这是否意味着HDFS中文件的最小大小为60MB?

即。如果我们创建/复制一个小于60MB的文件(比如5字节),那么我的假设是,如果HDFS中的文件是1块,即60MB,则实际大小。但是,当我将5bytes文件复制到HDFS时,当我看到文件的大小(通过ls命令)时,我仍然看到该文件的大小为5bytes。 不应该是60MB?

或是ls命令显示文件中数据的大小而不是HDFS上文件的块大小?

2 个答案:

答案 0 :(得分:1)

hdfs块的默认大小并不意味着它将使用我们指定的所有空间,即60 MB。如果数据超过60 MB,那么它将数据拆分为块(数据/ 60 MB),将创建该块数。 如果您正在执行ls命令,那么它将仅显示您当前正在使用空间。

ex: - 我已经在hdfs中上传了test.txt文件,块大小我设置为128 MB,复制为2但我们的实际文件大小只有193 B.

**权限所有者组大小上次修改后的复制块大小名称

-rw-r - r-- hduser supergroup 193 B 10/27/2016,2:58:41 PM 2 128 MB test.txt **

答案 1 :(得分:0)

默认块大小是块的最大大小。每个文件都由块组成,这些块分布(并复制)到HDFS上的不同数据节点。 namenode知道哪些块构成文件,以及在哪里找到它们。也许通过以下图像更容易理解这一点:

enter image description here

如果文件超过60MB(新版本为120MB),则无法使用单个块写入,至少需要两个。 当然,如果它小于60MB,它可以写在一个块中,这将占用尽可能多的空间,必要时(小于60MB)。

毕竟,5字节文件占用60MB是没有意义的。