2013-08-28 19 views
20

這是我看到的Web UI最近使用的Non DFS的含義是什麼?

Configured Capacity  : 232.5 GB 
DFS Used : 112.44 GB 
Non DFS Used : 119.46 GB 
DFS Remaining : 613.88 MB 
DFS Used% : 48.36 % 
DFS Remaining% : 0.26 % 

,我很困惑的是使用非DFS超過容量的一半佔用,

,我認爲指的Hadoop存儲的一半被浪費了

花了無謂的時間搜索後,我只是格式化了namenode,並從頭開始。

然後我從本地複製一個巨大的文本文件(大約19千兆字節)到HDFS(成功)。現在

的UI說

Configured Capacity : 232.5 GB 
DFS Used  : 38.52 GB 
Non DFS Used  : 45.35 GB 
DFS Remaining : 148.62 GB 
DFS Used% : 16.57 % 
DFS Remaining% : 63.92 % 
複製前

,DFS使用和非使用DFS均爲0

因爲DFS採用的是大約兩倍的原始文本文件的大小,我配置了2個副本,

我猜想使用的DFS是由原始和元的2個副本組成的。

但是我仍然不知道Non DFS Used來自哪裏,爲什麼這比使用DFS佔用了更多的流量。

發生了什麼?我犯了錯誤嗎?

回答

25

「非DFS使用的」由以下公式計算:

非DFS使用=配置的容量 - 剩餘空間 - DFS二手

它仍然是混亂的,至少對我來說。

因爲 配置容量=總磁盤空間 - 保留空間。

所以非DFS使用=(總磁盤空間 - 保留空間) - 剩餘空間 - DFS二手

讓我們的例子。假設我有100 GB的磁盤,並將保留空間(dfs.datanode.du.reserved)設置爲30 GB。

在磁盤中,系統和其他文件最多使用40 GB,DFS使用10 GB。如果運行df -h ,則會看到該磁盤卷的可用空間爲50GB。

在HDFS網絡用戶界面,它會顯示

非DFS用於= 100GB(共) - 30 GB(保留) - 10 GB(DFS使用) - 50GB(剩餘) = 10 GB

所以它實際上意味着,您最初配置爲非dfs使用預留30G,HDFS使用70 G。然而,事實證明,非dfs的使用超過了30G的預留量,並佔用了10GB的空間,這應該屬於HDFS!

術語「非DFS使用」應該被重新命名爲類似「多少配置DFS容量是由非DFS佔領使用」

人們應當停止揣摩爲什麼非DFS使用在hadoop裏面這麼高。

一個有用的命令是lsof | grep delete,它將幫助您識別那些已被刪除的打開文件。有時,Hadoop進程(如配置單元,紗線,mapred和hdfs)可能會引用已經刪除的文件。這些引用將佔用磁盤空間。

另外du -hsx * | sort -rh | head -10有助於列出十大文件夾。

+0

我可以清空非dfs數據嗎?如果是的話如何? – Mahesha999

+0

@ Mahesha999:嘗試重新啓動datanode。 – kholis

7

使用的非DFS是不在dfs.data.dirs中的數據節點的文件系統中的任何數據。這將包括日誌文件,mapreduce shuffle輸出和數據文件的本地副本(如果將它們放在數據節點上)。使用du或類似工具查看佔用文件系統空間的內容。

+2

這是不正確的,尤其是當'dfs.data.dirs'與'/'分開的文件系統上時。正確的定義是:不是由HDFS在與'dfs.data.dirs'相同的文件系統中寫入的任何數據。換句話說,如果您使用'hdfs dfs'命令來複制數據,那麼它就是「DFS usage」,並且如果使用'cp'命令將文件複製到'dfs.data.dirs'中,則它將變爲「 DFS使用情況「。 – haridsv

+2

我可以清空非dfs數據嗎?如果是的話如何? – Mahesha999

1

正確的簡單定義是:「這是不是在同一個文件系統(S)爲dfs.data.dirs寫HDFS換句話說任何數據,如果使用hdfs dfs命令複製數據時,它dfs.data.dirs但隨後下結束。它被認爲是「DFS使用」,如果你使用普通cp命令將文件複製到dfs.data.dirs,那麼它就會變成「非DFS使用」。

0

非DFS將是會被存儲一些緩存文件節點管理器,您可以在yarn-site.xml中檢查yarn.nodemanager.local-dirs屬性下的路徑

您可以參考詳情請參閱默認yarn-site.xml