尝试获取 Kafka 中所有主题的列表时出现绑定异常



>我正在使用以下命令获取 kafka 中所有主题的列表

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

但是我收到以下错误

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9999; nested exception is:
    java.net.BindException: Address already in use (Bind failed)

我的卡夫卡版本是0.10.1.0

抱歉,

我来得这么晚,但是我今天遇到了这个问题,这篇文章帮助我找到了可行的解决方案,所以我想我会发布我的解决方法。 我已经分别在Cloudera(née Hortworks(HDP v3.1和2.6.5下用Kafka v2.0和1.0对此进行了测试。

如前面的答复所述,kafka-run-class.sh 需要更新。 您表明您正在运行 ./bin/kafka-topics.sh;运行类脚本应与同一目录中的主题脚本一起。 在我的Hadoop代理上,路径是/usr/hdp/current/kafka-broker/bin/

找到脚本的此部分:

# JMX port to use
if [ $ISKAFKASERVER = "true" ]; then
    JMX_REMOTE_PORT=$JMX_PORT
else
    JMX_REMOTE_PORT=$CLIENT_JMX_PORT
fi

并将其更改为:

# JMX port to use
if [ $ISKAFKASERVER = "true" ]; then
    JMX_REMOTE_PORT=$JMX_PORT
else
    JMX_REMOTE_PORT=$CLIENT_JMX_PORT
    unset KAFKA_OPTS
fi

当然,这假设 JMX 端口是通过 $KAFKA_OPTS 在上游设置的,并且您不需要任何特殊设置。

我还没有测试过它,但理论上取消设置JMX_PORT也可以,你总是可以用 KAFKA_OPTS="我的特殊选项"之类的东西覆盖KAFKA_OPTS值。

端口 9999 对我来说听起来是 JMX 端口。您是否在代理端启用了 JMX 端口(设置 JMX_PORT 并KAFKA_JMX_OPTS env vars(?如果是,您是否明智地设置了这些环境变量系统?与所有其他工具一样,kafka-topics.sh 命令在内部使用启动 Java 类的 kafka-run-class.sh(在您的例子中为 TopicCommand(。如果在启动该工具的控制台中设置了上述 env var,则它会尝试在那里启用 JMX,并且与代理中启用的 JMX 端口冲突。你能确认是否设置了上述变量吗?

最新更新