วิธีตรวจสอบขนาดไดเร็กทอรี HDFS?


คำตอบ:


167

ก่อน 0.20.203 และเลิกใช้งานอย่างเป็นทางการใน 2.6.0:

hadoop fs -dus [directory]

ตั้งแต่0.20.203 (ลิงก์ตาย) 1.0.4และยังเข้ากันได้ถึง2.6.0 :

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

คุณยังสามารถเรียกhadoop fs -helpดูข้อมูลเพิ่มเติมและข้อมูลเฉพาะได้


20
-du -s (-dus เลิกใช้งานแล้ว)
Carlos Rendon

69

hadoop fs -du -s -h /path/to/dir แสดงขนาดของไดเร็กทอรีในรูปแบบที่อ่านได้


สำหรับ hdfs เวอร์ชันใหม่hdfs -du -s -h /path/to/dirจะเหมาะสมกว่า
Adelson Araújo

29

ขยายไปยังMatt Dและคำตอบอื่น ๆ คำสั่งสามารถอยู่ได้จนถึงApache Hadoop 3.0.0

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

จะแสดงขนาดของไฟล์และไดเร็กทอรีที่อยู่ในไดเร็กทอรีที่กำหนดหรือความยาวของไฟล์ในกรณีที่เป็นเพียงไฟล์

ตัวเลือก:

  • -sตัวเลือกที่จะส่งผลในการสรุปรวมความยาวของไฟล์การแสดงมากกว่าไฟล์แต่ละบุคคล หากไม่มีตัวเลือก -s การคำนวณจะทำได้โดยการไปลึก 1 ระดับจากเส้นทางที่กำหนด
  • -hตัวเลือกที่จะจัดรูปแบบไฟล์ขนาดในมนุษย์สามารถอ่านแฟชั่น (เช่น 64.0m แทน 67108864)
  • -vตัวเลือกที่จะแสดงชื่อของคอลัมน์ที่เป็นบรรทัดส่วนหัว
  • -xตัวเลือกที่จะไม่รวมภาพรวมจากการคำนวณผล หากไม่มีตัวเลือก -x (ค่าเริ่มต้น) ผลลัพธ์จะถูกคำนวณจาก INodes ทั้งหมดเสมอรวมถึงสแนปชอตทั้งหมดภายใต้พา ธ ที่กำหนด

du ส่งคืนสามคอลัมน์ด้วยรูปแบบต่อไปนี้:

 +-------------------------------------------------------------------+ 
 | 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 

รหัสออก: ส่งคืน 0 เมื่อสำเร็จและ -1 เมื่อเกิดข้อผิดพลาด

ที่มา: Apache doc


12

ด้วยสิ่งนี้คุณจะได้ขนาดเป็น GB

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'

1
hdfs dfs -du PATHTODIRECTORY | awk '/ ^ [0-9] + / {print int ($ 1 / (1024 3) "[GB] \ t" $ 2}' - โปรดอัปเดตคำสั่งของคุณวงเล็บปิดสองตัวหลัง 1024 3 ควรเป็นเพียง 1
gubs

2

เมื่อพยายามคำนวณผลรวมของกลุ่มไฟล์เฉพาะภายในไดเร็กทอรี-sตัวเลือกจะไม่ทำงาน (ใน Hadoop 2.7.1) ตัวอย่างเช่น:

โครงสร้างไดเรกทอรี:

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

สมมติว่าแต่ละไฟล์มีขนาด 1 KB คุณสามารถสรุปไดเร็กทอรีทั้งหมดด้วย:

hdfs dfs -du -s some_dir
4096 some_dir

อย่างไรก็ตามหากฉันต้องการผลรวมของไฟล์ทั้งหมดที่มี "count" คำสั่งจะสั้น

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

ในการหลีกเลี่ยงสิ่งนี้ฉันมักจะส่งเอาต์พุตผ่าน awk

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

1

เพื่อให้ได้ขนาดของไดเร็กทอรีhdfs dfs -du -s -h / $ yourDirectoryNameสามารถใช้ได้ hdfs dfsadmin -report สามารถใช้เพื่อดูรายงานการจัดเก็บระดับคลัสเตอร์อย่างรวดเร็ว


0

% ของพื้นที่ที่ใช้บนคลัสเตอร์ Hadoop
sudo -u hdfs hadoop fs –df

ความจุภายใต้โฟลเดอร์เฉพาะ:
sudo -u hdfs hadoop fs -du -h /user


ผมได้รับข้อผิดพลาดด้วย "HDFS" วิธีการที่จะทำงานให้ฉันเป็น: hadoop fs -du -h /user (i ไม่จำเป็นต้องใช้sudo)
diens

sudoไม่จำเป็นและควรใช้เท่าที่จำเป็น
Climbs_lika_Spyder


0

hdfs dfs -count <dir>

ข้อมูลจาก man page:

-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

-1

คำสั่งควรเป็น hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] ... : แสดงจำนวนพื้นที่เป็นไบต์ที่ใช้โดยไฟล์ที่ตรงกับรูปแบบไฟล์ที่ระบุ

  • -s : แทนที่จะแสดงขนาดของแต่ละไฟล์ที่ตรงกับ
    รูปแบบจะแสดงขนาดทั้งหมด (สรุป)

  • -h : จัดรูปแบบขนาดของไฟล์ตามแบบที่มนุษย์อ่านได้แทนที่จะเป็นจำนวนไบต์ (เช่น MB / GB / TB เป็นต้น)

    โปรดทราบว่าแม้จะไม่มีอ็อพชัน -s แต่จะแสดงเฉพาะขนาดสรุปที่ลึกลงไปในไดเรกทอรีหนึ่งระดับ

    ผลลัพธ์อยู่ในชื่อขนาดฟอร์ม (เส้นทางแบบเต็ม)


คำตอบที่ซ้ำกัน
mrsrinivas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.