我使用以下命令获取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)
我的kafka版本为0.10.1.0
答案 0 :(得分:1)
对不起,我来得太晚了,但是今天我遇到了这个问题,这篇文章帮助我找到了可行的解决方案,所以我认为我应该发布解决方法。我已经分别在Cloudera(néeHortworks)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 =“ my special options”之类的值来覆盖KAFKA_OPTS值。
答案 1 :(得分:0)
端口9999听起来像是JMX端口。您是否在代理端启用了JMX端口(设置JMX_PORT和KAFKA_JMX_OPTS env vars)?如果是,您是否明智地设置了这些env vars系统? 与所有其他工具一样,kafka-topics.sh命令在内部使用kafka-run-class.sh,它启动Java类(在您的情况下为TopicCommand)。如果在启动该工具的控制台中设置了上述env变量,它会尝试在那里启用JMX,并与代理中启用的JMX端口冲突。你能确认是否设置了上述变量吗?