列出所有kafka主题


78

我正在使用没有Zookeeper的kafka 0.10。我想获取kafka主题列表。由于我们未使用zookeeper :,因此此命令不起作用 。没有Zookeeper的情况下如何获得相同的输出?bin/kafka-topics.sh --list --zookeeper localhost:2181


/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
Adiii

Answers:


135

Kafka使用ZooKeeper,因此如果您还没有,请先启动ZooKeeper服务器。

如果您不想安装并拥有单独的Zookeeper服务器,则可以使用kafka附带的便捷脚本来获取快速且肮脏的单节点ZooKeeper实例。

启动单节点Zookeeper实例:

bin/zookeeper-server-start.sh config/zookeeper.properties

启动Kafka服务器:

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

列出Kafka中可用的主题:

bin/kafka-topics.sh --list --zookeeper localhost:2181

2
我需要没有Zookeeper的解决方案。除此以外,还有其他命令可以列出没有Zookeeper的所有主题吗?
SSR

5
我不认为即使没有Zookeeper也无法使用kafka,因为kafka的状态存储在zookeeper中。您如何实现的?
Daniccan

如果您正在寻找执行此命令的命令,然后stackoverflow.com/questions/40034074/…–
秘鲁

如果您的zookeeper服务器是命名主机,则需要提供主机名而不是localhost例如./kafka-topics.sh --list --zookeeper zookeeper:2181。或根据您的配置,您可能需要使用IP地址,例如./kafka-topics.sh --list --zookeeper 10.10.10.180:2181
Chris Halcrow

你可以找到更多的细节在这里reachmnadeem.wordpress.com/2020/08/30/...
craftsmannadeem

28

Kafka 2.2及更高版本

较新版本的Kafka不再需要ZooKeeper连接字符串来列出主题,而是可以直接通过Kafka代理访问。下载Kafka时kafka-topics.sh,该bin/文件夹中会提供。要列出主题,请执行以下操作:

bin/kafka-topics.sh --list --bootstrap-server <BROKER-LIST>

1
假设OP的意思是“没有zookeeper cli选项”-这很可能,因为kafka在没有zookeeper的情况下无法工作-这个答案应该是Kafka 2.2+的公认答案。cli文档现在指示--zookeeper已过时,而推荐使用--bootstrap-server。
卢克W

如果您使用其MSK在AWS中工作,这实际上是最好的方法。否则,您需要打开ZooKeeper服务,如果操作不正确,这可能是潜在的安全问题。
迈克尔·罗宾逊,

@MichaelRobinson授予您将MSK与v2.2.1一起使用,而不与v1.1.1一起使用。
保罗

是的,我的评论已本地化至此帖子。
迈克尔·罗宾逊

19

如果我们运行list topic命令来查看该主题:

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

要检查数据是否在Kafka中登陆:

$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic twitterstream --from-beginning


19

对于docker化的kafka / zookeeper

docker ps

找到您的Zookeeper容器ID

docker exec -it <id> bash

cd bin

./zkCli.sh

ls /brokers/topics

5

命令:

  1. 要启动kafka:

    $ nohup〜/ kafka / bin / kafka-server-start.sh〜/ kafka / config / server.properties>〜/ kafka / kafka.log 2>&1&

  2. 列出关于kafka的所有主题;

    $ bin / kafka-topics.sh --list --zookeeper本地主机:2181

  3. 检查数据是否在kafka主题上并打印出来;

    $ bin / kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic your_topic_name --from-beginning


4

Kafka需要Zookeeper,实际上主题列表存储在此处,因此kafka-topics工具也需要连接到Zookeeper。较新版本中的kafka-clients apis不再直接与zookeeper对话,也许这就是为什么您给人一种不带zookeeper的设置的印象。它不是,因为kafka内部依赖它。有关参考,请参见:http : //kafka.apache.org/documentation.html#quickstart 步骤2:

Kafka使用ZooKeeper,因此如果您还没有一个,则需要先启动ZooKeeper服务器


3

Kafka客户端不再需要Zookeeper,但Kafka服务器确实需要它来运行。

您可以使用新的AdminClient API获得主题列表,但是Kafka附带的shell命令尚未被重写以使用此新API。

在没有Zookeeper的情况下使用Kafka的另一种方法是使用SaaS Kafka即服务提供程序,例如Confluent Cloud,这样就不会看到或操作Kafka经纪人(以及所需的后端Zookeeper集成)。

例如,在Confluent Cloud上,您将只使用以下zookeeper免费CLI命令:

ccloud topic list


1

运行Kafka需要Zookeeper。动物园管理员是必须的。仍然,如果您想在没有Zookeeper的情况下查看主题列表,则需要Kafka监控工具,例如Kafka Monitor Tool,kafka-manager等。


1

要阅读消息,您应该使用:

kafka-console-consumer.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --topic messages --from-beginning

--bootstrap-server是必填属性。您只能使用单个kafka1:9020节点。


1

您需要先启动Zookeeper服务器。所以首先去kafka / bin / windows并运行

zookeeper-server-start.bat ../../config/zookeeper.properties

然后在具有新cmd Windows的同一文件夹中,通过运行以下命令启动kafka服务器

kafka-server-start.bat ../../config/server.properties

注意:如果是第一次启动,则在这些文件中需要进行某些更改

然后在kafka / bin / windows中运行

kafka-topics.bat --zookeeper localhost:2181 --list

列出所有现有主题。



0

您可以尝试使用以下两个命令并列出所有Kafka主题

  • bin / kafka-topics.sh-描述--zookeeper 192.168.0.142:2181,192.168.9.115:2181,192.168.4.57:2181
  • bin / kafka-topics.sh --zookeeper 192.168.0.142:2181,192.168.9.115:2181,192.168.4.57:218-列表

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.