1. 개요

이 빠른 사용방법(예제)에서는 Apache Kafka 클러스터의 모든 주제를 나열하는 방법을 살펴보겠습니다.

먼저 단일 노드 Apache Kafka 및 Zookeeper 클러스터를 설정합니다. 그런 다음 해당 클러스터에 주제에 대해 물어보겠습니다.

2. 카프카 설정

Kafka 클러스터의 모든 주제를 나열하기 전에 3단계로 테스트 단일 노드 Kafka 클러스터를 설정해 보겠습니다.

  • Kafka 및 Zookeeper 다운로드
  • 사육사 서비스 시작
  • 카프카 서비스 시작

First, we should make sure to download the right Kafka version from the Apache site. Once the download finishes, we should extract the downloaded archive:

$ tar xvf kafka_2.13-2.6.0.tgz

Kafka is using Apache Zookeeper to manage its cluster metadata, so we need a running Zookeeper cluster.

For test purposes, we can run a single-node Zookeeper instance using the zookeeper-server-start.sh script in the bin directory:

$ cd kafka_2.13-2.6.0 # extracted directory
$ ./bin/zookeeper-server-start.sh config/zookeeper.properties

This will start a Zookeeper service listening on port 2181. After this, we can use another script to run the Kafka server:

$ ./bin/kafka-server-start.sh config/server.properties

After a while, a Kafka broker will start. Let's add a few topics to this simple cluster:

$ bin/kafka-topics.sh --create --topic users.registrations --replication-factor 1 \
  --partitions 2  --zookeeper localhost:2181
$ bin/kafka-topics.sh --create --topic users.verfications --replication-factor 1 \
  --partitions 2  --zookeeper localhost:2181

Now that everything is ready, let's see how we can list Kafka topics.

3. Listing Topics

To list all Kafka topics in a cluster, we can use the bin/kafka-topics.sh shell script bundled in the downloaded Kafka distribution. All we have to do is to pass the –list option along with the information about the cluster. For instance, we can pass the Zookeeper service address:

$ bin/kafka-topics.sh --list --zookeeper localhost:2181
users.registrations
users.verfications

As shown above, the –list option tells the kafka-topics.sh shell script to list all the topics. In this case, we have two topics to store user-related events. If there is no topic in the cluster, then the command will return silently without any result.

Also, in order to talk to the Kafka cluster, we need to pass the Zookeeper service URL using the –zookeeper option.

–bootstrap-server 옵션을 사용하여 Kafka 클러스터 주소를 직접 전달할 수도 있습니다 .

$ ./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --list
users.registrations
users.verfications

단일 인스턴스 Kafka 클러스터는 9092 포트를 수신하므로 "localhost:9092"  를 부트스트랩 서버로 지정했습니다. 간단히 말해 부트스트랩 서버는 Kafka 브로커입니다.

Kafka 클러스터와 통신하는 데 필요한 정보를 전달하지 않으면 kafka-topics.sh  셸 스크립트에서 오류가 발생합니다.

$ ./bin/kafka-topics.sh --list
Exception in thread "main" java.lang.IllegalArgumentException: Only one of --bootstrap-server or --zookeeper must be specified
        at kafka.admin.TopicCommand$TopicCommandOptions.checkArgs(TopicCommand.scala:721)
        at kafka.admin.TopicCommand$.main(TopicCommand.scala:52)
        at kafka.admin.TopicCommand.main(TopicCommand.scala)

위에 표시된 것처럼 쉘 스크립트는 –bootstrap-server  또는  –zookeeper  옵션 을 전달해야 합니다 .

4. 주제 세부사항

주제 List을 찾으면 특정 주제의 세부 정보를 엿볼 수 있습니다. 그렇게 하기 위해  –describe –topic <topic name>”  옵션 조합을 사용할 수 있습니다 .

$ ./bin/kafka-topics.sh --bootstrap-server=localhost:9092 --describe --topic users.registrations
Topic: users.registrations      PartitionCount: 2       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: users.registrations      Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: users.registrations      Partition: 1    Leader: 0       Replicas: 0     Isr: 0

이러한 세부 정보에는 파티션 및 복제본 수와 같은 지정된 주제에 대한 정보가 포함됩니다. 다른 명령과 마찬가지로 클러스터 정보 또는 Zookeeper 주소를 전달해야 합니다. 그렇지 않으면 클러스터와 통신할 수 없습니다.

5. 결론

이 짧은 사용방법(예제)에서는 Kafka 클러스터의 모든 주제를 나열하는 방법을 배웠습니다. 그 과정에서 간단한 단일 노드 Kafka 클러스터를 설정하는 방법을 보았습니다.

현재 Apache Kafka는 Zookeeper를 사용하여 클러스터 메타데이터를 관리하고 있습니다. 그러나 이는 Kafka가 자체 메타데이터 쿼럼을 갖게 되므로 KIP-500의 일부로 곧 변경됩니다 .

Cloud footer banner