Big Data Processing có một đặc sản mà ít môn nào có: rubric của assignment ghi thẳng band 0 điểm là gì. Không chạy được trên AWS EMR: 0 điểm cho task đó, bất kể code bạn hay cỡ nào trên máy cá nhân. Môn này không chấm ý tưởng, nó chấm những gì thực sự chạy trên cluster. Bài này đi theo spec thật của A1 2024 và A2 2023 để bạn thấy từng chỗ điểm rơi.
Spec dưới đây thuộc bản phát cho mã COSC2637/2633 các kỳ 2023, 2024. Cấu trúc các kỳ gần đây xoay quanh 4 assessment mỗi cái 25%. Kỳ của bạn ở Việt Nam có thể chỉnh chi tiết, đối chiếu Canvas trước khi làm.
A1 Taxi Trip Statistics: 25 điểm, 3 task, và 3 luật sống còn
Đề cho hai file Trips.txt và Taxis.txt nằm sẵn trên HDFS, và ba luật viết bằng chữ in trong spec:
- Chỉ được viết MapReduce bằng Python qua Hadoop Streaming. Nộp Java hay dùng thư viện mrjob là 0 điểm tự động, spec ghi nguyên văn.
- Phải chạy được trên AWS EMR, không phải trên laptop. Người chấm được quyền test với dataset lớn hơn dataset phát cho bạn.
- Code phải chạy đúng với 3 reducer. Đây là bẫy lớn nhất: code chạy đúng với 1 reducer nhưng sai với 3 reducer nghĩa là bạn chưa hiểu partitioning, và đề cố tình kiểm tra đúng chỗ đó.
Ba task và phân bổ điểm
- Task 1 (5 điểm): thống kê theo từng taxi và từng loại chuyến (long từ 200 trở lên, medium 100 đến dưới 200, short dưới 100): đếm chuyến, fare cao nhất, thấp nhất, trung bình. Yêu cầu kỹ thuật ẩn: dùng in-mapper combining để giảm dữ liệu đổ qua network, làm đúng kỹ thuật này là thứ tách band điểm cao.
- Task 2 (10 điểm): phân cụm điểm trả khách bằng k-medoid PAM, trong đó k và ngưỡng hội tụ v đọc từ file initialization.txt chứ không hardcode. Hardcode tham số là tự nộp mạng cho người chấm khi họ đổi file init.
- Task 3 (10 điểm): join hai file, đếm số chuyến theo công ty, sắp xếp tăng dần, bắt buộc triển khai thành 3 job MapReduce nối chuỗi (join, count, sort) gọi từ một script Task3-run.sh. Spec cấm luôn đường tắt: copy dữ liệu về máy local để xử lý là phạm luật.
Rubric từng band, nguyên văn tinh thần của spec
Mỗi task chấm theo thang: 0 điểm nếu không chạy trên EMR, không ra output, hoặc dính nhiều hơn một lỗi logic lớn. Band thấp: một lỗi logic lớn. Band giữa: nhiều hơn một lỗi nhỏ. Band cao: đúng một lỗi nhỏ. Điểm tối đa: output đúng, không lỗi code hay script, và comment 'ngắn gọn, rõ ràng'. Để ý chữ cuối: comment sạch là tiêu chí ăn điểm tối đa được ghi hẳn vào rubric, không phải chuyện trang trí.
Luật hình thức: chỗ mất điểm ngớ ngẩn nhất
Cấu trúc thư mục HDFS phân biệt hoa thường (/Input/, /Output/Task1 đến Task3). File nộp phải là zip đặt tên đúng dạng s1234567_BDP_A1.zip, kèm một file PDF chứa toàn bộ code để quét Turnitin, thiếu PDF này là bài không được chấm. Spec cho phép trừ tới 10 điểm lỗi format và 5 điểm lỗi chức năng phụ. Trên bài 25 điểm, nghĩa là bạn có thể mất 40% số điểm mà chưa hề sai một dòng logic nào.
A2 Apache Pig: dịch SQL và tự học UDF
Spec A2 2023 dùng database bán sách với hai file cust_order.csv và order_line.csv:
- Task 1 (15 điểm): viết Pig script tái tạo đúng một query SQL cho sẵn: số đơn, số sách, tổng tiền theo ngày, sắp theo tổng tiền giảm dần, và output phải khớp đúng format với kết quả tham chiếu chạy trên MySQL. Rubric soi từng operator: thiếu group by, order by, join hay foreach là trừ theo mục.
- Task 2 (10 điểm): viết Python UDF cho Pig, gắn thêm cột phân loại high, medium, low theo ngưỡng 300 và 100. Spec nói thẳng phần UDF là tự nghiên cứu từ tài liệu pig.apache.org, không dạy trên lớp. Đây là bài test khả năng đọc docs, một kỹ năng được chấm điểm thật.
Band điểm tối đa của A2 lặp lại đúng công thức của A1: 'output đúng, comment và readme rõ ràng, ngắn gọn'. Hai spec khác nhau, một tiêu chí lặp lại, bạn nên hiểu đó là thông điệp.
Chiến lược làm bài không sập
- Viết mapper và reducer chạy thử bằng pipe local trước (cat Trips.txt | python mapper.py | sort | python reducer.py), nhưng đừng dừng ở đó: đưa lên EMR sớm ít nhất một tuần trước deadline, vì lỗi trên cluster (đường dẫn, quyền, phiên bản Python) không giống lỗi local.
- Test với 3 reducer ngay từ Task 1. Nếu kết quả đổi khi tăng reducer, bạn đang gộp dữ liệu ở chỗ sai.
- Giữ một file ghi chú các lệnh chạy job. Task 3 cần script nối 3 job, và script đó viết dễ hơn nhiều khi bạn đã ghi lại lệnh từ đầu.
- Trước khi nộp: kiểm tên zip, kiểm PDF code cho Turnitin, kiểm hoa thường đường dẫn HDFS. Ba phút kiểm tra đổi lấy tối đa 10 điểm format.
Về vụ PDF code và Turnitin: code cũng bị so trùng như essay. Ranh giới thảo luận và chép code tụi mình viết kỹ trong bài Turnitin bao nhiêu phần trăm là đạt, tinh thần áp dụng cho MapReduce y hệt.
Nếu bạn viết xong mà chưa chắc code sống nổi qua 3 reducer, hay muốn một người soi logic join và comment trước khi nộp, tụi mình nhận review theo đúng rubric band của spec. Chi tiết ở bảng báo giá của 7 Writing Service nhé.
Câu hỏi thường gặp
Chưa từng dùng AWS thì bắt đầu từ đâu?
Dựng EMR cluster theo hướng dẫn lab của môn ngay tuần đầu có assignment, chạy thử một job word count trước khi đụng vào đề. Chi phí và thời gian khởi động cluster là thứ khiến nhiều bạn lùi việc test lên EMR đến sát deadline, và đó là con đường thẳng đến band 0 điểm.
Code chạy đúng local nhưng sai trên EMR, lỗi thường ở đâu?
Ba nghi phạm quen mặt: sort mặc định của Hadoop Streaming xử lý key dạng chuỗi chứ không phải số, phân phối key qua nhiều reducer khiến logic gộp toàn cục bị vỡ, và đường dẫn file init hay input viết cứng theo máy local. Soi ba chỗ đó trước khi nghi ngờ thuật toán.
Có được dùng Spark thay MapReduce cho A1 không?
Không, khi spec đã chỉ định Hadoop Streaming bằng Python. Spark xuất hiện ở assessment khác của môn (các kỳ gần đây có bài Spark Problem Solving riêng). Dùng sai công cụ ở A1 rơi thẳng vào band 0 vì không đúng yêu cầu chạy.
Cần hỗ trợ 1-1 cho môn này? Xem bảng giá và quy trình nhận hỗ trợ của 7 Writing Service.