hadoop hdfs目录大小显示为0

时间:2016-08-15 10:06:38

标签: hadoop hdfs

每次我使用 hadoop fs -ls / path_to_directory hadoop fs -ls -h / path_to_directory ,结果如下

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浏览提供与以下相同的重复:

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

为什么hdfs的 hadoop fs -ls 命令和Web UI总是为目录显示0?

此外, hadoop fs -ls 命令通常会立即完成,而 hadoop fs -du 会占用有时要执行。似乎 hadoop fs -ls 命令实际上并没有花时间计算目录的总大小。

2 个答案:

答案 0 :(得分:2)

它按设计工作。 Hadoop是为大文件设计的,不应指望它每次运行hadoop fs -ls命令时都会给出大小。如果Hadoop按照您想要的方式工作,那么尝试从另一个人的角度思考谁可能只想查看目录是否存在;但最后因为Hadoop正在计算文件夹的大小而等待很长时间;不太好。

答案 1 :(得分:0)

  

尝试使用du选项执行通配符,以便将所有文件放在   db列出了文件大小。这里唯一的收获是我们   需要进行多个级别的通配符模式匹配,以便所有   覆盖了父目录下的级别。

hadoop fs -du -h /hive_warehouse/db/*/* > /home/list_du.txt