Save Money with EMR Auto Scaling and Spot Instances

Bài tóm tắt Zillow 2017 2. Tăng trưởng Độ khó: Dễ

Zillow · 2017 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc

Bối cảnh

  • Hàng trăm job ETL batch (Spark, Hive, Sqoop) mỗi ngày, khối lượng đổi theo giờ; có lúc một mẻ tới 10 TB.
  • Mô hình S3 data lake: S3 thay HDFS, dựng cụm ETL/analytics/ML trỏ vào cùng dữ liệu trên S3, tức tách compute khỏi storage.

Thay đổi chính

  • Cụm EMR mặc định: 1 master, 5 core (dùng HDFS cục bộ, chủ yếu cho Sqoop ghi tạm trước khi đổi sang Parquet), task node không cần HDFS.
  • Scale out: core theo HDFS dùng ≥ 80%; task theo YARN memory còn ≤ 15%, app pending ≥ 2, container pending ≥ 75. Scale in chậm hơn: cooldown 30–60 phút (5 phút thì cụm vừa bớt node đã thêm lại).
  • Dùng Spot: giá trung bình 0,125 USD/giờ so với on-demand 0,40 và reserved 3 năm 0,18 (2017), lại chỉ trả khi cần.
  • Lỗi gặp phải: scale down "ở cuối giờ instance" giết node đang giữ shuffle output của Spark trên đĩa cục bộ, job crash; đổi sang terminate khi task xong.
  • Hạn chế: thêm node Spot mất 10–25 phút, job có thể chờ.

Vì sao

Bài học cho SWE

  • Scale in chậm hơn scale out để tránh dao động.
  • Node "stateless" chưa chắc stateless: Spark giữ shuffle trên đĩa cục bộ; scale down phải chờ task xong.
  • Autoscale phản ứng chậm vài chục phút; khối lượng biết trước thì nên scale trước.

Liên quan