Docker Lab

Dựng Spark Lab bằng Docker

Môi trường học PySpark hoàn chỉnh chạy ngay trên máy: cụm Spark (master + worker) để hiểu kiến trúc, JupyterLab để viết code, dữ liệu mẫu có sẵn, và nối được vào Kafka khi học Streaming.

Lab gồm những gì
3 service Docker trên cùng network
ServiceImageVai trò
spark-masterbitnami/sparkMaster của cụm standalone — điều phối job, hiện ở Spark Master UI
spark-workerbitnami/sparkWorker chạy executor — nơi task thực sự xử lý dữ liệu
jupyterjupyter/pyspark-notebookNơi bạn viết PySpark (mặc định chạy local[*])
Lưu ý: notebook mặc định chạy Spark ở chế độ local[*] (đủ học mọi khái niệm, kể cả streaming). Cụm master/worker dùng để nhìn thấy kiến trúc phân tán và submit job qua Spark UI.
Khởi động
Một lệnh là chạy
# vào thư mục lab
cd ~/Downloads/spark-lab
# kéo image + khởi động (lần đầu hơi lâu, ~2-3GB)
docker compose up -d

Sau đó mở các UI:

Thành phầnURLGhi chú
JupyterLablocalhost:8888Token đăng nhập: spark
Spark Master UIlocalhost:8082Xem worker & ứng dụng đang chạy
Spark Worker UIlocalhost:8084Tài nguyên của worker
Spark App UIlocalhost:4040Chỉ hiện khi đang có job chạy

Vào Jupyter → mở work/notebooks/01_basics.ipynb và chạy từng cell bằng Shift + Enter.

Tắt lab: docker compose down — dữ liệu nằm trong folder data/ nên không mất.
Cấu trúc thư mục
~/Downloads/spark-lab
Cấu trúc thư mục spark-lab Scroll / zoom · Mở draw.io ↗
Dữ liệu mẫu
Trong folder data/
FileMô tả
sales.csv50.000 giao dịch bán hàng — cố tình có vài dòng bẩn (qty âm) để học làm sạch dữ liệu
customers.json1.000 khách hàng — dùng để học join
events.jsonl10.000 event log, mỗi dòng 1 JSON (JSON-lines) — học đọc dữ liệu bán cấu trúc

Sinh lại data bất cứ lúc nào: python data/gen_data.py

Nối Kafka cho bài Streaming
Bài 5

Bài Streaming đọc dữ liệu trực tiếp từ Kafka của cdc-lab. Cần bật cdc-lab trước (để có network cdc-net), rồi khởi động spark-lab kèm file override:

# 1. bật cdc-lab
cd ~/Downloads/cdc-lab && docker compose up -d

# 2. bật spark-lab + nối vào cdc-net
cd ~/Downloads/spark-lab
docker compose -f docker-compose.yml -f docker-compose.kafka.yml up -d

Trong notebook dùng bootstrap server kafka:9092.

Nếu Docker engine treo: restart Docker Desktop (chuột phải icon → Restart). Nếu vẫn kẹt, chạy wsl --shutdown trong PowerShell rồi mở lại Docker Desktop.
← Quay lại
Tổng quan Spark