Real-time Analytics at Massive Scale with Pinot

Bài tóm tắt LinkedIn 2014 3. Quy mô lớn Độ khó: Trung bình

LinkedIn · 2014 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Bối cảnh

  • Khoảng 2012, các sản phẩm phân tích chạy trên Oracle và Voldemort, không hợp với OLAP; dữ liệu tăng theo cả chiều rộng lẫn chiều sâu. Ví dụ Jobs Analytics: xử lý và nén trên Hadoop rồi đẩy lại vào Oracle, nên không gần realtime; phải cắt bớt dimension; cron hằng ngày xoá bản ghi cũ.

Thay đổi chính

  • Pinot: kho phân tán dạng cột, thêm được loại index mới, nén riêng cho từng dimension khó (hàng trăm kỹ năng mỗi member, nhóm, công ty đang theo dõi).
  • Quản lý cụm bằng Helix; ingest gần realtime từ Kafka, Hadoop cho bootstrap và đối soát.
  • Dữ liệu chia segment theo thời gian nên hết hạn dữ liệu chỉ là bỏ segment.
  • Làm lặp khoảng tám tháng trước khi có sản phẩm đầu tiên.

Kết quả (2014)

  • Who's Viewed Your Profile (bản mới đầu 2014): hàng nghìn request với SLA vài chục ms. Pinot phục vụ 18 sản phẩm phân tích cho member và hơn 15 sản phẩm nội bộ (gồm phân tích A/B test).

Bài học cho SWE

  • Phân tích cho người dùng cuối (QPS cao, độ trễ thấp, nhiều dimension) là workload riêng, không nên đặt lên OLTP hay KV.
  • Ingest stream + batch đối soát cho phép vừa tươi vừa sửa được.

Liên quan