We have 3 Zookeepers and 3 Kafka Brokers, version 0.8.0.
I gracefully shutdown one of the kafka brokers.
Question 1: Should I wait some time before starting the broker back up,
or can I restart it as soon as possible? In other words, do I have to
wait for the other brokers to "re-balance (or whatever they do)" before
starting it back up?
Question 2: Every once in a while, I get the following exception when
the kafka broker is starting up. Is this bad? Searching around the
newsgroups, I could not get a definitive answer. Example:
http://grokbase.com/t/kafka/users/13cq54bx5q/understanding-offsetoutofrangeexceptions
http://grokbase.com/t/kafka/users/1413hp296y/trouble-recovering-after-a-crashed-broker
Here is the exception:
[2014-04-08 00:02:40,555] ERROR [KafkaApi-3] Error when processing fetch
request for partition [KeyPairGenerated,0] offset 514 from consumer with
correlation id 85 (kafka.server.KafkaApis)
kafka.common.OffsetOutOfRangeException: Request for offset 514 but we
only have log segments in the range 0 to 0.
at kafka.log.Log.read(Log.scala:429)
at
kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSet(KafkaApis.scala:388)
at
kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:334)
at
kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:330)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
at
scala.collection.TraversableLike$class.map(TraversableLike.scala:206)
at scala.collection.immutable.Map$Map1.map(Map.scala:93)
at
kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSets(KafkaApis.scala:330)
at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:296)
at kafka.server.KafkaApis.handle(KafkaApis.scala:66)
at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:42)
at java.lang.Thread.run(Thread.java:722)
And in the controller.log, I see every once in a while something like:
controller.log.2014-04-01-04:[2014-04-01 04:42:41,713] WARN
[OfflinePartitionLeaderSelector]: No broker in ISR is alive for
[KeyPairGenerated,0]. Elect leader 3 from live brokers 3. There's
potential data loss. (kafka.controller.OfflinePartitionLeaderSelector)
(Which I did via: grep "data loss" *)
I'm not a programmer: I am the admin for these machines, and I just want
to make sure everything is cool.
Oh, the server.properties has:
default.replication.factor=3
Thanks,
Alex
I gracefully shutdown one of the kafka brokers.
Question 1: Should I wait some time before starting the broker back up,
or can I restart it as soon as possible? In other words, do I have to
wait for the other brokers to "re-balance (or whatever they do)" before
starting it back up?
Question 2: Every once in a while, I get the following exception when
the kafka broker is starting up. Is this bad? Searching around the
newsgroups, I could not get a definitive answer. Example:
http://grokbase.com/t/kafka/users/13cq54bx5q/understanding-offsetoutofrangeexceptions
http://grokbase.com/t/kafka/users/1413hp296y/trouble-recovering-after-a-crashed-broker
Here is the exception:
[2014-04-08 00:02:40,555] ERROR [KafkaApi-3] Error when processing fetch
request for partition [KeyPairGenerated,0] offset 514 from consumer with
correlation id 85 (kafka.server.KafkaApis)
kafka.common.OffsetOutOfRangeException: Request for offset 514 but we
only have log segments in the range 0 to 0.
at kafka.log.Log.read(Log.scala:429)
at
kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSet(KafkaApis.scala:388)
at
kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:334)
at
kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$readMessageSets$1.apply(KafkaApis.scala:330)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at scala.collection.immutable.Map$Map1.foreach(Map.scala:105)
at
scala.collection.TraversableLike$class.map(TraversableLike.scala:206)
at scala.collection.immutable.Map$Map1.map(Map.scala:93)
at
kafka.server.KafkaApis.kafka$server$KafkaApis$$readMessageSets(KafkaApis.scala:330)
at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:296)
at kafka.server.KafkaApis.handle(KafkaApis.scala:66)
at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:42)
at java.lang.Thread.run(Thread.java:722)
And in the controller.log, I see every once in a while something like:
controller.log.2014-04-01-04:[2014-04-01 04:42:41,713] WARN
[OfflinePartitionLeaderSelector]: No broker in ISR is alive for
[KeyPairGenerated,0]. Elect leader 3 from live brokers 3. There's
potential data loss. (kafka.controller.OfflinePartitionLeaderSelector)
(Which I did via: grep "data loss" *)
I'm not a programmer: I am the admin for these machines, and I just want
to make sure everything is cool.
Oh, the server.properties has:
default.replication.factor=3
Thanks,
Alex