每次使用hadoop的FS -ls/path_to_directory或hadoop的FS -ls -h/path_to_directory,其结果是像下面hadoop的HDFS目录大小为0
drwxr-xr-x - hadoop supergroup 0 2016-08-05 00:22/user/hive-0.13.1/warehouse/t_b_city
drwxr-xr-x - hadoop supergroup 0 2016-06-15 16:28/user/hive-0.13.1/warehouse/t_b_mobile
无论文件是否存在,HDFS中目录的大小始终显示为0。从Web UI
浏览给出了同样的reuslt如下:
drwxr-xr-x hadoop supergroup 0 B 0 0 B t_b_city
drwxr-xr-x hadoop supergroup 0 B 0 0 B t_b_mobile
但是,其实有这些目录中的文件。当使用命令hadoop的FS -du -h /user/hive-0.13.1/warehouse/,目录大小可以被正确地显示如下:
385.5 K /user/hive-0.13.1/warehouse/t_b_city
1.1 M /user/hive-0.13.1/warehouse/t_b_mobile
为什么会产生hadoop的FS -ls hdfs命令和Web UI始终显示为0的目录?
此外,Hadoop的FS -ls命令通常会立即完成,而Hadoop的FS -du将需要一段时间来执行。看起来,命令实际上并没有花时间计算目录的总大小。
在Linux上运行'ls -l'命令时,目录显示的“大小”与内部文件的大小无关。那么你为什么期望HDFS工作不同? –
顺便说一下,NameNode将整个文件系统信息存储在RAM中而不是磁盘上,因此目录条目需要磁盘上的零字节。另一方面,Linux文件系统需要几个磁盘段来保存每个目录*('inodes'列表,权限等)* –
谢谢。似乎我对ls命令的理解一直是错误的。我理所当然地认为ls会显示文件和目录的大小。 –