同事在他们的服务器上读取kafka的信息,使用ip的情况下,端口是通的情况下始终读不到消息。使用zk的ip能list出topic。想到有可能是读取broker的时候读到的主机名了。配置/etc/hosts后,能顺利读到消息。
回去kafka对应的zk中查看 /kafka/broker/ids/xxx值,存的果然是主机名。在CDH集群中配置每个broker的kafka.properties高级值:
使用 get /brokers/ids/xxx值
host.name=192.168.0.1
listeners=PLAINTEXT://192.168.0.1:9092
advertised.listeners=PLAINTEXT://192.168.0.1:9092
增加此值后zk中存的也是正常的值了。
2018-10-12 17:07:11,967 WARN org.apache.kafka.common.network.Selector: [SocketServer brokerId=375] Unexpected error from /192.168.0.2; closing connection
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1903520116 larger than 104857600)
at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.
at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.
at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.
at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.
at org.apache.kafka.common.network.Selector.attemptRead(Selector.
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.
at org.apache.kafka.common.network.Selector.poll(Selector.
at kafka.network.Processor.poll(SocketServer.scala:551)
at kafka.network.Processor.run(SocketServer.scala:468)
at
[zk: localhost:2181(CONNECTED) 8] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port