/gavial/data/OB/AIR/PM25/201709/01/15_00.json 521340 bytes, 1 block(s): OK
0. BP-1004679263-192.168.130.151-1485326068364:blk_1074920015_1179253 len=521340 repl=3
Status: HEALTHY
Total size: 521340 B
Total dirs: 0
Total files: 1
Total symlinks: 0
Total blocks (validated): 1 (avg. block size 521340 B)
Minimally replicated blocks: 1 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
块id为
blk_1074920015
2.使用fsck命令显示块状态,输出如下 hdfs fsck-blockid blk_住宅区
Block Id: blk_1074920015
Block belongs to: /gavial/data/OB/AIR/PM25/201709/01/15_00.json
No. of Expected Replica: 3
No. of live Replica: 3
No. of excess Replica: 0
No. of stale Replica: 0
No. of decommission Replica: 0
No. of corrupted Replica: 0
Block replica on datanode/rack: datanode-5/default-rack is HEALTHY
Block replica on datanode/rack: datanode-1/default-rack is HEALTHY
4条答案
按热度按时间yc0p9oo01#
每个块只属于一个文件,只需执行以下操作:1.使用fsck命令获取文件的块信息:
输出如下:
块id为
2.使用fsck命令显示块状态,输出如下
hdfs fsck-blockid blk_住宅区
显然,该块只属于一个文件
zbwhf8kr2#
对。当您存储大量的小文件时,它们将存储在单个块中,直到该块有相等的空间容纳为止。但是效率低下是因为对于这些小文件中的每一个,都会在namenode中为每个小文件创建一个索引条目(filename、block、offset)。如果我们有许多小文件而不是少量非常大的文件,这会浪费为namenode中的元数据保留的内存。
hpcdzsge3#
以下是hadoop最终指南中指定的内容:
与单个磁盘的文件系统不同,hdfs中小于单个块的文件不会占用整个块的底层存储
例如,如果您有30 mb的文件,并且块大小为64 mb,则该文件将在逻辑上存储在一个块中,但在物理文件系统中,hdfs仅使用30 mb来存储该文件。剩下的30 mb将免费使用。
vlf7wbxs4#
引用hadoop-权威指南:
hdfs存储小文件效率低下,因为每个文件都存储在一个块中,而块元数据由namenode保存在内存中。因此,大量的小文件会占用namenode上的大量内存(但是,请注意,小文件占用的磁盘空间不会超过存储文件原始内容所需的磁盘空间。例如,块大小为128 mb的1 mb文件使用1 mb的磁盘空间,而不是128 mb。)hadoop archives(har文件)是一种文件归档工具,它可以更有效地将文件打包到hdfs块中,从而减少namenode内存的使用,同时仍然允许对文件进行透明访问。
结论:每个文件将存储在一个单独的块中。