2015-06-09 165 views
-1

我在HDP 2.2.4集群上运行Kafka 0.8.1.2.2(3个ZK节点上的3个代理 - ZK 3.4.6.2.2)。所有这些工作都很好,现在我的话题似乎已经无法被生产者和消费者接受。我对卡夫卡更新,并且正在寻找一种方法来确定出现了什么问题,以及如何解决这个问题,因为“只是重新安装”在生产中不会成为一种选择。如何诊断全局失败的卡夫卡主题

此前,邮件已成功收到我的主题,然后可以消耗。现在,即使是最基本的操作也会立即失败。如果我ssh到一个经纪人节点,并创建一个新的话题:

[[email protected] kafka]# bin/kafka-topics.sh --create --zookeeper 10.0.0.39:2181 --replication-factor 3 --partitions 3 --topic test4 
Created topic "test4". 

到目前为止好。现在,我们检查描述:

[[email protected] 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东西的,这似乎是关键,但我有但在那里找到任何有用的东西。

所以,如果我尝试使用简单的消费外壳为已知分区:

[[email protected] 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 

此外,如果我们试图控制台制片人:

[[email protected]ev-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扫描日志/日志/卡夫卡并没有什么任何比控制台输出本身更具描述性。寻找各种例外已经产生了比其他类似的神秘的问题更多。

这一切都说有没有一种方法来正确诊断为什么我的经纪人设置突然停止工作时,没有改变环境或配置?有没有人遇到过类似的情况,并找到一组纠正措施?

其他一些细节: 所有节点的CentOS 6.6上的OpenStack私有云 HDP集群2.2.4.2-2安装和使用Ambari 2.0.0 卡夫卡服务已重新启动配置(几次现在...)

不知道还有什么可能会有所帮助 - 让我知道是否有其他细节可以帮助揭示问题。

谢谢。

+0

zookeeper是否正常运行? –

+0

是的,ZK正在运行并已重新启动。实际上,我停止了ZK和Kafka,从所有节点中删除了/ hadoop/zookeeper和/ kafka-logs /目录。绝不会试图让事情回到生产中,但我只是试图让它恢复工作而不去除和重新安装服务。我现在看到的令人费解的行为是,如果我创建一个新主题(3分区,3复制因子),我只能在一个节点上看到分区目录。此外,我认为我不应该在ZK dirs中看到类似'/ brokers/{brokerId}/topics/{topicName}的任何内容。 – reverend

+0

我拿回来,使用zkCli我可以看到/经纪人/主题/ {topicName} /分区/等等......所以这就是在那里,ZK正在运行,而不是由Ambari以外的其他人确认。 – reverend

回答

0

看起来像强行停止(杀死-9),并重新启动卡夫卡伎俩。

优雅的关机不起作用。

看看引导脚本,kafka和zookeeper同时出现(S20kafka,S20zookeeper) - 所以也许这是最初的问题。现在......不会重新启动这个东西。