Saya tahu du -sh
di filesystem Linux umum. Tetapi bagaimana melakukannya dengan HDFS?
Jawaban:
hadoop fs -du -s -h /path/to/dir
menampilkan ukuran direktori dalam bentuk yang dapat dibaca.
hdfs -du -s -h /path/to/dir
ini lebih sesuai.
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.
+-------------------------------------------------------------------+
| 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
Kode Keluar: Mengembalikan 0 jika berhasil dan -1 untuk kesalahan.
Dengan ini Anda akan mendapatkan ukuran dalam GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Saat mencoba menghitung total grup file tertentu dalam direktori, -s
opsi 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
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.
% 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
hadoop fs -du -h /user
(saya tidak perlu menggunakan sudo
)
sudo
tidak diperlukan dan harus digunakan dengan hemat.
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
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)