Bagaimana cara memeriksa ukuran direktori HDFS?

99

Saya tahu du -shdi filesystem Linux umum. Tetapi bagaimana melakukannya dengan HDFS?

Cheng
sumber

Jawaban:

165

Sebelum 0.20.203, dan secara resmi tidak digunakan lagi di 2.6.0:

hadoop fs -dus [directory]

Sejak 0.20.203 (tautan mati) 1.0.4 dan masih kompatibel hingga 2.6.0 :

hdfs dfs -du [-s] [-h] URI [URI …]

Anda juga dapat menjalankan hadoop fs -helpuntuk info lebih lanjut dan spesifik.

Matt D
sumber
19
-du -s (-dus tidak digunakan lagi)
Carlos Rendon
69

hadoop fs -du -s -h /path/to/dir menampilkan ukuran direktori dalam bentuk yang dapat dibaca.

Marius Soutier
sumber
Untuk versi hdfs yang lebih baru, hdfs -du -s -h /path/to/dirini lebih sesuai.
Adelson Araújo
26

Memperluas ke Matt D dan jawaban lain, perintahnya bisa sampai Apache Hadoop 3.0.0

hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]

Ini menampilkan ukuran file dan direktori yang ada dalam direktori tertentu atau panjang file jika itu hanya file.

Pilihan:

  • The -s option akan menghasilkan ringkasan agregat panjang berkas yang ditampilkan, daripada file individual. Tanpa opsi -s, kalkulasi dilakukan dengan masuk ke dalam 1 level dari jalur yang diberikan.
  • The h pilihan akan memformat ukuran file dalam terbaca-manusia mode (misalnya 64.0m bukan 67.108.864)
  • The -v opsi akan menampilkan nama-nama kolom sebagai baris header.
  • The -x pilihan akan mengecualikan snapshot dari hasil perhitungan. Tanpa opsi -x (default), hasilnya selalu dihitung dari semua INode, termasuk semua snapshot di bawah jalur yang diberikan.

Du mengembalikan tiga kolom dengan format berikut:

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

Contoh perintah:

hadoop fs -du /user/hadoop/dir1 \
    /user/hadoop/file1 \
    hdfs://nn.example.com/user/hadoop/dir1 

Kode Keluar: Mengembalikan 0 jika berhasil dan -1 untuk kesalahan.

sumber: Apache doc

Nyonya
sumber
12

Dengan ini Anda akan mendapatkan ukuran dalam GB

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
dilshad
sumber
1
hdfs dfs -du PATHTODIRECTORY | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - Harap perbarui perintah Anda. Dua tanda kurung tutup setelah 1024 3. Seharusnya hanya 1
gubs
2

Saat mencoba menghitung total grup file tertentu dalam direktori, -sopsi tidak berfungsi (di Hadoop 2.7.1). Sebagai contoh:

Struktur direktori:

some_dir
├abc.txt    
├count1.txt 
├count2.txt 
└def.txt    

Asumsikan setiap file berukuran 1 KB. Anda dapat meringkas seluruh direktori dengan:

hdfs dfs -du -s some_dir
4096 some_dir

Namun, jika saya ingin jumlah semua file yang berisi "count" perintahnya gagal.

hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt

Untuk menyiasati ini saya biasanya melewatkan keluaran melalui awk.

hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048 
Grr
sumber
1

Untuk mendapatkan ukuran direktori hdfs dfs -du -s -h / $ yourDirectoryName bisa digunakan. hdfs dfsadmin -report dapat digunakan untuk melihat laporan penyimpanan tingkat cluster dengan cepat.

Harikrishnan Ck
sumber
0

% dari ruang yang digunakan di cluster Hadoop
sudo -u hdfs hadoop fs –df

Kapasitas di bawah folder tertentu:
sudo -u hdfs hadoop fs -du -h /user

Oren Efron
sumber
Saya mendapat kesalahan dengan "hdfs", cara kerjanya untuk saya adalah: hadoop fs -du -h /user (saya tidak perlu menggunakan sudo)
diens
sudotidak diperlukan dan harus digunakan dengan hemat.
Climbs_lika_Spyder
0

hadoop versi 2.3.33:

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

masukkan deskripsi gambar di sini

LuciferJack
sumber
0

hdfs dfs -count <dir>

info dari halaman 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
sumber
-1

Perintah Seharusnya hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] ...: Menampilkan jumlah ruang, dalam byte, yang digunakan oleh file yang cocok dengan pola file yang ditentukan.

  • -s : Daripada menunjukkan ukuran setiap file yang cocok dengan
    pola, tampilkan ukuran total (ringkasan).

  • -h : Memformat ukuran file dengan cara yang dapat dibaca manusia, bukan dalam jumlah byte. (Misalnya MB / GB / TB dll)

    Perhatikan bahwa, bahkan tanpa opsi -s, ini hanya menampilkan ringkasan ukuran satu tingkat jauh ke dalam direktori.

    Outputnya berupa nama ukuran formulir (jalur lengkap)

vijayraj34
sumber
duplikat jawaban
mrsrinivas