Respuestas:
Antes de 0.20.203, y oficialmente obsoleto en 2.6.0:
hadoop fs -dus [directory]
Desde 0.20.203 (enlace muerto) 1.0.4 y aún compatible hasta 2.6.0 :
hdfs dfs -du [-s] [-h] URI [URI …]
También puede ejecutar hadoop fs -help
para obtener más información y detalles.
hadoop fs -du -s -h /path/to/dir
muestra el tamaño de un directorio en forma legible.
hdfs -du -s -h /path/to/dir
es más apropiado.
Extendiéndose a Matt D y otras respuestas, el comando puede ser hasta Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Muestra los tamaños de los archivos y directorios contenidos en el directorio dado o la longitud de un archivo en caso de que sea solo un archivo.
Opciones:
- La opción -s dará como resultado un resumen agregado de la longitud de los archivos que se muestra, en lugar de los archivos individuales. Sin la opción -s, el cálculo se realiza yendo 1 nivel de profundidad desde la ruta dada.
- La opción -h formateará los tamaños de los archivos de forma legible por humanos (por ejemplo, 64,0 m en lugar de 67108864)
- La opción -v mostrará los nombres de las columnas como una línea de encabezado.
- La opción -x excluirá las instantáneas del cálculo de resultados. Sin la opción -x (predeterminada), el resultado siempre se calcula a partir de todos los INodes, incluidas todas las instantáneas de la ruta dada.
+-------------------------------------------------------------------+
| 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
Código de salida: devuelve 0 en caso de éxito y -1 en caso de error.
Con esto obtendrás tamaño en GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Al intentar calcular el total de un grupo particular de archivos dentro de un directorio, la -s
opción no funciona (en Hadoop 2.7.1). Por ejemplo:
Estructura de directorios:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
Suponga que cada archivo tiene un tamaño de 1 KB. Puede resumir todo el directorio con:
hdfs dfs -du -s some_dir
4096 some_dir
Sin embargo, si quiero la suma de todos los archivos que contienen "contar", el comando se queda corto.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Para evitar esto, generalmente paso la salida a través de awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Para obtener el tamaño del directorio, se puede usar hdfs dfs -du -s -h / $ yourDirectoryName . hdfs dfsadmin -report se puede utilizar para ver un informe rápido de almacenamiento a nivel de clúster.
% de espacio utilizado en el clúster de Hadoop
sudo -u hdfs hadoop fs –df
Capacidad en carpeta específica:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(no necesitaba usar sudo
)
sudo
no es necesario y debe usarse con moderación.
hdfs dfs -count <dir>
información de la página del manual:
-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
El comando debe ser hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: muestra la cantidad de espacio, en bytes, utilizado por los archivos que coinciden con el patrón de archivo especificado.
-s : en lugar de mostrar el tamaño de cada archivo individual que coincide con el
patrón, muestra el tamaño total (resumen).
-h : Formatea los tamaños de los archivos de una manera legible por humanos en lugar de una cantidad de bytes. (Ex MB / GB / TB, etc.)
Tenga en cuenta que, incluso sin la opción -s, esto solo muestra resúmenes de tamaño en un nivel de profundidad en un directorio.
La salida tiene el tamaño del formulario (ruta completa)