Required: Máy cần cài đặt sẵn Docker. Cấu hình máy cần RAM >= 8GB. Môi trường thử nghiệm: Window 11
B1: Clone repo và truy cập vào thư mục
B2: Chạy câu lệnh để pull docker images cần thiết cho bài thực hành
docker compose -f docker-compose.zk-kafka.yml pull
Yêu cầu
- Triển khai Kafka Cluster theo 2 mode Zookeeper hoặc Kraft
- Hiểu được mô hình hoạt động của cả 2 mô hình
- Hiểu được các cấu hình cơ bản của Kafka Cluster
Dựng cụm Kafka với Zookeeper
Mô hình triển khai
B1: Chạy lệnh docker compose
docker compose -f docker-compose.zk-kafka.yml -p vdt-kafka-zk up -d
Các cấu hình của Kafka Broker xem tại đây
B2: Truy cập vào link Kafka UI sẽ thấy kết quả như hình
Dựng cụm Kafka với Kraft
Mô hình triển khai
docker compose -f docker-compose.zk-kafka.yml -p vdt-kafka-zk down
docker compose -f docker-compose.zkless-kafka.yml -p vdt-kafka-zkless up -d
Các cấu hình của Kafka Broker xem tại đây
Yêu cầu
- Code Producer cơ bản bằng Java để đẩy dữ liệu từ file CSV vào Kafka
- Hiểu cách hoạt động và các cấu hình cơ bản của Producer
B1: Khởi tạo project ở thư mục csv2kafka
B2: Chạy hàm main ở file Producer.java. Kết quả được trả ra đúng sẽ như hình dưới:
B3: Truy cập Kafka UI để kiểm tra kết quả message
Mục đích: Thử nghiệm code consumer lấy dữ liệu topic orders và in ra màn hình. Yêu cầu cần hiểu được cách tạo 1 consumer cơ bản và luồng đọc dữ liệu vào Kafka
B1: Khởi tạo project ở thư mục demo
B2: Chạy hàm main ở file VdtConsumer.java. Kết quả được trả ra đúng sẽ như hình dưới
Mục đích: Tạo được Connectors để lấy dữ liệu từ file orders và đẩy vào topics connect-orders. Yêu cầu cần hiểu được các cấu hình để tạo connector source và thử nghiệm chạy Kafka connect distributed mode.
-
B1: Download Connector Plugin
-
B2: Giải nén các connector vào thư mục connectors
-
B3: Kiểm tra plugin của Kafka Connect
curl -s localhost:8083/connector-plugins|jq '.[].class'|egrep 'SpoolDir'
Thông tin hiển thị đúng sẽ là:
"com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector"
"com.github.jcustenborder.kafka.connect.spooldir.SpoolDirJsonSourceConnector"
"com.github.jcustenborder.kafka.connect.spooldir.SpoolDirLineDelimitedSourceConnector"
"com.github.jcustenborder.kafka.connect.spooldir.SpoolDirSchemaLessJsonSourceConnector"
"com.github.jcustenborder.kafka.connect.spooldir.elf.SpoolDirELFSourceConnector"
- B4: Tạo Kafka Connect với cấu hình
curl -i -X PUT -H "Accept:application/json" \
-H "Content-Type:application/json" http://localhost:8083/connectors/source-csv-spooldir-00/config \
-d '{
"connector.class": "com.github.jcustenborder.kafka.connect.spooldir.SpoolDirCsvSourceConnector",
"topic": "connect-orders",
"input.path": "/data/unprocessed",
"finished.path": "/data/processed",
"error.path": "/data/error",
"input.file.pattern": ".*\\.csv",
"schema.generation.enabled":"true",
"csv.first.row.as.header":"true"
}'
- B5: Bổ sung cấu hình nhiều task
Mục đích: Thử nghiệm Kafka Streaming và Confluent Kafka Cloud
Hướng dẫn: Link