Respostas:
Antes de 0.20.203, e oficialmente obsoleto em 2.6.0:
hadoop fs -dus [directory]
Desde 0,20.203 (link morto) 1.0.4 e ainda compatível com 2.6.0 :
hdfs dfs -du [-s] [-h] URI [URI …]
Você também pode correr hadoop fs -help
para obter mais informações e detalhes.
hadoop fs -du -s -h /path/to/dir
exibe o tamanho de um diretório em formato legível.
hdfs -du -s -h /path/to/dir
é mais apropriado.
Estendendo para Matt D e outras respostas, o comando pode ser até Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Ele exibe os tamanhos dos arquivos e diretórios contidos em um determinado diretório ou o comprimento de um arquivo, caso seja apenas um arquivo.
Opções:
- A opção -s resultará em um resumo agregado dos comprimentos dos arquivos sendo exibidos, em vez dos arquivos individuais. Sem a opção -s, o cálculo é feito indo a um nível de profundidade do caminho fornecido.
- A opção -h formatará os tamanhos dos arquivos de forma legível (por exemplo, 64,0m em vez de 67108864)
- A opção -v exibirá os nomes das colunas como uma linha de cabeçalho.
- A opção -x excluirá os instantâneos do cálculo do resultado. Sem a opção -x (padrão), o resultado é sempre calculado a partir de todos os INodes, incluindo todos os instantâneos no caminho fornecido.
+-------------------------------------------------------------------+
| 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 saída: Retorna 0 em caso de sucesso e -1 em caso de erro.
Com isso você obterá o tamanho em GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Ao tentar calcular o total de um determinado grupo de arquivos em um diretório, a -s
opção não funciona (no Hadoop 2.7.1). Por exemplo:
Estrutura do diretório:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
Suponha que cada arquivo tenha 1 KB de tamanho. Você pode resumir todo o diretório com:
hdfs dfs -du -s some_dir
4096 some_dir
No entanto, se eu quiser a soma de todos os arquivos contendo "contagem", o comando falha.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Para contornar isso, geralmente passo a saída por meio do awk.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Para obter o tamanho do diretório hdfs dfs -du -s -h / $ yourDirectoryName pode ser usado. hdfs dfsadmin -report pode ser usado para ver um relatório rápido de armazenamento em nível de cluster.
% de espaço usado no cluster Hadoop
sudo -u hdfs hadoop fs –df
Capacidade sob pasta específica:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(não sudo
sudo
não é necessário e deve ser usado com moderação.
hdfs dfs -count <dir>
informações da página de 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
O comando deve ser hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Mostra a quantidade de espaço, em bytes, usada pelos arquivos que correspondem ao padrão de arquivo especificado.
-s : Em vez de mostrar o tamanho de cada arquivo individual que corresponde ao
padrão, mostra o tamanho total (resumo).
-h : formata o tamanho dos arquivos de forma legível, em vez de um número de bytes. (Ex MB / GB / TB etc)
Observe que, mesmo sem a opção -s, isso só mostra resumos de tamanho em um nível de profundidade em um diretório.
A saída está no nome do tamanho do formulário (caminho completo)