Как проверить файловую систему HDFS каталог размер?
Я знаю du -sh
в общих файловых системах Linux. Но как это сделать с HDFS?
9 ответов:
при этом вы получите размер в ГБ
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 при ошибке.
чтобы получить размер каталога 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