每次使用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會顯示文件和目錄的大小。 –