2013-08-28 15 views
20

To, co widziałem na interfejsie internetowym niedawnoCo dokładnie oznacza Non DFS Used?

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 % 

i jestem tak zdezorientowany, że nie-DFS Używane zajmuje ponad połowę pojemności,

który myślę oznacza połowę przechowywania Hadoop jest jest marnowany

Po spędzeniu bezsensownych poszukiwań, po prostu sformatowałem NodeNode i zacząłem od zera.

A potem skopiowałem jeden ogromny plik tekstowy (około 19 gigabajtów) z lokalnego do HDFS (z powodzeniem).

Teraz UI mówi

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 % 

przed kopiowaniem, DFS Samochody dla DFS Używane były zarówno 0.

Ponieważ DFS Używany jest w przybliżeniu dwukrotnie oryginalny rozmiar pliku tekstowego i skonfigurowane 2 kopie,

Domyślam się, że DFS Used składa się z 2 kopii oryginału i meta.

Ale nadal nie mam pojęcia, skąd pochodzi Non DFS Używane i dlaczego to zajmuje tyle capcity więcej niż DFS Used.

Co się stało? Czy popełniłem błąd?

Odpowiedz

25

"Non DFS używane" oblicza się następującym wzorem:

dla DFS Używane = skonfigurowanego Pojemność - pozostałą przestrzeń - DFS Używane

Nadal jest mylące, przynajmniej dla mnie.

Ponieważ Skonfigurowana pojemność = całkowita ilość miejsca na dysku - zarezerwowana przestrzeń.

Więc dla DFS używane = (Total Disk Space - zarezerwowane miejsce) - pozostałą przestrzeń - DFS Używane

Weźmy przykład. Zakładając, że mam dysk o pojemności 100 GB i ustawiłem zarezerwowane miejsce (dfs.datanode.du.reserved) na 30 GB.

Na dysku, systemie i innych plikach zużywających do 40 GB, system plików DFS używał 10 GB. Jeśli uruchomisz df -h , zobaczysz dostępne miejsce na dysku o pojemności 50 GB.

W HDFS internetowej interfejsie pokaże

dla DFS stosowane = 100 GB (ogółem) - 30-GB (zarezerwowane) - 10 PL (DFS używany) - 50 GB (pozostały) = 10 GB

Oznacza to, że początkowo skonfigurowałeś rezerwę 30G na używanie non-fs i 70 G na HDFS. Okazuje się jednak, że użycie non-fs przekracza rezerwację 30G i zżera 10 GB miejsca, które powinno należeć do HDFS!

Termin „Non DFS używane” powinno być naprawdę przemianowany na coś jak „Ile skonfigurowany pojemność DFS są zajmowane przez nie DFS użyć”

I trzeba przestać próbować dowiedzieć się, dlaczego non DFS używać są tak wysokie wewnątrz hadoopu.

Jedną przydatną komendą jest lsof | grep delete, która pomoże ci zidentyfikować otwarty plik, który został usunięty. Czasami procesy Hadoop (jak ula, przędza, mapred i hdfs) mogą zawierać odniesienia do tych już usuniętych plików. A te odniesienia zajmą miejsce na dysku.

Również lista du -hsx * | sort -rh | head -10 zawiera listę dziesięciu największych folderów.

+0

Czy mogę opróżniać dane inne niż dfs? Jeśli tak, to w jaki sposób? – Mahesha999

+0

@ Mahesha999: spróbuj ponownie uruchomić datanode. – kholis

7

Wykorzystany system non-DFS to dowolne dane w systemie plików węzła (-ów) danych, który nie znajduje się w dfs.data.dirs. Obejmuje to pliki dziennika, dane wyjściowe w postaci losowej mapy i lokalne kopie plików danych (jeśli umieścisz je w węźle danych). Użyj du lub podobnego narzędzia, aby zobaczyć, co zajmuje miejsce w twoim systemie plików.

+2

Jest to niepoprawne, zwłaszcza gdy 'dfs.data.dirs' znajduje się na oddzielnych systemach plików od'/'. Prawidłowa definicja to: wszelkie dane, które nie są zapisywane przez HDFS w tym samym systemie plików jak "dfs.data.dirs". Innymi słowy, jeśli używasz komend 'hdfs dfs' do kopiowania danych, to" użycie DFS "i jeśli użyjesz polecenia' cp' do skopiowania plików do 'dfs.data.dirs', to stanie się to" nie Użycie DFS ". – haridsv

+2

Czy mogę opróżniać dane non-dfs? Jeśli tak, to w jaki sposób? – Mahesha999

1

Prawidłowe uproszczona definicja brzmi: „Wszelkie dane, które nie są napisane przez HDFS w tym samym systemie plików (-ów) jako dfs.data.dirs Innymi słowy, jeśli używasz hdfs dfs polecenia do kopiowania danych, kończy się pod dfs.data.dirs ale potem. uważa się za „DFS wykorzystanie”, a jeśli używasz zwykłego polecenia cp skopiować pliki do dfs.data.dirs, to stanie się „wykorzystanie non-DFS”.

0

nie-DFS będą niektóre pliki cache, które będą przechowywane przez Menedżer węzłów Możesz sprawdzić ścieżkę pod właściwością yarn.nodemanager.local-dirs w witrynie przędzy.xml

Możesz zapoznać się z domyślny yarn-site.xml w celu uzyskania szczegółowych informacji.

Powiązane problemy