Building a Pipeline to Process Clickstream Data
Bài tóm tắt Zillow 2018 3. Quy mô lớn Độ khó: Trung bình
Zillow · 2018 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Clickstream là một trong những dataset lớn nhất: gần một tỷ event/ngày, dataset lớn nhất khoảng 2 TB/ngày chưa nén, bảng rộng nhất khoảng 700 cột (2018). Dùng cho dashboard, cá nhân hoá, gợi ý, ML.
Thay đổi chính
Bốn phiên bản:
- V1: tải JSON về máy, C# .NET chuyển sang CSV (làm phẳng, tính cột), upload S3,
COPYvào Redshift. Lịch bằng SSIS/SQL Server Agent. - V2: dữ liệu tăng, gộp ba bước đầu thành đọc–biến đổi–ghi trong bộ nhớ, 8 luồng song song.
- V3: Hadoop MapReduce (Java) thay .NET, cụm 100 node dựng lên rồi tắt mỗi lần chạy; lịch bằng PowerShell + SQL Server. Code dùng lớp trừu tượng theo version ETL để sửa chung.
- V4 (2017–2018): xuất JSON về "raw data lake" trên S3, Spark trên EMR chuyển sang Parquet vào data lake; Airflow thay lịch cũ; bảng Hive trên S3 thay bảng Redshift; Hive Metastore để trên RDS cho mọi cụm dùng chung. Mỗi dataset một SubDAG; tối đa 4 dataset chạy cùng lúc và hai dataset lớn không bao giờ chạy cùng nhau (pool 1 slot). Cấu hình bằng YAML. Đổi UDF từ Python sang Scala và bỏ
explode+ join để giảm shuffle. - Kết quả: ETL từ vài giờ xuống khoảng 30 phút. Vẫn chạy song song Redshift và data lake vì nhiều báo cáo và người dùng còn trên Redshift; có bảng phụ lọc sẵn theo dataset để query cũ dễ chuyển.
Vì sao
- Mỗi lần dữ liệu tăng, nút thắt dời từ I/O máy đơn sang song song trong máy, rồi sang cụm phân tán (Pipeline dữ liệu và analytics).
- Lưu trên S3 + metastore dùng chung cho phép dựng và tắt cụm theo job (Tách compute khỏi storage); giữ hệ cũ chạy song song cho người dùng chuyển dần (Migration không downtime).
Bài học cho SWE
- Kể lại lịch sử phiên bản của một pipeline cho thấy mỗi bước chỉ giải nút thắt kế tiếp, không nhảy thẳng tới kiến trúc cuối.
- Retry từ bước lỗi (thay vì chạy lại cả pipeline) là lý do chính để tách task trong orchestrator.
- Khi dời kho dữ liệu, cho người dùng bảng có giao diện giống cũ.
Liên quan
#Clickstream ETL#Redshift COPY#C# .NET multithreading#Hadoop MapReduce#Spark on EMR#Airflow SubDAG#Parquet#Hive Metastore on RDS#S3 data lake#Redshift and lake in parallel
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (4)