← Về danh sách dự án

Dự án trọng tâm / 05

Big Data Pipeline trên Hadoop & Apache Spark

Xây dựng quy trình xử lý dữ liệu lớn và Machine Learning từ đầu đến cuối

Dự án trọng tâm5 phút đọc

Tóm tắt nhanh

Tổng quan dự án

Nội dung nghiên cứu

Vấn đề: dữ liệu lớn không tự nhiên sinh ra giá trị

Doanh nghiệp cần khai thác giá trị từ dữ liệu lớn để hỗ trợ ra quyết định, nhưng dữ liệu thường phân tán, chưa được làm sạch và khó xử lý bằng các công cụ truyền thống như Excel hay một database đơn lẻ. Project này là một bài toán tổng hợp toàn diện về Big Data, Data Engineering và Machine Learning — không chỉ tập trung vào mô hình dự đoán, mà đi qua toàn bộ vòng đời của một dự án dữ liệu thực tế: chọn dataset, làm sạch dữ liệu, khám phá dữ liệu, xây dựng đặc trưng, huấn luyện mô hình và rút ra Business Insight.

Nhóm triển khai môi trường HadoopApache Spark để lưu trữ, xử lý và phân tích dữ liệu ở quy mô lớn — xây dựng một pipeline xử lý dữ liệu trên nền tảng phân tán nhằm chuẩn hóa dữ liệu, khai thác thông tin và huấn luyện mô hình Machine Learning phục vụ phân tích và dự đoán.

Vai trò: Team Leader, vừa điều phối vừa trực tiếp code

Trong nhóm 3 thành viên, vai trò Team Leader không chỉ là phân công việc, mà là trực tiếp thực hiện phần lớn các bước kỹ thuật cốt lõi:

  • Phân công công việc và theo dõi tiến độ của nhóm
  • Nghiên cứu dataset và chuẩn bị dữ liệu
  • Nạp dữ liệu lên Hadoop HDFS
  • Đọc dữ liệu từ HDFS bằng Spark, thực hiện các nhóm truy vấn Spark SQL
  • Thực hiện Exploratory Data Analysis (EDA)
  • Tiền xử lý dữ liệu phục vụ Feature Selection và Machine Learning
  • Biên soạn báo cáo và thiết kế slide trình bày

Ngoài phạm vi được giao, còn chủ động nghiên cứu thêm về KafkaPowerShell, cùng các kỹ thuật EDA nằm ngoài nội dung được giảng dạy trên lớp.

Quá trình: khi vấn đề kỹ thuật khó nhất không nằm ở mô hình

Điều thú vị nhất của project này: phần khó nhất không phải là Machine Learning, mà là việc tự cài đặt và vận hành thành công môi trường Hadoop và Apache Spark. Trong quá trình triển khai, gặp khá nhiều khó khăn khi cấu hình Spark trên PyCharm do xung đột JDK. Sau nhiều lần thử nghiệm không thành công, quyết định chuyển sang chạy các file Python bằng Visual Studio Code kết hợp PowerShell để ổn định môi trường và tiếp tục phát triển — một quyết định kỹ thuật thực tế, không có trong giáo trình, nhưng cần thiết để dự án tiến tiếp.

Quy trình thực hiện đầy đủ một pipeline Big Data + ML:

  1. Lựa chọn và nghiên cứu dataset
  2. Cài đặt môi trường Hadoop và Spark
  3. Nạp dữ liệu vào Hadoop HDFS
  4. Đọc dữ liệu từ HDFS bằng Spark
  5. Thực hiện truy vấn bằng Spark SQL để khai thác dữ liệu ban đầu
  6. Làm sạch và tiền xử lý dữ liệu
  7. Thực hiện EDA để hiểu rõ phân bố và đặc điểm dữ liệu
  8. Lựa chọn đặc trưng (Feature Selection) phù hợp
  9. Huấn luyện và đánh giá mô hình Machine Learning
  10. Rút ra Business Insight từ kết quả phân tích
  11. Hoàn thiện báo cáo và trình bày

Phần Data Preprocessing cũng là nội dung dành nhiều thời gian nhất — đây là lần đầu thực sự hiểu rõ vì sao dữ liệu cần được làm sạch, chuẩn hóa và lựa chọn đặc trưng cẩn thận trước khi đưa vào Machine Learning, thay vì chỉ tập trung vào bước huấn luyện mô hình như nhiều bài tập khác.

Kết quả đạt được

  • Xây dựng thành công môi trường Hadoop và Apache Spark hoạt động ổn định
  • Hoàn thiện pipeline xử lý dữ liệu từ dữ liệu thô đến Machine Learning
  • Thực hiện Data Cleaning và Feature Engineering phục vụ huấn luyện mô hình
  • Áp dụng Spark SQL để truy vấn và khai thác dữ liệu ở quy mô lớn
  • Khai thác được Business Insight cụ thể từ kết quả phân tích
  • Hoàn thành dự án với điểm số tuyệt đối 10/10

Bài học lớn nhất

Đây là project kỹ thuật yêu thích nhất trong toàn bộ quá trình học đại học — không phải vì mô hình Machine Learning, mà vì lần đầu tiên tự cài đặt và vận hành thành công một môi trường Big Data thực sự. Quá trình debug môi trường, từ xung đột JDK đến việc chuyển công cụ phát triển, dạy được một kỹ năng quan trọng hơn cả code: khả năng giải quyết vấn đề khi mọi thứ không hoạt động như lý thuyết mô tả.

Bên cạnh đó, project giúp hình thành tư duy kết nối giữa Data Engineering, Data Analytics và Machine Learning như một chuỗi liên tục, thay vì xem từng phần là tách biệt.

Hạn chế

  • Môi trường triển khai sử dụng Single Node, nên chưa khai thác hết khả năng phân tán thực sự của Hadoop và Spark
  • Phần Streaming với Kafka mới dừng ở mức nghiên cứu và thử nghiệm cơ bản
  • Chưa triển khai trên môi trường Cloud hoặc Cluster thực tế
  • Chưa tối ưu hiệu năng cho dữ liệu ở quy mô rất lớn

Nếu làm lại

  • Triển khai Hadoop và Spark trên môi trường Multi-node Cluster để khai thác đúng bản chất phân tán
  • Mở rộng xử lý dữ liệu thời gian thực bằng Kafka và Spark Structured Streaming
  • Kết hợp Airflow để xây dựng pipeline ETL tự động
  • Tối ưu Spark bằng Partitioning, Caching và Broadcast Join
  • Triển khai trên nền tảng Cloud như AWS EMR hoặc Databricks
  • Xây dựng Dashboard trực quan để theo dõi toàn bộ pipeline và kết quả Machine Learning

Bắt đầu trò chuyện

Bạn có một câu hỏi đáng để cùng khám phá?

Tôi sẵn sàng trao đổi về các vị trí dữ liệu, cơ hội hợp tác chỉn chu và câu chuyện phía sau nghiên cứu này.

Liên hệ