“Nó chạy được thì cứ để đó chạy thôi…”
Câu nói kinh điển mở đầu cho... một chuỗi tai họa.
🧪 All-purpose Compute – Người Bạn Thân Thuở Khởi Đầu
Nếu bạn là người mới tiếp cận Databricks, hẳn bạn từng yêu thích cảm giác:
-
Mở một notebook → chọn
All-purpose compute
→ chạy Spark code mượt mà. -
Không cần quan tâm cluster config.
-
Có giao diện đẹp, feedback realtime, mọi thứ “auto”.
Chính vì sự tiện lợi và linh hoạt, nhiều team chọn luôn All-purpose để chạy cả các job ETL production hàng ngày, thậm chí là batch pipelines quy mô lớn.
🚨 Nhưng Sự Tiện Lợi Luôn Có Giá Của Nó
Câu chuyện thực tế:
Trong một dự án mình từng triển khai, team đã:
-
Dùng chung 1 cluster All-purpose cho việc:
-
Chạy notebook cá nhân.
-
Chạy production job định kỳ qua
dbutils.notebook.run()
.
-
-
Không dùng Job compute, không có autologging chuẩn, không có cleanup.
Mọi thứ chạy ổn... cho đến khi không còn ổn nữa.
🧨 Chuyện Gì Đã Xảy Ra?
🚧 1. Log sinh ra quá nhiều
-
Mỗi job chạy tạo log trên DBFS (hoặc local driver).
-
Không có cleanup sau khi job chạy xong.
-
Notebook sử dụng
display()
,print()
rất nhiều → tạo gigabyte log mỗi ngày.
🗂️ Sau 2 tuần:
/driver/
chứa hơn 100K file.log
,.ipynb
,.html
,...
🔥 2. Driver bị “gãy” sau một đêm
Vào một sáng thứ Hai, job ETL quan trọng chạy lúc 2AM bị crash:
Driver node bị hết disk do:
-
Log file không được dọn.
-
Không tự restart lại như Job compute.
Hậu quả:
-
Job bị fail, dữ liệu không cập nhật.
-
Dev phải SSH vào cluster để dọn
/tmp
, restart compute.
🧠 Bài Học Rút Ra
❌ Đừng dùng All-purpose compute để chạy job hàng ngày hoặc production pipelines.
Vì sao?
Vấn đề | Hệ quả |
---|---|
Không tự tắt khi job xong | Tốn chi phí |
Không tự restart driver khi crash | Dễ chết job |
Không cleanup log | Hết disk |
Không gắn liền với job tracking | Khó trace lỗi |
Không versioned log hoặc MLFlow integration chuẩn | Không tái hiện job history |
✅ Cách Làm Đúng
Nhu cầu | Giải pháp |
---|---|
Chạy định kỳ | Dùng Job compute |
Chạy ETL lớn | Dùng Job với instance pool |
Giảm startup time | Dùng instance pools |
SQL tự động | Dùng SQL warehouse (serverless) |
Test và khám phá dữ liệu | ✅ Lúc này mới dùng All-purpose |
📌 Kết luận
All-purpose compute là công cụ tuyệt vời cho tương tác, khám phá, học tập. Nhưng đừng để sự tiện lợi đánh lừa bạn trong môi trường production.
Nếu bạn không cleanup, không giám sát log, và không tách riêng job pipelines – cái giá phải trả là những buổi sáng khủng hoảng khi driver gãy.
Bạn từng gặp trường hợp tương tự? Hãy chia sẻ câu chuyện của bạn cùng #DataEngineerVN nhé!