Apache Kafka-기본 작업
먼저 단일 노드-단일 브로커
구성 구현 을 시작한 다음 설정을 단일 노드-다중 브로커 구성으로 마이그레이션합니다.
지금 쯤이면 컴퓨터에 Java, ZooKeeper 및 Kafka를 설치했을 것입니다. Kafka 클러스터 설정으로 이동하기 전에 Kafka 클러스터가 ZooKeeper를 사용하기 때문에 먼저 ZooKeeper를 시작해야합니다.
ZooKeeper 시작
새 터미널을 열고 다음 명령을 입력하십시오-
bin/zookeeper-server-start.sh config/zookeeper.properties
Kafka Broker를 시작하려면 다음 명령을 입력하십시오.
bin/kafka-server-start.sh config/server.properties
Kafka Broker를 시작한 후 ZooKeeper 터미널에 jps
명령을 입력 하면 다음과 같은 응답이 표시됩니다.
821 QuorumPeerMain
928 Kafka
931 Jps
이제 QuorumPeerMain이 ZooKeeper 데몬이고 다른 하나가 Kafka 데몬 인 터미널에서 실행중인 두 데몬을 볼 수 있습니다.
단일 노드-단일 브로커 구성
이 구성에는 단일 ZooKeeper 및 브로커 ID 인스턴스가 있습니다. 다음은 그것을 구성하는 단계입니다-
Creating a Kafka Topic− Kafka는 kafka-topics.sh
라는 명령 줄 유틸리티를 제공 하여 서버에 주제를 생성합니다. 새 터미널을 열고 아래 예제를 입력하십시오.
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
단일 파티션과 하나의 복제 요소가있는 Hello-Kafka
라는 주제를 방금 만들었습니다 . 위에서 생성 된 출력은 다음 출력과 유사합니다.
Output− Hello-Kafka
주제 생성
토픽이 생성되면 Kafka 브로커 터미널 창에서 알림을받을 수 있으며 config / server.properties 파일의 "/ tmp / kafka-logs /"에 지정된 생성 된 토픽에 대한 로그를 얻을 수 있습니다.
주제 목록
Kafka 서버에서 주제 목록을 얻으려면 다음 명령을 사용할 수 있습니다.
Syntax
bin/kafka-topics.sh --list --zookeeper localhost:2181
Output
Hello-Kafka
주제를 만들었으므로 Hello-Kafka
만 나열 됩니다. 둘 이상의 주제를 작성하면 출력에 주제 이름이 표시된다고 가정하십시오.
생산자를 시작하여 메시지 보내기
Syntax
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name
위의 구문에서 생산자 명령 줄 클라이언트에는 두 가지 주요 매개 변수가 필요합니다.
Broker-list− 메시지를 보내려는 브로커 목록. 이 경우에는 브로커가 하나뿐입니다. Config / server.properties 파일에는 브로커가 포트 9092에서 수신 대기하고 있다는 것을 알고 있으므로 브로커 포트 ID가 포함되어 있으므로 직접 지정할 수 있습니다.
주제 이름-다음은 주제 이름의 예입니다.
Example
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka
생산자는 stdin의 입력을 기다리고 Kafka 클러스터에 게시합니다. 기본적으로 모든 새 줄은 새 메시지로 게시되고 기본 생산자 속성은 config / producer.properties
파일에 지정 됩니다. 이제 아래와 같이 터미널에 몇 줄의 메시지를 입력 할 수 있습니다.
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
소비자가 메시지를 수신하도록 시작
생산자와 마찬가지로 기본 소비자 속성은 config / consumer.proper-ties
파일에 지정 됩니다. 새 터미널을 열고 메시지 사용을 위해 아래 구문을 입력하십시오.
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
마지막으로 생산자의 터미널에서 메시지를 입력하고 소비자의 터미널에 나타나는 메시지를 볼 수 있습니다. 현재로서는 단일 브로커가있는 단일 노드 클러스터에 대해 매우 잘 이해하고 있습니다. 이제 다중 브로커 구성으로 이동하겠습니다.
단일 노드-다중 브로커 구성
다중 브로커 클러스터 설정으로 이동하기 전에 먼저 ZooKeeper 서버를 시작하십시오.
Create Multiple Kafka Brokers− con-fig / server.properties에 이미 하나의 Kafka 브로커 인스턴스가 있습니다. 이제 여러 브로커 인스턴스가 필요하므로 기존 server.prop-erties 파일을 두 개의 새 구성 파일로 복사하고 이름을 server-one.properties 및 server-two.prop-erties로 바꿉니다. 그런 다음 두 새 파일을 모두 편집하고 다음 변경 사항을 할당하십시오.
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− 세 개의 서버에서 모든 변경을 수행 한 후 세 개의 새 터미널을 열어 각 브로커를 하나씩 시작합니다.
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
이제 우리는 머신에서 3 개의 다른 브로커를 실행하고 있습니다. 직접 입력하여 모든 데몬을 확인하십시오.jps ZooKeeper 터미널에서 응답을 볼 수 있습니다.
주제 만들기
세 개의 다른 브로커가 실행 중이므로이 주제에 대해 복제 계수 값을 3으로 지정하겠습니다. 브로커가 두 개인 경우 할당 된 복제본 값은 2가됩니다.
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”
설명
명령은 아래와 같이 현재 생성 된 주제에 수신되는 브로커를 확인하는 데 사용됩니다 -
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
위의 출력에서 첫 번째 줄은 이미 선택한 주제 이름, 파티션 수 및 복제 요소를 보여주는 모든 파티션의 요약을 제공한다는 결론을 내릴 수 있습니다. 두 번째 줄에서 각 노드는 무작위로 선택된 파티션 부분의 리더가됩니다.
우리의 경우 첫 번째 브로커 (broker.id 0)가 리더임을 알 수 있습니다. 그런 다음 Replicas : 0,2,1은 모든 브로커가 주제를 복제 함을 의미합니다. 마지막으로 Isr
은 동기화 된
복제본 의 집합입니다 . 글쎄, 이것은 현재 살아 있고 리더가 잡은 복제본의 하위 집합입니다.
생산자를 시작하여 메시지 보내기
이 절차는 단일 브로커 설정과 동일합니다.
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
소비자가 메시지를 수신하도록 시작
이 절차는 단일 브로커 설정에 표시된 것과 동일합니다.
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
기본 주제 작업
이 장에서는 다양한 기본 주제 작업에 대해 설명합니다.
주제 수정
Kafka Cluster에서 주제를 만드는 방법을 이미 이해했듯이. 이제 다음 명령을 사용하여 생성 된 주제를 수정하겠습니다.
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!
주제 삭제
주제를 삭제하려면 다음 구문을 사용할 수 있습니다.
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 −다음과 같은 경우에는 영향이 없습니다. delete.topic.enable true로 설정되지 않음