報錯信息:
WARN Fetching topic metadata with correlation id 14 for topics [Set(test)] from broker [BrokerEndPoint(2,ubuntu,9092)] failed (kafka.client.ClientUtils$)
WARN Fetching topic metadata with correlation id 14 for topics [Set(test)] from broker [BrokerEndPoint(2,ubuntu,9092)] failed (kafka.client.ClientUtils$) java.nio.channels.ClosedChannelException at kafka.network.BlockingChannel.send(BlockingChannel.scala:112) at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:80) at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:79) at kafka.producer.SyncProducer.send(SyncProducer.scala:124) at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:61) at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:96) at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:68) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:64) ^X[2019-01-18 15:54:50,516] WARN Fetching topic metadata with correlation id 17 for topics [Set(test)] from broker [BrokerEndPoint(2,ubuntu,9092)] failed (kafka.client.ClientUtils$) java.nio.channels.ClosedChannelException at kafka.network.BlockingChannel.send(BlockingChannel.scala:112) at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:80) at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:79) at kafka.producer.SyncProducer.send(SyncProducer.scala:124) at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:61) at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:96) at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:68) at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:64)
問題:可以非常明顯的看到
這個主機名是ubuntu,這個名字在hosts文件中我沒有配置映射,非常粗心的一個問題。
解決:在/etc/hosts文件中添加主機名和ip映射。
說明:這個kafka相互通信連接的時候是默認拿着主機名加端口號的,而我開始在hosts文件中映射的ip並不是使用的主機名,因為幾台機器的主機名命名不規范,所以我的映射文件是統一命名py101、py102、py103這種。而kafka默認拿着主機名尋找映射信息,然而hosts文件中沒有,故報錯。
