Kafka Automatic startup in Mac Tutorial
Apache Kafka is a highly-scalable publish-subscribe messaging system that can serve as the data backbone in distributed applications. With Kafka’s Producer-Consumer model it becomes easy to implement multiple data consumers that do live monitoring as well persistent data storage for later analysis.
Note: You need zookeeper to setup kafka.
In Mac you can either install kafka via home brew using below command
brew install kafka
which will install it in /usr/local/Cellar/kafka directory.
*This will also install all dependencies, like zookeeper which is required to run kafka server.
or
You can also manually download it and extract it in /usr/local/kafka/ directory.
Now all you need is to add a plist file in order to have kafka running on startup and not manually running it everytime. Verified to be working in Mac-OS 10.12
Before moving ahead make sure you setup zookeeper to start automatically as below is dependent on zookeeper running. Read here.
1. Go to the kafka installation directory - usually /usr/local/kafka/kafka_2.11/
cd /usr/local/kafka/kafka_2.11/
2. Create a file named - homebrew.mxcl.kafka.plist
vi homebrew.mxcl.kafka.plist
or
sudo vi homebrew.mxcl.kafka.plist
3. Add below contents to the file.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <dict> <key>OtherJobEnabled</key> <string>homebrew.mxcl.zookeeper</string> </dict> <key>Label</key> <string>homebrew.mxcl.kafka</string> <key>ProgramArguments</key> <array> <string>/usr/local/kafka/kafka_2.11/bin/kafka-server-start-custom.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/kafka/kafka_2.11</string> <key>StandardErrorPath</key> <string>/usr/local/kafka/kafka_2.11/kafka.err</string> <key>StandardOutPath</key> <string>/usr/local/kafka/kafka_2.11/kafka.out</string> </dict> </plist>
Note that you need to create a custom kafka startup script which will wait for a minute before starting kafka so that on startup zookeeper is started.
vi /usr/local/kafka/kafka_2.11/bin/kafka-server-start-custom.sh
Add below contents to that file
#!/bin/bash sleep 60 /usr/local/kafka/current/bin/kafka-server-start.sh /usr/local/kafka/current/config/server.properties4. Create a symbolic link to this file in ~/Library/LaunchAgents
ln -sfv /usr/local/kafka/kafka_2.11/homebrew.mxcl.kafka.plist ~/Library/LaunchAgents/
5. Now just use launchctl to load this plist file using below command
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.kafka.plist
Now reboot your Mac and kafka should be running after startup :)
Additional Kafka Tips
Starting Kafka Server
kafka-server-start.sh ../conf/server.properties
List Kafka Topics
bin/kafka-topics.sh --list --zookeeper localhost:2181
No comments :
Post a Comment