Wiem du -sh
w popularnych systemach plików Linuksa. Ale jak to zrobić z HDFS?
Odpowiedzi:
hadoop fs -du -s -h /path/to/dir
wyświetla rozmiar katalogu w czytelnej formie.
hdfs -du -s -h /path/to/dir
jest to bardziej odpowiednie.
Rozszerzając na odpowiedzi Matt D i innych, polecenie może być do Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Wyświetla rozmiary plików i katalogów zawartych w podanym katalogu lub długość pliku w przypadku, gdy jest to tylko plik.
Opcje:
- Opcja -s spowoduje wyświetlenie zagregowanego podsumowania długości plików , a nie poszczególnych plików. Bez opcji -s obliczenia są wykonywane przez zejście o 1 poziom w głąb danej ścieżki.
- Opcja -h sformatuje rozmiary plików w sposób czytelny dla człowieka (np. 64,0 m zamiast 67108864)
- Opcja -v wyświetli nazwy kolumn jako wiersz nagłówka.
- -X opcja wyklucza migawek z kalkulacji wynikowej. Bez opcji -x (domyślna) wynik jest zawsze obliczany na podstawie wszystkich I-węzłów, w tym wszystkich migawek w podanej ścieżce.
+-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
hadoop fs -du /user/hadoop/dir1 \
/user/hadoop/file1 \
hdfs://nn.example.com/user/hadoop/dir1
Kod zakończenia: zwraca 0 w przypadku sukcesu i -1 w przypadku błędu.
Dzięki temu otrzymasz rozmiar w GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Podczas próby obliczenia sumy określonej grupy plików w katalogu -s
opcja nie działa (w Hadoop 2.7.1). Na przykład:
Struktura katalogów:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
Załóżmy, że każdy plik ma rozmiar 1 KB. Możesz podsumować cały katalog za pomocą:
hdfs dfs -du -s some_dir
4096 some_dir
Jeśli jednak chcę, aby suma wszystkich plików zawierających „count” była niewystarczająca.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Aby obejść ten problem, zwykle przekazuję dane wyjściowe przez awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Aby uzyskać rozmiar katalogu, można użyć hdfs dfs -du -s -h / $ yourDirectoryName . hdfs dfsadmin -report może służyć do wyświetlania szybkiego raportu magazynu na poziomie klastra.
% używanego miejsca w klastrze Hadoop
sudo -u hdfs hadoop fs –df
Pojemność w określonym folderze:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(nie sudo
sudo
nie jest potrzebny i powinien być używany oszczędnie.
hdfs dfs -count <dir>
informacje ze strony podręcznika:
-count [-q] [-h] [-v] [-t [<storage type>]] [-u] <path> ... :
Count the number of directories, files and bytes under the paths
that match the specified file pattern. The output columns are:
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
or, with the -q option:
QUOTA REM_QUOTA SPACE_QUOTA REM_SPACE_QUOTA
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
Polecenie powinno być hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Pokazuje ilość miejsca w bajtach zajmowanego przez pliki, które pasują do określonego wzorca pliku.
-s : Zamiast pokazywać rozmiar każdego pojedynczego pliku, który pasuje do
wzorca, pokazuje całkowity (podsumowujący) rozmiar.
-h : formatuje rozmiary plików w sposób czytelny dla człowieka, a nie w postaci liczby bajtów. (Np. MB / GB / TB itp.)
Zauważ, że nawet bez opcji -s, to pokazuje tylko podsumowania rozmiarów o jeden poziom w głąb katalogu.
Dane wyjściowe są w formacie nazwa rozmiaru (pełna ścieżka)