Я знаю du -sh
общие файловые системы Linux. Но как это сделать с HDFS?
Ответы:
hadoop fs -du -s -h /path/to/dir
отображает размер каталога в удобочитаемой форме.
hdfs -du -s -h /path/to/dir
это более уместно.
Расширяя до Мэтта Д. и других ответов, команда может быть до 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, включая все снимки по заданному пути.
+-------------------------------------------------------------------+
| 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 в случае ошибки.
При этом вы получите размер в ГБ
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $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
Чтобы получить размер каталога, можно использовать hdfs dfs -du -s -h / $ yourDirectoryName . hdfs dfsadmin -report можно использовать для просмотра быстрого отчета о хранилище на уровне кластера.
% используемого пространства в кластере Hadoop
sudo -u hdfs hadoop fs –df
Емкость в определенной папке:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(мне не нужно было использовать sudo
)
sudo
не требуется, и его следует использовать с осторожностью.
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
Команда должна быть hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Показать количество места в байтах, используемое файлами, соответствующими указанному шаблону файла.
-s : вместо отображения размера каждого отдельного файла, соответствующего
шаблону, отображается общий (сводный) размер.
-час : форматирует размеры файлов в удобочитаемой форме, а не в байтах. (Например, МБ / ГБ / ТБ и т. Д.)
Обратите внимание, что даже без опции -s это показывает только сводку размеров на один уровень в глубину каталога.
Выходные данные представлены в виде имени размера формы (полный путь)