Design a Distributed Batch Compute System
par Trần Quốc Huy
1. Introduction
1.1. Bài toán xử lý dữ liệu lớn với hệ thống phân tán
1.2. Tầm quan trọng: hiệu suất, độ tin cậy, khả năng mở rộng
2. Requirements
2.1. Functional
2.1.1. Framework xử lý tập dữ liệu lớn ở quy mô lớn
2.1.2. Cung cấp cả storage và processing
2.2. Non-Functional
2.2.1. Fault-tolerant (chịu lỗi phần cứng, mạng)
2.2.2. Data locality (xử lý tại nơi chứa dữ liệu)
2.2.3. Scalability: mở rộng đến hàng ngàn node, hàng TB dữ liệu
3. Example Workload
3.1. Xử lý log web 30 ngày (3TB)
3.2. Bài toán: thống kê top 100 IP mỗi ngày
4. Distributing the Workload
4.1. Chia nhỏ dữ liệu thành block (ví dụ: 256MB)
4.2. Gán các block cho node xử lý riêng biệt
4.3. Xử lý song song → tăng tốc độ
5. Distributed Storage
5.1. HDFS
5.1.1. Chia nhỏ file thành block
5.1.2. Replication: lưu nhiều bản trên node khác nhau
5.1.3. Metadata do NameNode quản lý
5.2. Fault Tolerance
5.2.1. Node chết: dùng bản sao từ node khác
5.2.2. Dữ liệu không bị mất