Cả hai đều xử lý phân tán theo tư tưởng map → gom theo key → reduce. Khác biệt lớn nhất nằm ở chỗ lưu kết quả trung gian.
| Hadoop MapReduce | Spark | |
|---|---|---|
| Kết quả trung gian | Ghi xuống HDFS sau mỗi job | Giữ trong bộ nhớ, chỉ ghi đĩa khi shuffle hoặc thiếu RAM |
| Mô hình | Mỗi job đúng 2 pha map + reduce; nhiều bước = chuỗi nhiều job | Một DAG nhiều stage, optimizer nhìn cả chuỗi |
| API | Java, viết Mapper/Reducer | DataFrame/SQL; Python, Scala, Java, R |
| Thuật toán lặp (ML, graph) | Chậm: mỗi vòng đọc và ghi lại HDFS | Cache dữ liệu và lặp trong RAM |
| Streaming | Không có | Structured Streaming |
Vì sao nhanh hơn: thuật toán 10 vòng lặp trên MapReduce là 10 job, mỗi job đọc rồi ghi lại HDFS (kèm replication). Spark đọc một lần, cache, lặp trong bộ nhớ. Thêm Catalyst tối ưu kế hoạch và việc đọc định dạng cột như Parquet.
Điểm chung: Spark vẫn có shuffle giống pha shuffle của MapReduce, và chạy được trên YARN, đọc HDFS. Spark thay engine tính toán, không thay HDFS hay YARN.
Lưu ý: con số "Spark nhanh hơn 100 lần" đúng cho bài toán lặp trên dữ liệu vừa RAM. Job ETL quét dữ liệu lớn một lượt thì chênh lệch nhỏ hơn nhiều; nói rõ điều kiện này khi trả lời sẽ thuyết phục hơn.