Cách cài đặt Apache Kafka trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Apache Kafka là kho lưu trữ dữ liệu phân tán để xử lý dữ liệu phát trực tuyến theo thời gian thực. Apache Kafka được phát triển bởi Apache Software Foundation và được viết bằng Java và Scala. Apache Kafka được sử dụng để xây dựng các đường ống dữ liệu phát trực tuyến theo thời gian thực và các ứng dụng thích ứng với luồng dữ liệu, đặc biệt là đối với các ứng dụng cấp doanh nghiệp và các ứng dụng quan trọng. Đây là một trong những nền tảng luồng dữ liệu phổ biến nhất được hàng nghìn công ty sử dụng cho các đường ống dữ liệu hiệu suất cao, phân tích phát trực tuyến và tích hợp dữ liệu.

Apache Kafka kết hợp nhắn tin, lưu trữ và xử lý luồng tại một nơi. Cho phép người dùng thiết lập luồng dữ liệu mạnh mẽ và hiệu suất cao để thu thập, xử lý và phát trực tuyến dữ liệu theo thời gian thực. Nó được sử dụng trong các ứng dụng phân tán hiện đại với khả năng mở rộng để xử lý hàng tỷ sự kiện phát trực tuyến.

Trong hướng dẫn này, bạn sẽ cài đặt Apache Kafka trên máy chủ Ubuntu 22.04. Bạn sẽ học cách cài đặt Apache Kafka theo cách thủ công từ các gói nhị phân, bao gồm cấu hình cơ bản để Apache chạy dưới dạng dịch vụ và thao tác cơ bản khi sử dụng Apache Kafka.

Điều kiện tiên quyết​

Để hoàn thành hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Máy chủ Ubuntu 22.04 có ít nhất 2GB hoặc 4GB bộ nhớ.
  • Người dùng không phải root có quyền root/quản trị viên.

Cài đặt Java OpenJDK​

Apache Kafka là một trình xử lý luồng và message broker được viết bằng Scala và Java. Để cài đặt Kafka, bạn sẽ cài đặt Java OpenJDK trên hệ thống Ubuntu của mình Tại thời điểm viết bài này, phiên bản mới nhất của Kafka v3.2 yêu cầu ít nhất Java OpenJDK v11, có sẵn theo mặc định trên kho lưu trữ Ubuntu.

Để bắt đầu, hãy chạy lệnh apt bên dưới để cập nhật kho lưu trữ Ubuntu và làm mới chỉ mục gói.
Mã:
sudo apt update
Cài đặt Java OpenJDK 11 bằng lệnh apt bên dưới. Nhập Y để xác nhận cài đặt và nhấn ENTER, quá trình cài đặt sẽ bắt đầu.
Mã:
sudo apt install default-jdk
Java OpenJDK hiện đã được cài đặt trên hệ thống Ubuntu của bạn. Sử dụng lệnh java sau để kiểm tra và xác minh phiên bản java. Bạn sẽ thấy java OpenJDK v11 được cài đặt.
Mã:
phiên bản java

Cài đặt Apache Kafka​

Sau khi cài đặt Java OpenJDK, bạn sẽ bắt đầu cài đặt Apache Kafka theo cách thủ công bằng cách sử dụng gói nhị phân. Tại thời điểm viết bài này, phiên bản mới nhất của Apache Kafka là v3.2. Để cài đặt phiên bản này, bạn sẽ tạo một người dùng hệ thống mới và tải xuống gói nhị phân Kafka.

Chạy lệnh sau để tạo một người dùng hệ thống mới có tên "kafka". Người dùng này sẽ có thư mục home mặc định "/opt/kafka" và vô hiệu hóa quyền truy cập shell.
Mã:
sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka
Tải xuống gói nhị phân Apache Kafka bằng lệnh curl bên dưới. Bạn sẽ nhận được gói Apache Kafka "kafka_2.13-3.2.0.tgz".
Mã:
sudo curl -fsSLo kafka.tgz https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
Sau khi tải xuống hoàn tất, hãy giải nén tệp "kafka_2.13-3.2.0.tgz" bằng lệnh tar. Sau đó, di chuyển thư mục đã giải nén đến "/opt/kafka".
Mã:
tar -xzf kafka.tgz
sudo mv kafka_2.13-3.2.0 /opt/kafka
Bây giờ hãy thay đổi quyền sở hữu thư mục cài đặt Kafka "/opt/kafka" thành người dùng "kafka".
Mã:
sudo chown -R kafka:kafka /opt/kafka
Tiếp theo, hãy chạy lệnh sau để tạo một thư mục mới "logs" để lưu trữ các tệp nhật ký Apache kafka. Sau đó, chỉnh sửa tệp cấu hình Kafka "/opt/kafka/config/server.properties" bằng trình soạn thảo nano.
Mã:
sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties
Thay đổi vị trí mặc định cho nhật ký Apache Kafka thành thư mục "/opt/kafka/logs".
Mã:
# cấu hình nhật ký cho Apache Kafka
log.dirs=/opt/kafka/logs
Lưu và đóng tệp khi bạn hoàn tất.

Thiết lập Apache Kafka dưới dạng Dịch vụ​

Tại thời điểm này, bạn đã có cấu hình cơ bản cho Apache Kafka. Bây giờ làm thế nào để chạy Apache Kafka trên hệ thống của bạn? Cách được khuyến nghị ở đây là chạy Apache Kafka dưới dạng dịch vụ systemd. Điều này cho phép bạn bắt đầu, dừng và khởi động lại Apache Kafka bằng một dòng lệnh duy nhất "systemctl".

Để thiết lập dịch vụ Apache Kafka, trước tiên bạn cần thiết lập dịch vụ Zookeeper. Apache Zookeeper ở đây được sử dụng để tập trung các dịch vụ và duy trì bầu cử bộ điều khiển, cấu hình chủ đề, danh sách kiểm soát truy cập (ACL) và tư cách thành viên (cho cụm Kafka).

Zookeeper được bao gồm theo mặc định trên Apache Kafka. Bạn sẽ thiết lập tệp dịch vụ cho Zookeeper, sau đó tạo một tệp dịch vụ khác cho Kafka.

Chạy lệnh sau để tạo tệp dịch vụ systemd mới "/etc/systemd/system/zookeeper.service" cho Zookeeper.
Mã:
sudo nano /etc/systemd/system/zookeeper.service
Thêm cấu hình sau vào tệp.
Mã:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Cài đặt]
WantedBy=multi-user.target
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Tiếp theo, tạo tệp dịch vụ mới cho Apache Kafka "/etc/systemd/system/kafka.service" bằng lệnh bên dưới.
Mã:
sudo nano /etc/systemd/system/kafka.service
Thêm cấu hình sau vào tệp. Dịch vụ Kafka này sẽ chỉ chạy nếu dịch vụ Zookeeper đang chạy.
Mã:
[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
Lưu và đóng tệp khi bạn hoàn tất.

Bây giờ hãy tải lại trình quản lý systemd bằng lệnh bên dưới. Lệnh này sẽ áp dụng các dịch vụ systemd mới mà bạn vừa tạo.
Mã:
sudo systemctl daemon-reload


Bây giờ hãy khởi động và kích hoạt dịch vụ Zookeeper bằng lệnh bên dưới.
Mã:
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
Sau đó, hãy khởi động và kích hoạt dịch vụ Apache Kafka bằng lệnh sau.
Mã:
sudo systemctl enable kafka
sudo systemctl start kafka
Cuối cùng, hãy kiểm tra và xác minh các dịch vụ Zookeeper và Apache Kafka bằng lệnh bên dưới.
Mã:
sudo systemctl status zookeeper
sudo systemctl status kafka
Trong đầu ra sau, bạn có thể thấy dịch vụ Zookeeper đã được kích hoạt và sẽ tự động chạy khi khởi động hệ thống. Và trạng thái hiện tại của dịch vụ Zookeeper là đang chạy.



Dịch vụ Apache Kafka, dịch vụ này cũng được bật và sẽ tự động chạy khi khởi động hệ thống. Và hiện tại, dịch vụ này đang "đang chạy".


Hoạt động Apache Kafka cơ bản​

Bạn đã hoàn tất quá trình cài đặt Apache Kafka cơ bản và nó đang chạy. Bây giờ, bạn sẽ tìm hiểu hoạt động cơ bản của Apache Kafka từ dòng lệnh.

Tất cả các công cụ dòng lệnh Apache Kafka đều có sẵn trong thư mục "/opt/kafka/bin".

Để tạo chủ đề Kafka mới, hãy sử dụng tập lệnh "kafka-topics.sh" như bên dưới. Trong ví dụ này, chúng tôi đang tạo một chủ đề Kafka mới với tên "TestTopic" với 1 bản sao và phân vùng. Và bạn sẽ nhận được kết quả như sau "Đã tạo chủ đề TestTopic".
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic
Để xác minh danh sách các chủ đề khả dụng trên máy chủ Kafka của bạn, hãy chạy lệnh sau. Và bạn sẽ thấy "TestTopic" mà bạn vừa tạo có sẵn trên máy chủ Kafka.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092


Bạn đã tạo chủ đề Kafka, bây giờ bạn có thể thử ghi và truyền phát dữ liệu trên Apache Kafka bằng dòng lệnh chuẩn "kafka-console-producer.sh" và "kafka-console-consumer.sh".

Tập lệnh "kafka-console-producer.sh" là một tiện ích dòng lệnh có thể được sử dụng để ghi dữ liệu trên chủ đề Kafka. Và tập lệnh "kafka-console-consumer.sh" được sử dụng để truyền dữ liệu từ thiết bị đầu cuối.

Trên phiên shell hiện tại, hãy chạy lệnh sau để khởi động Kafka Console Producer. Ngoài ra, bạn sẽ cần chỉ định chủ đề Kafka cho điều đó, trong ví dụ này, chúng ta sẽ sử dụng "TestTopic".
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic
Tiếp theo, mở một shell hoặc terminal khác và kết nối với máy chủ Apache Kafka. Sau đó, chạy lệnh sau để khởi động Apache Kafka Consumer. Hãy chắc chắn chỉ định chủ đề Kafka tại đây.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning
Bây giờ bạn có thể nhập bất kỳ tin nhắn nào từ Kafka Console Producer và các tin nhắn sẽ tự động xuất hiện và phát trực tuyến trên Kafka Console Consumer.



Bây giờ bạn chỉ cần nhấn "Ctrl+c" để thoát khỏi Kafka Console producer và Consumer.

Một thao tác Kafka cơ bản khác mà bạn nên biết ở đây là cách xóa chủ đề trên Kafka. Và điều này cũng có thể được thực hiện bằng cách sử dụng tiện ích dòng lệnh "kafka-topics.sh".

Nếu bạn muốn xóa chủ đề "TestTopic", bạn có thể sử dụng lệnh sau. Bây giờ "TestTopic" sẽ bị xóa khỏi máy chủ Kafka của bạn.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Nhập/Xuất dữ liệu của bạn dưới dạng Luồng bằng Plugin Kafka Connect​

Bạn phải tìm hiểu hoạt động cơ bản của Apache Kafka bằng cách tạo chủ đề và truyền phát tin nhắn bằng Kafka Console Producer và Consumer. Bây giờ bạn sẽ tìm hiểu cách truyền phát tin nhắn từ tệp thông qua plugin "Kafka Connect". Plugin này có sẵn trên bản cài đặt Kafka mặc định, các plugin mặc định cho Kafka có sẵn trong thư mục "/opt/kafka/libs".

Chỉnh sửa tệp cấu hình "/opt/kafka/config/connect-standalone.properties" bằng trình soạn thảo nano.
Mã:
sudo -u kafka nano /opt/kafka/config/connect-standalone.properties
Thêm cấu hình sau vào tệp. Thao tác này sẽ kích hoạt plugin Kafka Connect có sẵn trên thư mục "/opt/kafka/libs".
Mã:
plugin.path=libs/connect-file-3.2.0.jar
Khi bạn hoàn tất, hãy lưu và đóng tệp.

Tiếp theo, tạo một tệp ví dụ mới mà bạn sẽ nhập và truyền phát đến Kafka. Dựa trên các tệp cấu hình Apache Kafka, bạn phải tạo tệp "test.txt" trong thư mục cài đặt Kafka "/opt/kafka".

Chạy lệnh bên dưới để tạo tệp mới "/opt/kafka/test.txt".
Mã:
sudo -u kafka echo -e "Kiểm tra tin nhắn từ tệp\nKiểm tra bằng cách sử dụng Kafka kết nối từ tệp" > /opt/kafka/test.txt
Từ thư mục làm việc "/opt/kafka", hãy chạy lệnh sau để khởi động trình kết nối kafka ở chế độ độc lập.

Ngoài ra, chúng tôi thêm ba tệp cấu hình bổ sung làm tham số tại đây. Tất cả các tệp này đều chứa cấu hình cơ bản mà dữ liệu sẽ được lưu trữ, về chủ đề nào và tệp nào sẽ được xử lý. Giá trị mặc định của các cấu hình này là dữ liệu sẽ có sẵn trên chủ đề "connect-test" với tệp nguồn "test.txt" mà bạn vừa tạo.

Bạn sẽ thấy rất nhiều thông báo đầu ra từ Kafka.
Mã:
cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
Bây giờ hãy mở một shell/session thiết bị đầu cuối khác và chạy lệnh sau để khởi động Kafka Console Consumer. Trong ví dụ này, các luồng dữ liệu sẽ có sẵn trên chủ đề "connect-test".

Bây giờ bạn sẽ thấy dữ liệu trên tệp "test.txt" được truyền trực tuyến trên shell Console Consumer hiện tại của bạn.
Mã:
sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning
Nếu bạn thử thêm một thông báo khác vào tệp "test.txt", bạn sẽ thấy thông báo sẽ tự động được truyền trực tuyến trên Kafka Console Consumer.
Mã:
sudo -u kafka echo "Một thông báo thử nghiệm khác từ tệp test.txt" >> test.txt

Kết luận​

Trong hướng dẫn này, bạn đã học cách cài đặt Apache Kafka để xử lý luồng và message broker trên hệ thống Ubuntu 22.04. Bạn cũng đã học cấu hình cơ bản của Kafka trên hệ thống Ubuntu. Ngoài ra, bạn cũng đã học thao tác cơ bản khi sử dụng Apache Kafka Producer và Consumer. Và cuối cùng, bạn cũng đã học cách truyền phát tin nhắn hoặc sự kiện từ tệp đến Apache Kafka.
 
Back
Bên trên