A maneira de verificar o tamanho de um diretório HDFS?

96

Eu conheço du -shsistemas de arquivos Linux comuns. Mas como fazer isso com HDFS?

Cheng
fonte

Respostas:

161

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 -helppara obter mais informações e detalhes.

Matt D
fonte
19
-du -s (-dus está obsoleto)
Carlos Rendon
69

hadoop fs -du -s -h /path/to/dir exibe o tamanho de um diretório em formato legível.

Marius Soutier
fonte
Para versões mais recentes de hdfs, hdfs -du -s -h /path/to/diré mais apropriado.
Adelson Araújo
26

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.

O du retorna três colunas com o seguinte formato:

 +-------------------------------------------------------------------+ 
 | size  |  disk_space_consumed_with_all_replicas  |  full_path_name | 
 +-------------------------------------------------------------------+ 

Comando de exemplo:

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.

fonte: Apache doc

Srsrinivas
fonte
12

Com isso você obterá o tamanho em GB

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Dilshad
fonte
1
hdfs dfs -du PATHTODIRECTORY | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - Atualize seu comando. Dois colchetes de fechamento após 1024 3. Deve ser apenas 1
gubs
2

Ao tentar calcular o total de um determinado grupo de arquivos em um diretório, a -sopçã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 
Grr
fonte
1

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.

Harikrishnan Ck
fonte
0

% 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

Oren Efron
fonte
Eu recebi um erro com "hdfs", a forma como funcionou para mim foi: hadoop fs -du -h /user (não sudo
precisei
sudonão é necessário e deve ser usado com moderação.
Climbs_lika_Spyder
0

hadoop versão 2.3.33:

hadoop fs -dus  /path/to/dir  |   awk '{print $2/1024**3 " G"}' 

insira a descrição da imagem aqui

LuciferJack
fonte
0

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
J.Doe
fonte
-1

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)

vijayraj34
fonte
resposta duplicada
mrsrinivas