hadoop fs 獲取文件大小


du

使用方法:hadoop fs -du URI [URI …]

顯示目錄中所有文件的大小,或者當只指定一個文件時,顯示此文件的大小。
示例:
hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1 
返回值:
成功返回0,失敗返回-1。 

dus

使用方法:hadoop fs -dus <args>

顯示文件的大小。

 

hadoop fs -du -s -h ${filePath} = ${SIZE}  ${filePath}

-h 表示將大小進行轉換使用合適的單位。

-du可以接受多個文件路徑,且當文件路徑不存在時,不影響隨后的路徑的計算。

 

300個路徑測試dus比du快3秒,平均一條路徑快0.01秒。

實際應用中統計67727個目錄,可以差出十分鍾之多。

 

 ======================================================

以下轉自:理解hadoop fsck、fs -dus、-count -q的大小輸出

很多hadoop用戶經常迷惑hadoop fsck,hadoop fs -dus,hadoop -count -q等hadoop文件系統命令輸出的大小以及意義。
這里對這類問題做一個小結。首先我們來明確2個概念:

  • 邏輯空間,即分布式文件系統上真正的文件大小
  • 物理空間,即存在分布式文件系統上該文件實際占用的空間

為什么邏輯空間一般不等於物理空間?
分布式文件系統為了保證文件的可靠性,往往會保存多個備份(一般是3份),只要備份數不為1的情況下,一般物理空間會是邏輯空間的幾倍。關系如下:

HDFS物理空間=邏輯空間*block備份數

hadoop fsck和hadoop fs -dus 
執行hadoop fsck和hadoop fs -dus顯示的文件大小表示的是文件占用的邏輯空間。

$ hadoop fsck /path/to/directory Total size: 16565944775310 B <=== 看這里 Total dirs: 3922 Total files: 418464 Total blocks (validated): 502705 (avg. block size 32953610 B) Minimally replicated blocks: 502705 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 3 Average block replication: 3.0 Corrupt blocks: 0 Missing replicas: 0 (0.0 %) Number of data-nodes: 18 Number of racks: 1 FSCK ended at Thu Oct 20 20:49:59 CET 2011 in 7516 milliseconds The filesystem under path '/path/to/directory' is HEALTHY $ hadoop fs -dus /path/to/directory hdfs://master:54310/path/to/directory 16565944775310 <=== 看這里

正如命令示例所見,hadoop fsck和hadoop fs -dus報告的文件大小都是HDFS文件實際占用的大小,即這個空間大小是沒有算塊的備份數的。文件真正占用的物理空間=邏輯空間block備份數據,即16565944775310 3=49697834325930,這個49697834325930是物理空間。

hadoop fs -count -q 
通過執行hadoop fs -count -q /path/to/directory 可以看到這個目錄真正的空間使用情況。執行結果如下:

$ hadoop fs -count -q /path/to/directory QUOTA REMAINING_QUOTA SPACE_QUOTA REMAINING_SPACE_QUOTA DIR_COUNT FILE_COUNT CONTENT_SIZE FILE_NAME none inf 54975581388800 5277747062870 3922 418464 16565944775310 hdfs://master:54310/path/to/directory

fs -count -q會輸出8列,分別表示如下:

命名空間的quota(限制文件數) 剩余的命名空間quota 物理空間的quota (限制空間占用大小) 剩余的物理空間 目錄數統計 文件數統計 目錄邏輯空間總大小 路徑

可以看出通過hadoop fs -count -q 可以看到一個目錄比較詳細的空間和qutoa占用情況,包含了物理空間、邏輯空間、文件數、目錄數、qutoa剩余量等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM