Dynamometer: Scale Testing HDFS on Minimal Hardware with Maximum Fidelity

Bài tóm tắt LinkedIn 2018 3. Quy mô lớn Độ khó: Khó

LinkedIn · 2018 · 3. Quy mô lớn · Độ khó: Khó — bài gốc

Bối cảnh

  • Tháng 3/2015: ngay sau khi thêm 500 máy vào cụm HDFS chính, thao tác chậm tới hai bậc độ lớn hoặc timeout, job dồn ứ. Gỡ máy ra không dễ vì chúng đã nhận dữ liệu. Nguyên nhân là một thay đổi khoảng 24 dòng trong bản phát hành upstream (HDFS-5837) làm tăng thời gian NameNode cấp block mới tỉ lệ với kích thước cụm, mà mọi thao tác namespace nằm dưới một khoá đọc-ghi; cụm lớn hơn vừa nhiều thao tác hơn vừa chậm hơn mỗi thao tác, nên tác động siêu tuyến tính.
  • Theo LinkedIn, release Apache không có bước test quy mô vì test quy mô đắt và nhiều dev không có cụm lớn. Cụm Hadoop của họ từ hàng trăm lên hàng nghìn node, hàng trăm nghìn ứng dụng mỗi ngày, nhu cầu gần gấp đôi mỗi năm.

Thay đổi chính

  • Thu bài toán về NameNode (giữ toàn bộ metadata, điểm nghẽn khi cụm lớn). Ba yếu tố: số DataNode, số và cấu trúc object (file, block), và workload client.
  • Dynamometer là ứng dụng YARN gồm ba phần:
    • Hạ tầng giả lập: một NameNode thật nạp FsImage của production; nhiều DataNode giả mỗi máy (SimulatedFSDataset, chỉ có metadata block, không có dữ liệu), nhận block theo FsImage đã chia.
    • Workload: phát lại audit log của NameNode production bằng job MapReduce chỉ có map, chia audit log theo IP nguồn để giữ thứ tự các request liên quan; có thể phát nhanh hơn để dự đoán tải tương lai.
    • Driver chạy cả bài test bằng một lệnh, quét được nhiều cấu hình.
  • Giả lập cụm hàng nghìn node bằng dưới 5% phần cứng production.
  • Đã dùng để: dự đoán NameNode Hadoop 2.6 tốn bộ nhớ hơn (đổi định dạng FsImage) và chỉnh heap/GC trước khi nâng cấp; xác nhận khoá không công bằng (non-fair) cải thiện throughput mà không hại latency ghi, rồi thấy đúng như dự đoán trên production; tune G1GC cho NameNode; kiểm không hồi quy cho bản 2.7.4.

Vì sao

  • Lỗi quy mô chỉ hiện ở quy mô thật và workload thật; benchmark tổng hợp (NNThroughputBenchmark, TestDFSIO, SLG) không tái hiện được namespace và chuỗi thao tác của production.

Bài học cho SWE

  • Khi điểm nghẽn là một thành phần trung tâm, giả lập đúng thành phần đó với metadata và workload thật, còn phần còn lại làm giả rẻ.
  • Phát lại audit log là cách có workload thật mà không cần người dùng thật làm chuột bạch.
  • Mở rộng cụm cũng là một thay đổi rủi ro cần test, nhất là khi chi phí thao tác tăng theo kích thước cụm.

Liên quan