hdfs中的默认块大小不是最小文件大小吗?

093gszye  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(573)

hdfs的默认块大小为60mb。那么,这是否意味着hdfs中文件的最小大小是60mb?。
i、 e.如果我们创建/复制一个小于60mb的文件(比如说5bytes),那么我的假设是,如果该文件在hdfs中是1block,那么实际大小是60mb。但是,当我将一个5字节的文件复制到hdfs时,当我看到文件的大小时(通过 ls 命令)我仍然认为该文件的大小为5字节。那不是应该是60mb吗?。
或者ls命令显示的是文件中数据的大小,而不是hdfs上文件的块大小?

fzwojiic

fzwojiic1#

hdfs块的默认大小并不意味着它将使用我们指定的所有空间,即60 mb。如果数据超过60 mb,则会将数据拆分为块(data/60 mb),并创建相应数量的块。如果您正在执行ls命令,那么它将只显示您当前正在使用的空间。
例如:我上传了test.txt文件的hdfs和块大小我已经设置为128 mb和复制是2,但我们的实际文件大小只有193 b。

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

-rw-r--r--hduser超群193 b 10/27/2016,下午2:58:41 2 128 mb test.txt**

dzhpxtsq

dzhpxtsq2#

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

如果一个文件超过60mb(在新版本中为120mb),则不能使用单个块写入,至少需要两个块。当然,如果小于60mb,则可以在单个块中写入,这样就可以根据需要占用尽可能多的空间(小于60mb)。
毕竟,一个5字节的文件占用60mb是没有意义的。

相关问题