Как проверить файловую систему HDFS каталог размер?


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

9 63

9 ответов:

до 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 для получения дополнительной информации и конкретики.

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

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

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int(/(1024**3)) " [GB]\t"  }'

продление до Matt D и другие ответы, команда может быть до Apache Hadoop 3.0.0-alpha4

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

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

варианты:

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

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

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

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

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

при попытке вычислить общее количество определенной группы файлов в каталоге -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* | aws '{ total+= } END { print total }'
2048 

hadoop версии 2.3.33:

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

enter image description here