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 라는 주제를 방금 만들었습니다 . 위에서 생성 된 출력은 다음 출력과 유사합니다.

OutputHello-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로 설정되지 않음