Как проверить размер каталога HDFS?

Ответы:

165

До версии 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за дополнительной информацией и подробностями.

Мэтт Д.
источник
19
-du -s (-dus не рекомендуется)
Карлос Рендон
69

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

Мариус Сутье
источник
Для более новых версий hdfs hdfs -du -s -h /path/to/dirэто более уместно.
Адельсон Араужо
26

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

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

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

Параметры:

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

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

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

Mrsrinivas
источник
12

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

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Дилшад
источник
1
hdfs dfs -du ПУТЬ | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - Обновите вашу команду. Две закрывающие скобки после 1024 3. Это должно быть только 1
gubs
2

При попытке подсчитать общее количество файлов в определенной группе в каталоге эта -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 
Grr
источник
1

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

Харикришнан Ск
источник
0

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

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

Орен Эфрон
источник
У меня ошибка с "hdfs", у меня это сработало: hadoop fs -du -h /user (мне не нужно было использовать sudo)
diens
sudoне требуется, и его следует использовать с осторожностью.
Climbs_lika_Spyder 08
0

hadoop версии 2.3.33:

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

введите описание изображения здесь

Люцифер Джек
источник
0

hdfs dfs -count <dir>

информация со страницы руководства:

-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
Дж. Доу
источник
-1

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

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

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

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

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

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

vijayraj34
источник
повторяющийся ответ
mrsrinivas