The data platform cluster operator service for Hadoop cluster management

Bài tóm tắt Twitter 2023 3. Quy mô lớn Độ khó: Dễ

Twitter · 2023 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc

Bối cảnh

  • Twitter dùng Apache Hadoop bản gốc, không dùng giải pháp Hadoop enterprise, nên thiếu công cụ quản lý cụm chuẩn ở quy mô của họ.
  • SRE của Data Platform dành phần lớn thời gian cho việc vận hành cụm: thêm/bớt host, đáp ứng yêu cầu dung lượng, drain host trước khi gỡ, quản lý vòng đời host, giữ cụm khoẻ.

Thay đổi chính

  • Xây Data Platform Cluster Operator (DCO) bằng Python/Flask, sau load balancer; backend MySQL (có sharding nếu cần) lưu dữ liệu và metadata cụm.
  • Request được phân tích, lưu DB, chuyển cho workflow engine nội bộ chạy "plan" là chuỗi task trên từng host; mỗi task retry được một số lần, engine thử nhánh khác khi task lỗi. Engine callback cập nhật trạng thái job; nếu DCO không sẵn lúc callback thì có tiến trình poll định kỳ trạng thái plan.
  • Thư viện hadoop-admin chứa logic quản trị và chạy lệnh trên node.
  • Thêm host thành một bước: SRE đưa file danh sách host và biến cụm; DCO cài gói, sửa cấu hình, restart service; theo dõi bằng job ID. Gỡ host cũng một bước, kèm cài lại để sẵn cho cụm khác.
  • Lưu lịch sử cấp/thu hồi storage và compute (dùng cho chargeback); quản lý vòng đời keytab Kerberos của mọi node; tính năng bật theo feature flag đọc từ YAML của từng cụm.
  • DCO chạy riêng ở mỗi data center và không nằm trên đường dữ liệu (HDFS, YARN) nên SLO uptime không cần cao.

Vì sao

  • Theo Twitter: biến thao tác nhiều bước dễ sai thành một bước có theo dõi, giảm lỗi và thời gian của SRE.

Bài học cho SWE

  • Tự động hoá vận hành nên là service có trạng thái và job ID, chạy qua workflow engine có retry, không phải script rời (Tự động hoá vận hành và auto-remediation).
  • Callback + poll dự phòng tránh mất trạng thái khi chính công cụ điều khiển tạm chết.
  • Công cụ control plane đứng ngoài đường dữ liệu thì có thể có SLO thấp hơn hệ nó quản lý.

Liên quan