Chào bạn, lại là Kiyoshi đây.
Lần này, tôi muốn nói chút về dung lượng của thư mục tạm thời của Glue (Python Shell).
Thông Tin Về Glue (Python Shell)
Đối với Glue (Python Shell), trang web này cung cấp thông tin sau:
DPU được sử dụng để đo lường khả năng xử lý tương đối và bao gồm hiệu suất tính toán của 4 vCPU và 16GB bộ nhớ. Để biết thêm thông tin chi tiết, vui lòng tham khảo Giá của AWS Glue.
Giá trị có thể được đặt là 0.0625 hoặc 1. Giá trị mặc định là 0.0625.
Trong cả hai trường hợp, ổ đĩa cục bộ của instans sẽ là 20GB.
Thực Nghiệm
Tạo một tệp tin tạm thời lớn
Vì ổ đĩa cục bộ của máy instans là 20GB không phụ thuộc vào DPU, tôi sẽ thực hiện công việc sau để ghi một tệp tin khoảng 18GB vào thư mục /tmp
:
test-glue-job.py
import os
import tempfile
file_size_bytes = 18 * 1000 * 1000 * 1000
chunk_size_bytes = 1000 * 1000 * 1000
print("start!")
tmp_dir = tempfile.gettempdir()
with open(os.path.join(tmp_dir, "tmp.txt"), "wb") as f:
bytes_written = 0
bytes_written = 0
# Ghi dữ liệu vào từng phần khoảng 1GB
while bytes_written < file_size_bytes:
data = os.urandom(min(chunk_size_bytes, file_size_bytes - bytes_written))
f.write(data)
bytes_written += len(data)
print("finish!")
Kết quả của việc thực hiện trên là gặp lỗi sau:
OSError: [Errno 28] No space left on device
Dường như không có đủ không gian trống để ghi một tệp tin 18GB.
Kiểm Tra Dung Lượng Ổ Đĩa
Tôi sẽ thực hiện công việc sau để kiểm tra dung lượng ổ đĩa:
test-glue-job-2.py
import subprocess
cp = subprocess.run("df -h", shell=True, capture_output=True, text=True)
print(cp.stdout)
Kết quả cho thấy:
Filesystem Size Used Avail Use% Mounted on
overlay 20G 6.1G 14G 32% /
tmpfs 64M 0 64M 0% /dev
tmpfs 474M 0 474M 0% /sys/fs/cgroup
/dev/nvme0n1p1 20G 6.1G 14G 32% /connection
shm 64M 0 64M 0% /dev/shm
tmpfs 474M 0 474M 0% /proc/acpi
tmpfs 474M 0 474M 0% /sys/firmware
Như có thể thấy, ổ đĩa cục bộ có dung lượng 20GB, nhưng không phải toàn bộ 20GB đó đều có thể sử dụng (điều này là dễ hiểu).
Tiếp theo, tôi sẽ tạo một tệp tin tạm thời 10GB và kiểm tra dung lượng thư mục /tmp
:
test-glue-job-3.py
import os
import subprocess
import sys
import tempfile
file_size_bytes = 10 * 1000 * 1000 * 1000
chunk_size_bytes = 1000 * 1000 * 1000
print("start!")
tmp_dir = tempfile.gettempdir()
with open(os.path.join(tmp_dir, "tmp.txt"), "wb") as f:
bytes_written = 0
# Ghi dữ liệu vào từng phần khoảng 1GB
while bytes_written < file_size_bytes:
data = os.urandom(min(chunk_size_bytes, file_size_bytes - bytes_written))
f.write(data)
bytes_written += len(data)
cp = subprocess.run("df -h /tmp", shell=True, capture_output=True, text=True)
print(cp.stdout)
print("finish!")
Kết quả cho thấy:
start!
Filesystem Size Used Avail Use% Mounted on
overlay 20G 16G 4.1G 79% /
finish!
Sau khi ghi tệp tin 10GB, dung lượng còn lại khoảng 4.1GB.
Hãy luôn nhớ tới toàn bộ dung lượng của ổ đĩa khi ghi vào thư mục tạm thời.
Kết Luận
Đây là những gì tôi đã tìm hiểu về dung lượng của thư mục tạm thời của Glue (Python Shell).
Hy vọng rằng điều này sẽ hữu ích cho bạn.
Bình luận