Recently, I did a setup of Kafka on a Windows system and shared a Kafka guide to understand and learn. I was using a Win10 VM on my MacBook. It was not a breeze setup and had few hiccups on the way. It took some time for me to resolve them one after another looking around on web. Collating all of them here for quick reference.
ERROR #1
When
I tried to start Zookeeper.
Command
zookeeper-server-start.bat config\zookeeper.properties
Error
java.lang.IllegalArgumentException: config/zookeeper.properties file is missing
Stack Trace
INFO Reading configuration from: config/zookeeper.properties
(org.apache.zookeeper.server.quorum.QuorumPeerConfig)
[2014-08-21 11:53:55,748] FATAL Invalid config, exiting abnormally
(org.apache.zookeeper.server.quorum.QuorumPeerMain)
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException:
Error processing config/zookeeper.properties
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:110)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun
(QuorumPeerMain.java:99)
at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:76)
Caused by: java.lang.IllegalArgumentException: config/zookeeper.properties file is missing
at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:94)
... 2 more
How I Solved?
It was clearly the case of relative path. config/zookeeper.properties was at two roots lower than where the start up script was. Either I had to correct the level or use an absolute path to move ahead.
zookeeper-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\zookeeper.properties
rem OR relative path option below
zookeeper-server-start.bat ../../config/zookeeper.properties
ERROR #2
When
Zookeeper is up and running. Attempted to start Kafka server and it failed.
Command
kafka-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\server.properties
Error
kafka.zookeeper.ZooKeeperClientTimeoutException:
Timed out waiting for connection while in state: CONNECTING
Stack Trace
........
........
2020-07-19 01:20:32,081 ERROR Fatal error during KafkaServer startup.
Prepare to shutdown (kafka.server.KafkaServer) [main]
kafka.zookeeper.ZooKeeperClientTimeoutException:
Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:268)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251)
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:264)
at kafka.zookeeper.ZooKeeperClient.(ZooKeeperClient.scala:97)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1694)
at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:348)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:372)
at kafka.server.KafkaServer.startup(KafkaServer.scala:202)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
at kafka.Kafka$.main(Kafka.scala:75)
at kafka.Kafka.main(Kafka.scala)
2020-07-19 01:20:32,088 INFO shutting down (kafka.server.KafkaServer) [main]
2020-07-19 01:20:32,105 INFO shut down completed (kafka.server.KafkaServer) [main]
2020-07-19 01:20:32,106 ERROR Exiting Kafka. (kafka.server.KafkaServerStartable) [main]
2020-07-19 01:20:32,121 INFO shutting down (kafka.server.KafkaServer) [kafka-shutdown-hook]
How I Solved?
Investigation lead to increasing the timeout settings
for Kafka-Zookeeper. Because of environment settings (RAM, CPU, etc), it turns out this plays some role.
I updated the ${kafka_home}/config/server.properties file:
# Timeout in ms for connecting to zookeeper (default it was 18000)
zookeeper.connection.timeout.ms=36000
I read many other reasons for this error (did not look applicable to my case) like:
- zookeeper service not running
- restarting system
- zookeeper is hosted on zookeeper:2181 or other server name instead of localhost:2181
ERROR #3
When
Zookeeper is up and running. Attempted to start Kafka server and it failed.
Command
kafka-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\server.properties
Error
java.lang.OutOfMemoryError: Map failed OR java.io.IOException: Map failed
Stack Trace
.......
.......
java.io.IOException: Map failed
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:944)
at kafka.log.AbstractIndex$$anonfun$resize$1.apply(AbstractIndex.scala:115)
at kafka.log.AbstractIndex$$anonfun$resize$1.apply(AbstractIndex.scala:105)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:213)
at kafka.log.AbstractIndex.resize(AbstractIndex.scala:105)
at kafka.log.LogSegment.recover(LogSegment.scala:256)
at kafka.log.Log.kafka$log$Log$$recoverSegment(Log.scala:342)
at kafka.log.Log.recoverLog(Log.scala:427)
at kafka.log.Log.loadSegments(Log.scala:402)
at kafka.log.Log.<init>(Log.scala:186)
at kafka.log.Log$.apply(Log.scala:1609)
at kafka.log.LogManager$$anonfun$loadLogs$2$$anonfun$5$$anonfun$apply$12$$anon
fun$apply$1.apply$mcV$sp(LogManager.scala:172)
at kafka.utils.CoreUtils$$anon$1.run(CoreUtils.scala:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Map failed
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:941)
... 17 more
How I Solved?
It turned out related to Java heap size
. I made a change in the Kafka startup script file: ${kafka_home}/bin/windows/kafka-server-start.bat
IF NOT ERRORLEVEL 1 (
rem 32-bit OS
set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
) ELSE (
rem 64-bit OS
rem set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G => Commented this
rem added this below line
set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
)
Though, while looking for solution, quite a few also solved it up upgrading their Java from 32bit to 64bit application. I did not try this solution as had other Java setup dependencies on my system that I wanted to keep intact.
ERROR #4
When
I tried to delete Kafka topic because I was having problems while pushing message from Producer.
Command
kafka-topics.bat --list --bootstrap-server localhost:9092 --delete --topic my_topic_name
Error
Topic test is already marked for deletion
Stack Trace
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
How I Solved?
I enabled topic deletion configuration. It needs to be set as delete.topic.enable = true
in file ${kafka_home}/config/server.properties. Restarted the server post updating the config.
# Delete topic enabled
delete.topic.enable=true
ERROR #5
When
Zookeeper & Kafka is up and running. I get an error when I try to create a Topic.
Command
kafka-topics.bat --create --bootstrap-server localhost:9092
--replication-factor 1 --partitions 1 --topic testkafka
Error
org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment
Stack Trace
Error while executing topic command : org.apache.kafka.common.errors.TimeoutException:
Timed out waiting for a node assignment.
[2020-07-19 01:41:35,094] ERROR java.util.concurrent.ExecutionException:
org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
at org.apache.kafka.common.internals.KafkaFutureImpl.access$000(KafkaFutureImpl.java:32)
at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await
(KafkaFutureImpl.java:89)
at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:163)
at kafka.admin.TopicCommand$TopicService.createTopic(TopicCommand.scala:134)
at kafka.admin.TopicCommand$TopicService.createTopic$(TopicCommand.scala:129)
at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:157)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.apache.kafka.common.errors.TimeoutException:
Timed out waiting for a node assignment.
(kafka.admin.TopicCommand$)
How I Solved?
For once, it worked for me as is but when I tried again later, I kept getting this error. While looking on the web, suggestions were to enable listener and set it up like: listeners=PLAINTEXT://localhost:9093
in the server config file.
Before attempting this, I rebooted my system as it was little sluggish too. Turns out, mostly it was memory issue
. I was in a Windows VM and probably it was craving for memory space. Without a change, things worked fine as is for me.
ERROR #6
When
This was during another instance of Kafka setup (from start) in a few days. Zookeeper is up and running. Attempted to start Kafka server and it failed.
Command
kafka-server-start.bat C:\Installs\kafka_2.12-2.5.0\config\server.properties
Error
It was around logs or lock file.
How I Solved?
Looking at details, it hinted me to look into pre-existing (something related to my previous setup). I went ahead and deleted the logs and data folder
that was auto created when I moved ahead with the entire process setup. Post this, the error was gone. Believe my server shutdown was not smooth and thus something was interfering with the current startup.
Hope these would help. Keep learning!