ฉันรู้จักdu -sh
ในระบบไฟล์ Linux ทั่วไป แต่จะทำอย่างไรกับ HDFS?
ฉันรู้จักdu -sh
ในระบบไฟล์ Linux ทั่วไป แต่จะทำอย่างไรกับ HDFS?
คำตอบ:
hadoop fs -du -s -h /path/to/dir
แสดงขนาดของไดเร็กทอรีในรูปแบบที่อ่านได้
hdfs -du -s -h /path/to/dir
จะเหมาะสมกว่า
ขยายไปยัง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 เมื่อเกิดข้อผิดพลาด
ด้วยสิ่งนี้คุณจะได้ขนาดเป็น GB
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $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
เพื่อให้ได้ขนาดของไดเร็กทอรีhdfs dfs -du -s -h / $ yourDirectoryNameสามารถใช้ได้ hdfs dfsadmin -report สามารถใช้เพื่อดูรายงานการจัดเก็บระดับคลัสเตอร์อย่างรวดเร็ว
% ของพื้นที่ที่ใช้บนคลัสเตอร์ Hadoop
sudo -u hdfs hadoop fs –df
ความจุภายใต้โฟลเดอร์เฉพาะ:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
(i ไม่จำเป็นต้องใช้sudo
)
sudo
ไม่จำเป็นและควรใช้เท่าที่จำเป็น
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
คำสั่งควรเป็น hadoop fs -du -s -h \dirPath
-du [-s] [-h] ... : แสดงจำนวนพื้นที่เป็นไบต์ที่ใช้โดยไฟล์ที่ตรงกับรูปแบบไฟล์ที่ระบุ
-s : แทนที่จะแสดงขนาดของแต่ละไฟล์ที่ตรงกับ
รูปแบบจะแสดงขนาดทั้งหมด (สรุป)
-h : จัดรูปแบบขนาดของไฟล์ตามแบบที่มนุษย์อ่านได้แทนที่จะเป็นจำนวนไบต์ (เช่น MB / GB / TB เป็นต้น)
โปรดทราบว่าแม้จะไม่มีอ็อพชัน -s แต่จะแสดงเฉพาะขนาดสรุปที่ลึกลงไปในไดเรกทอรีหนึ่งระดับ
ผลลัพธ์อยู่ในชื่อขนาดฟอร์ม (เส้นทางแบบเต็ม)