du -sh
Yaygın Linux dosya sistemlerinde biliyorum . Peki bunu HDFS ile nasıl yapmalı?
Yanıtlar:
0.20.203'ten önce ve 2.6.0'da resmi olarak kullanımdan kaldırıldı:
hadoop fs -dus [directory]
0.20.203'ten beri (ölü bağlantı) 1.0.4 ve 2.6.0 ile hala uyumlu :
hdfs dfs -du [-s] [-h] URI [URI …]
Daha hadoop fs -help
fazla bilgi ve ayrıntı için de koşabilirsiniz .
hadoop fs -du -s -h /path/to/dir
bir dizinin boyutunu okunabilir biçimde görüntüler.
hdfs -du -s -h /path/to/dir
için daha uygundur.
İçin genişletme Matt D ve diğerleri cevaplar, komut kadar olabilir Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
Verilen dizinde bulunan dosya ve dizinlerin boyutlarını veya bir dosya olması durumunda bir dosyanın uzunluğunu görüntüler.
Seçenekler:
- -S bir sonuçlanacaktır seçenek dosya uzunlukları toplamı özet ziyade bireysel dosyaların dışında, varlık göstermek. -S seçeneği olmadan, hesaplama, verilen yoldan 1 seviye derine inilerek yapılır.
- -H seçeneği de dosya boyutlarını biçimlendirir insan tarafından okunabilir biçimde (örneğin 64.0m yerine 67108864)
- -V seçeneği gösterecektir sütunların isimlerini bir başlık satırı olarak.
- -X seçenek olacaktır anlık dışlamak sonuç hesaplamasından. -X seçeneği (varsayılan) olmadan, sonuç her zaman verilen yol altındaki tüm anlık görüntüler dahil olmak üzere tüm INode'lardan hesaplanır.
du
aşağıdaki biçime sahip üç sütun döndürür: +-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
## Örnek komut:
hadoop fs -du /user/hadoop/dir1 \
/user/hadoop/file1 \
hdfs://nn.example.com/user/hadoop/dir1
Çıkış Kodu: Başarı durumunda 0, hata durumunda -1 döndürür.
Bununla GB cinsinden boyut elde edeceksiniz
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
Bir dizindeki belirli bir dosya grubunun toplamını hesaplamaya çalışırken bu -s
seçenek çalışmaz (Hadoop 2.7.1'de). Örneğin:
Dizin yapısı:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
Her dosyanın boyutunun 1 KB olduğunu varsayalım. Tüm dizini şu şekilde özetleyebilirsiniz:
hdfs dfs -du -s some_dir
4096 some_dir
Ancak, "count" içeren tüm dosyaların toplamını istersem, komut yetersiz kalır.
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
Bunu aşmak için çıktıyı genellikle awk üzerinden geçiririm.
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
Hdfs dfs -du -s -h / $ DizininizAdı dizininin boyutunu almak için kullanılabilir. hdfs dfsadmin -report, hızlı bir küme düzeyi depolama raporu görmek için kullanılabilir.
Hadoop kümesinde kullanılan alan yüzdesi
sudo -u hdfs hadoop fs –df
Belirli bir klasör altındaki kapasite:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(kullanmam gerekmiyordu sudo
)
sudo
gerekli değildir ve idareli kullanılmalıdır.
hdfs dfs -count <dir>
man sayfasından bilgi:
-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
Komut olmalıdır hadoop fs -du -s -h \dirPath
-du [-s] [-h] ...: Belirtilen dosya kalıbı ile eşleşen dosyalar tarafından kullanılan alan miktarını bayt cinsinden gösterir.
-s : Kalıpla eşleşen her bir dosyanın boyutunu göstermek yerine
, toplam (özet) boyutu gösterir.
-h : Dosyaların boyutlarını birkaç bayt yerine insan tarafından okunabilir bir şekilde biçimlendirir. (Ör. MB / GB / TB vb.)
-S seçeneği olmasa bile, bunun yalnızca bir dizinin bir alt düzeyindeki boyut özetlerini gösterdiğini unutmayın.
Çıktı, form boyutu adındadır (tam yol)