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
- Dữ liệu nằm trên S3 nên compute có thể co giãn và dùng máy rẻ, bỏ đi được (Tách compute khỏi storage, Chi phí hạ tầng và build vs buy).
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
#EMR auto scaling#Spot instances#S3 data lake#core vs task nodes#scale-in cooldown#Spark shuffle on local disk#terminate at task completion#Sqoop to Parquet
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)