Способ проверить размер каталога HDFS? - PullRequest
81 голосов
/ 28 июня 2011

Я знаю du -sh в общих файловых системах Linux. Но как это сделать с HDFS?

Ответы [ 9 ]

143 голосов
/ 28 июня 2011

До 0.20.203 и официально объявлен устаревшим в 2.6.0:

hadoop fs -dus [directory]

С 0.20.203 (неработающая ссылка) 1.0.4 и все еще совместим через 2.6.0 :

hdfs dfs -du [-s] [-h] URI [URI …]

Вы также можете запустить hadoop fs -help для получения дополнительной информации и подробностей.

57 голосов
/ 18 февраля 2015

hadoop fs -du -s -h /path/to/dir отображает размер каталога в удобочитаемой форме.

16 голосов
/ 11 сентября 2017

Расширение до Мэтт D и другие ответы, команда может быть до Apache Hadoop 3.0.0

hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]

Отображает размеры файлов и каталогов, содержащихся в данном каталоге, или длину файла в случае, если это просто файл.

Параметры:

  • Опция -s приведет к выводу агрегированной сводки длин файлов , а не отдельных файлов.Без опции -s вычисление выполняется путем перехода на 1 уровень глубины от заданного пути.
  • Опция -h отформатирует размеры файла в удобочитаемом для человека fashion (например, 64,0 м вместо 67108864)
  • Опция -v отобразит имена столбцов в виде строки заголовка.
  • Опция -x будет исключать снимки из расчета результата.Без опции -x (по умолчанию) результат всегда рассчитывается по всем INodes, включая все снимки по заданному пути.

Ду возвращает три столбца в следующем формате:

 +-------------------------------------------------------------------+ 
 | 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 

Код выхода: возвращает 0 в случае успехаи -1 при ошибке.

источник: Apache doc

10 голосов
/ 24 июня 2016

При этом вы получите размер в ГБ

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
1 голос
/ 24 июля 2018

При попытке вычислить общее количество определенной группы файлов в каталоге опция -s не работает (в Hadoop 2.7.1). Например:

Структура каталогов:

some_dir
├abc.txt    
├count1.txt 
├count2.txt 
└def.txt    

Предположим, что каждый файл имеет размер 1 КБ. Вы можете суммировать весь каталог с помощью:

hdfs dfs -du -s some_dir
4096 some_dir

Тем не менее, если я хочу, чтобы сумма всех файлов, содержащих «count», команда не выполнялась.

hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt

Чтобы обойти это, я обычно пропускаю вывод через awk.

hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048 
1 голос
/ 13 ноября 2016

Для получения размера каталога hdfs можно использовать dfs -du -s -h / $ yourDirectoryName .hdfs dfsadmin -report можно использовать для просмотра быстрого отчета о хранении на уровне кластера.

1 голос
/ 27 октября 2014

% используемого пространства в кластере Hadoop
sudo -u hdfs hadoop fs –df

Емкость в определенной папке:
sudo -u hdfs hadoop fs -du -h /user

0 голосов
/ 02 сентября 2018

hadoop версия 2.3.33:

hadoop fs -dus  /path/to/dir  |   awk '{print $2/1024**3 " G"}' 

enter image description here

0 голосов
/ 19 сентября 2017

Команда должна быть hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] ...: Показать объем пространства в байтах, используемого файлами, которые соответствуют указанному шаблону файла.

  • -s : Вместо того, чтобы показывать размер каждого отдельного файла, который соответствует
    шаблон, показывает общий (суммарный) размер.

  • -h : форматирует файлы в удобочитаемом формате, а не в байтах. (Без учета МБ / ГБ / ТБ и т. Д.)

    Обратите внимание, что даже без опции -s это показывает только итоговые размеры на один уровень глубоко в каталог.

    Вывод в виде имя размера (полный путь)

...