使用 - -zookeeper 标志列出所有 Kafka 0.10 主题,而无需访问 Zookeeper

Posted

技术标签:

【中文标题】使用 - -zookeeper 标志列出所有 Kafka 0.10 主题,而无需访问 Zookeeper【英文标题】:List all Kafka 0.10 topics using - -zookeeper flag without access to Zookeeper 【发布时间】:2017-11-08 09:28:09 【问题描述】:

我使用的是 kafka 0.10,没有 zookeeper。我想获取 kafka 主题列表。这个命令不起作用,因为我们没有使用 zookeeper: bin/kafka-topics.sh --list --zookeeper localhost:2181。如果没有 zookeeper,如何获得相同的输出?

【问题讨论】:

/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181 【参考方案1】:

Kafka 使用 ZooKeeper,因此如果您还没有 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

【讨论】:

我需要一个没有 zookeeper 的解决方案。除了这个之外,还有没有其他命令可以列出所有没有 zookeeper 的主题? 我认为在没有 zookeeper 的情况下使用 kafka 是不可能的,因为 kafka 的状态存储在 zookeeper 中。你是怎么做到的? 如果您正在寻找执行此操作的命令,那么 ***.com/questions/40034074/… 如果您的 zookeeper 服务器是命名主机,您需要提供主机名而不是 localhost,例如./kafka-topics.sh --list --zookeeper zookeeper:2181。或者根据您的配置,您可能需要使用 IP 地址,例如./kafka-topics.sh --list --zookeeper 10.10.10.180:2181 你可以在这里找到更多细节reachmnadeem.wordpress.com/2020/08/30/…【参考方案2】:

Kafka 2.2 及更高版本

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

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

【讨论】:

假设 OP 的意思是“没有 zookeeper cli 选项”——这很可能,因为 kafka 在没有 zookeeper 的情况下无法工作——这个答案应该是 Kafka 2.2+ 的公认答案。 cli 文档现在表明 --zookeeper 已被弃用,取而代之的是 --bootstrap-server。 如果您使用他们的 MSK 在 AWS 中工作,这实际上是最好的方法。否则你需要打开你的 ZooKeeper 服务,如果操作不正确,这可能是一个潜在的安全问题。 @MichaelRobinson 同意您将 MSK 用于 v2.2.1 而不是 v1.1.1。 是的,我的评论已本地化到这篇文章。【参考方案3】:

对于 dockerized kafka/zookeeper

docker ps

找到你的 Zookeeper 容器 ID

docker exec -it <id> bash

cd bin

./zkCli.sh

ls /brokers/topics

【讨论】:

./zkCli.sh 不存在...在 zookeeper 泊坞窗图像中【参考方案4】:

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

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

检查数据是否登陆Kafka:

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

【讨论】:

【参考方案5】:

命令:

启动卡夫卡:

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

列出关于kafka的所有主题:

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

检查数据是否登陆kafka主题并打印出来:

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

【讨论】:

【参考方案6】:

我们可以使用以下命令:

kafka-topics.sh --list --bootstrap-server localhost:9092

列出所有主题

【讨论】:

【参考方案7】:

Kafka 需要 zookeeper,并且主题列表确实存储在那里,因此 kafka-topics 工具也需要连接到 zookeeper。 较新版本中的 kafka-clients api 不再直接与 zookeeper 对话,也许这就是为什么您认为没有 zookeeper 的设置是可能的。 不是,因为 kafka 在内部依赖它。参考见: http://kafka.apache.org/documentation.html#quickstart 第 2 步:

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

【讨论】:

【参考方案8】:

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

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

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

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

ccloud topic list

【讨论】:

【参考方案9】:

使用Confluent's REST Proxy API:

curl -X GET -H "Accept: application/vnd.kafka.v2+json" localhost:8082/topics 

localhost:8082 是 Kafka 代理地址。

【讨论】:

【参考方案10】:

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

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

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

【讨论】:

【参考方案11】:

Kafka 是分布式系统,需要 Zookeeper。 你也必须启动zookeeper。 在此处关注“快速入门”:https://kafka.apache.org/0100/documentation.html#quickstart

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

你需要先启动zookeeper服务器。 所以先去kafka/bin/windows下运行

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

然后在具有新 cmd 窗口的同一文件夹中通过运行启动 kafka 服务器

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

注意:如果你是第一次启动它,那么有一定的 对这些文件进行的更改

然后在 kafka/bin/windows 里面运行

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

列出所有现有的主题。

【讨论】:

【参考方案14】:

您有一个旧版本的软件包,其中的命令不再接受 zookeeper,而是接受 bootstrap-server 作为连接。 Confluent 将在内部与 Zookeeper 连接。

https://www.confluent.io/download/(5.3 或更高版本)

【讨论】:

【参考方案15】:

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

 - bin/kafka-topics.sh --describe --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 --list

【讨论】:

【参考方案16】:

试试这个,我遇到了--zookeeper 标志的问题。

bin/kafka-topics.sh --list --bootstrap-server my-cluster-kafka-bootstrap:9092

【讨论】:

以上是关于使用 - -zookeeper 标志列出所有 Kafka 0.10 主题,而无需访问 Zookeeper的主要内容,如果未能解决你的问题,请参考以下文章

学习Linux tar 命令:最简单也最困难

Linux查看当前目录下文件夹和文件的大小

docker学习笔记

在bash中检查命令行标志的正确方法

如何通过 npm run-script 将标志传递给 nodejs 应用程序?

Ubuntu学习 ls