Apache Kafka - Thao tác cơ bản
Trước tiên, chúng ta hãy bắt đầu triển khai cấu hình nhà môi giới một nút-đơn
và sau đó chúng tôi sẽ chuyển thiết lập của mình sang cấu hình nhà môi giới nhiều nút duy nhất.
Hy vọng rằng bây giờ bạn đã cài đặt Java, ZooKeeper và Kafka trên máy tính của mình. Trước khi chuyển sang Thiết lập Kafka Cluster, trước tiên bạn cần khởi động ZooKeeper của mình vì Kafka Cluster sử dụng ZooKeeper.
Khởi động ZooKeeper
Mở một thiết bị đầu cuối mới và nhập lệnh sau:
bin/zookeeper-server-start.sh config/zookeeper.properties
Để bắt đầu Kafka Broker, hãy nhập lệnh sau:
bin/kafka-server-start.sh config/server.properties
Sau khi khởi động Kafka Broker, gõ lệnh JPS
trên Zookeeper thiết bị đầu cuối và bạn sẽ thấy các phản ứng sau -
821 QuorumPeerMain
928 Kafka
931 Jps
Bây giờ bạn có thể thấy hai daemon chạy trên thiết bị đầu cuối, nơi QuorumPeerMain là daemon ZooKeeper và một con khác là daemon Kafka.
Cấu hình môi giới một nút duy nhất
Trong cấu hình này, bạn có một phiên bản ZooKeeper và id người môi giới. Sau đây là các bước để cấu hình nó:
Creating a Kafka Topic- Kafka cung cấp tiện ích dòng lệnh có tên kafka-topics.sh
để tạo các chủ đề trên máy chủ. Mở thiết bị đầu cuối mới và nhập ví dụ dưới đây.
Syntax
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1
--partitions 1 --topic topic-name
Example
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1
--partitions 1 --topic Hello-Kafka
Chúng tôi vừa tạo một chủ đề có tên Hello-Kafka
với một phân vùng duy nhất và một nhân tố sao chép. Đầu ra được tạo ở trên sẽ tương tự như đầu ra sau:
Output- Đã tạo chủ đề Hello-Kafka
Khi chủ đề đã được tạo, bạn có thể nhận được thông báo trong cửa sổ đầu cuối của nhà môi giới Kafka và nhật ký cho chủ đề đã tạo được chỉ định trong “/ tmp / kafka-logs /“ trong tệp config / server.properties.
Danh sách các chủ đề
Để nhận danh sách các chủ đề trong máy chủ Kafka, bạn có thể sử dụng lệnh sau:
Syntax
bin/kafka-topics.sh --list --zookeeper localhost:2181
Output
Hello-Kafka
Vì chúng tôi đã tạo một chủ đề, nó sẽ chỉ liệt kê Hello-Kafka
. Giả sử, nếu bạn tạo nhiều hơn một chủ đề, bạn sẽ nhận được tên chủ đề trong đầu ra.
Khởi động Producer để gửi tin nhắn
Syntax
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name
Từ cú pháp trên, hai tham số chính được yêu cầu cho máy khách dòng lệnh của nhà sản xuất -
Broker-list- Danh sách các nhà môi giới mà chúng tôi muốn gửi thông điệp đến. Trong trường hợp này, chúng tôi chỉ có một nhà môi giới. Tệp Config / server.properties chứa id cổng của nhà môi giới, vì chúng tôi biết nhà môi giới của chúng tôi đang lắng nghe trên cổng 9092, vì vậy bạn có thể chỉ định trực tiếp.
Tên chủ đề - Đây là một ví dụ cho tên chủ đề.
Example
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka
Nhà sản xuất sẽ chờ đầu vào từ stdin và xuất bản lên cụm Kafka. Theo mặc định, mỗi dòng mới được xuất bản dưới dạng một thông báo mới, sau đó các thuộc tính của nhà sản xuất mặc định được chỉ định trong tệp config / producer.properties
. Bây giờ bạn có thể nhập một vài dòng thông báo trong terminal như hình dưới đây.
Output
$ bin/kafka-console-producer.sh --broker-list localhost:9092
--topic Hello-Kafka[2016-01-16 13:50:45,931]
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message
Bắt đầu người tiêu dùng nhận tin nhắn
Tương tự như producer, các thuộc tính tiêu dùng mặc định được chỉ định trong tệp config / Consumer.proper-tie
. Mở một thiết bị đầu cuối mới và nhập cú pháp dưới đây để sử dụng tin nhắn.
Syntax
bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name
--from-beginning
Example
bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka
--from-beginning
Output
Hello
My first message
My second message
Cuối cùng, bạn có thể nhập tin nhắn từ thiết bị đầu cuối của nhà sản xuất và thấy chúng xuất hiện trong thiết bị đầu cuối của người tiêu dùng. Hiện tại, bạn đã hiểu rất rõ về cụm nút đơn với một nhà môi giới duy nhất. Bây giờ chúng ta hãy chuyển sang cấu hình nhiều nhà môi giới.
Cấu hình một nút-nhiều nhà môi giới
Trước khi chuyển sang thiết lập cụm nhiều nhà môi giới, trước tiên hãy khởi động máy chủ ZooKeeper của bạn.
Create Multiple Kafka Brokers- Chúng tôi có một phiên bản nhà môi giới Kafka đã có trong con-fig / server.properties. Bây giờ chúng ta cần nhiều phiên bản môi giới, vì vậy hãy sao chép tệp server.prop-erties hiện có thành hai tệp cấu hình mới và đổi tên nó thành server-one.properties và server-two.prop-erties. Sau đó, chỉnh sửa cả hai tệp mới và chỉ định các thay đổi sau:
config / server-one.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1
config / server-two.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2
Start Multiple Brokers- Sau khi tất cả các thay đổi đã được thực hiện trên ba máy chủ, hãy mở ba thiết bị đầu cuối mới để bắt đầu từng nhà môi giới một.
Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties
Bây giờ chúng tôi có ba nhà môi giới khác nhau đang chạy trên máy. Hãy thử một mình để kiểm tra tất cả các daemon bằng cách gõjps trên thiết bị đầu cuối ZooKeeper, sau đó bạn sẽ thấy phản hồi.
Tạo chủ đề
Hãy để chúng tôi gán giá trị hệ số nhân rộng là ba cho chủ đề này vì chúng tôi có ba nhà môi giới khác nhau đang hoạt động. Nếu bạn có hai nhà môi giới, thì giá trị bản sao được chỉ định sẽ là hai.
Syntax
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3
-partitions 1 --topic topic-name
Example
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3
-partitions 1 --topic Multibrokerapplication
Output
created topic “Multibrokerapplication”
Lệnh Mô tả
được sử dụng để kiểm tra nhà môi giới nào đang lắng nghe chủ đề được tạo hiện tại như hình dưới đây:
bin/kafka-topics.sh --describe --zookeeper localhost:2181
--topic Multibrokerappli-cation
Output
bin/kafka-topics.sh --describe --zookeeper localhost:2181
--topic Multibrokerappli-cation
Topic:Multibrokerapplication PartitionCount:1
ReplicationFactor:3 Configs:
Topic:Multibrokerapplication Partition:0 Leader:0
Replicas:0,2,1 Isr:0,2,1
Từ kết quả ở trên, chúng ta có thể kết luận rằng dòng đầu tiên cung cấp tóm tắt về tất cả các phân vùng, hiển thị tên chủ đề, số lượng phân vùng và hệ số sao chép mà chúng ta đã chọn. Trong dòng thứ hai, mỗi nút sẽ dẫn đầu cho một phần được chọn ngẫu nhiên của các phân vùng.
Trong trường hợp của chúng tôi, chúng tôi thấy rằng nhà môi giới đầu tiên của chúng tôi (với broker.id 0) là người dẫn đầu. Sau đó Replicas: 0,2,1 có nghĩa là tất cả các nhà môi giới sao chép chủ đề cuối cùng Isr
là tập hợp các bản sao đồng bộ
. Chà, đây là tập hợp con của các bản sao hiện đang sống và bị bắt bởi kẻ đứng đầu.
Khởi động Producer để gửi tin nhắn
Quy trình này vẫn giống như trong thiết lập nhà môi giới đơn lẻ.
Example
bin/kafka-console-producer.sh --broker-list localhost:9092
--topic Multibrokerapplication
Output
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message
Bắt đầu người tiêu dùng nhận tin nhắn
Quy trình này vẫn giống như được hiển thị trong thiết lập nhà môi giới duy nhất.
Example
bin/kafka-console-consumer.sh --zookeeper localhost:2181
—topic Multibrokerapplica-tion --from-beginning
Output
bin/kafka-console-consumer.sh --zookeeper localhost:2181
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message
Hoạt động chủ đề cơ bản
Trong chương này, chúng ta sẽ thảo luận về các hoạt động chủ đề cơ bản khác nhau.
Sửa đổi chủ đề
Như bạn đã hiểu cách tạo chủ đề trong Kafka Cluster. Bây giờ chúng ta hãy sửa đổi chủ đề đã tạo bằng lệnh sau
Syntax
bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name
--parti-tions count
Example
We have already created a topic “Hello-Kafka” with single partition count and one replica factor.
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181
--alter --topic Hello-kafka --parti-tions 2
Output
WARNING: If partitions are increased for a topic that has a key,
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!
Xóa chủ đề
Để xóa một chủ đề, bạn có thể sử dụng cú pháp sau.
Syntax
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name
Example
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka
Output
> Topic Hello-kafka marked for deletion
Note −Điều này sẽ không có tác động nếu delete.topic.enable không được đặt thành true