Відповіді:
До 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 -du -s -h /path/to/dir
це доречніше.
Поширюючи відповіді на Matt D та інші, команда може бути до 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 : Замість показу розміру кожного окремого файлу, який відповідає
шаблону, відображається загальний (зведений) розмір.
-h : форматує розміри файлів зручно для читання, а не кількість байтів. (Напр. МБ / ГБ / ТБ тощо)
Зауважте, що навіть без опції -s, це показує лише зведення розмірів на один рівень вглиб каталогу.
Вихідні дані містять назву розміру форми (повний шлях)