如何诊断Kafka主题在全球范围内找不到

2admgd59  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(354)

我让kafka0.8.1.2.2在hdp2.2.4集群上运行(3个zk节点上有3个代理-zk3.4.6.2.2)。这几天一切都很顺利,现在我的主题似乎已经成为生产者和消费者无法触及的主题。我是新的Kafka和正在寻找一种方法,以确定哪些地方出了问题,以及如何修复它作为“只是重新安装”将不会是一个选项,一旦在生产。
以前,我的主题成功地接收到消息,然后可以使用这些消息。现在,即使是最基本的操作也会立即失败。如果我ssh到代理节点并创建一个新主题:

[root@dev-hdp-0 kafka]# bin/kafka-topics.sh --create --zookeeper 10.0.0.39:2181 --replication-factor 3 --partitions 3 --topic test4
Created topic "test4".

到现在为止,一直都还不错。现在,我们检查一下描述:

[root@dev-hdp-0 kafka]# bin/kafka-topics.sh --describe --zookeeper 10.0.0.39:2181 --topic test4
Topic:test4 PartitionCount:3    ReplicationFactor:3 Configs:
    Topic: test4    Partition: 0    Leader: 2   Replicas: 2,1,0 Isr: 2
    Topic: test4    Partition: 1    Leader: 0   Replicas: 0,2,1 Isr: 0,2,1
    Topic: test4    Partition: 2    Leader: 1   Replicas: 1,0,2 Isr: 1,0,2

好的-现在如果我创建一个消费者:

[2015-06-09 08:34:27,458] WARN [console-consumer-45097_dev-hdp-0.cloud.stp-1.sparfu.com-1433856803464-12b54195-leader-finder-thread], Failed to add leader for partitions [test4,0],[test4,2],[test4,1]; will retry (kafka.consumer.ConsumerFetcherManager$LeaderFinderThread)
java.net.ConnectException: Connection timed out
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:465)
    at sun.nio.ch.Net.connect(Net.java:457)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:670)
    at kafka.network.BlockingChannel.connect(BlockingChannel.scala:57)
    at kafka.consumer.SimpleConsumer.connect(SimpleConsumer.scala:44)
    at kafka.consumer.SimpleConsumer.getOrMakeConnection(SimpleConsumer.scala:142)
    at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRequest(SimpleConsumer.scala:69)
    at kafka.consumer.SimpleConsumer.getOffsetsBefore(SimpleConsumer.scala:124)
    at kafka.consumer.SimpleConsumer.earliestOrLatestOffset(SimpleConsumer.scala:157)
    at kafka.consumer.ConsumerFetcherThread.handleOffsetOutOfRange(ConsumerFetcherThread.scala:60)
    at kafka.server.AbstractFetcherThread$$anonfun$addPartitions$2.apply(AbstractFetcherThread.scala:179)
    at kafka.server.AbstractFetcherThread$$anonfun$addPartitions$2.apply(AbstractFetcherThread.scala:174)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.Map$Map1.foreach(Map.scala:109)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at kafka.server.AbstractFetcherThread.addPartitions(AbstractFetcherThread.scala:174)
    at kafka.server.AbstractFetcherManager$$anonfun$addFetcherForPartitions$2.apply(AbstractFetcherManager.scala:86)
    at kafka.server.AbstractFetcherManager$$anonfun$addFetcherForPartitions$2.apply(AbstractFetcherManager.scala:76)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.Map$Map3.foreach(Map.scala:154)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at kafka.server.AbstractFetcherManager.addFetcherForPartitions(AbstractFetcherManager.scala:76)
    at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:95)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:51)
[2015-06-09 08:35:30,709] WARN [console-consumer-45097_dev-hdp-0.cloud.stp-1.sparfu.com-1433856803464-12b54195-leader-finder-thread], Failed to add leader for partitions [test4,0],[test4,2],[test4,1]; will retry (kafka.consumer.ConsumerFetcherManager$LeaderFinderThread)

我一直在四处寻找一些与 Failed to add leader for partitions 这似乎是关键,但我还没有找到任何具体的有帮助的。
因此,如果我尝试对已知分区使用简单使用者shell:

[root@dev-hdp-0 kafka]# bin/kafka-simple-consumer-shell.sh --broker-list 10.0.0.39:6667,10.0.0.45:6667,10.0.0.48:6667 --skip-message-on-error --offset -1 --print-offsets --topic test4 --partition 0
Error: partition 0 does not exist for topic test4

尽管 --describe 行动清楚地表明 partition 0 确实存在很多。
我有一个简单的spark应用程序,它将少量消息发布到一个主题,但它也无法发布(在全新的和旧的、以前工作过的主题上)。这里的控制台摘录也暗指 leader 问题:

15/06/08 15:05:35 WARN BrokerPartitionInfo: Error while fetching metadata [{TopicMetadata for topic test8 ->
No partition metadata for topic test8 due to kafka.common.LeaderNotAvailableException}] for topic [test8]: class kafka.common.LeaderNotAvailableException
15/06/08 15:05:35 ERROR DefaultEventHandler: Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test8
15/06/08 15:05:35 WARN BrokerPartitionInfo: Error while fetching metadata [{TopicMetadata for topic test8 ->
No partition metadata for topic test8 due to kafka.common.LeaderNotAvailableException}] for topic [test8]: class kafka.common.LeaderNotAvailableException

此外,如果我们尝试控制台生产者:

[root@dev-hdp-0 kafka]# bin/kafka-console-producer.sh --broker-list 10.0.0.39:6667,10.0.0.45:6667,10.0.0.48:6667 --topic test4
foo
[2015-06-09 08:58:36,456] WARN Error while fetching metadata [{TopicMetadata for topic test4 ->
No partition metadata for topic test4 due to kafka.common.LeaderNotAvailableException}] for topic [test4]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

我已经扫描了/var/log/kafka下的日志,没有什么比控制台输出本身更具描述性的了。对各种例外情况的搜索结果与其他具有类似神秘问题的例外情况相比几乎没有什么不同。
以上所说的是,有没有一种方法可以正确诊断为什么我的代理集在环境或配置没有变化的情况下突然停止工作?是否有人遇到过类似的情况并找到了一套纠正措施?
其他一些细节:所有节点都是openstack私有云hdp群集2.2.4.2-2上的centos 6.6,使用ambari 2.0.0安装和配置kafka服务已重新启动(现在几次…)
不知道还有什么可能有用-请告诉我是否有其他细节可以帮助阐明问题。
谢谢您。

z9smfwbn

z9smfwbn1#

看来强行停止(杀死-9)和重新启动Kafka做到了。
优雅的关机不起作用。
看看启动脚本,kafka和zookeeper同时出现(s20kafka,s20zookeeper)-所以这可能是最初的问题。现在。。。不会重启的。

相关问题