2015-06-09 121 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) - 所以也許這是最初的問題。現在......不會重新啓動這個東西。