kafka是一种高吞吐量的分布式发布订阅消息系统,这几天要上kafka,只在其中的一个节点使用,结合具体的项目实践在此将kafka的本地安装部署流程记录下来与各位同仁分享交流。

准备工作:

kafka设置密码 单机版本 单机版kafka部署_kafka设置密码 单机版本

上述的文件除了jdk以外均放在/usr/local/kafka目录下。

1、安装jdk,kafka的使用要用到jdk
首先检查有无jdk:java -version
cd /usr/local/hadoop(本例中我是将jdk的安装包放到hadoop文件夹下,各位可以依据自己情况)
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
将下载的安装包上传到服务器上的/usr/local/hadoop文件夹下
tar-zxvf jdk-7u79-linux-x64.tar.gz
配置jdk的环境变量:
vim /etc/profile

kafka设置密码 单机版本 单机版kafka部署_安装_02

使其立即生效 source /etc/profile
检查是否安装成功:java –version

kafka设置密码 单机版本 单机版kafka部署_vim_03

至此jdk安装配置成功。

2、安装zookeeper
cd /usr/local/kafka
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
tar -zxvf zookeeper-3.3.6.tar.gz
vim /etc/profile

kafka设置密码 单机版本 单机版kafka部署_kafka设置密码 单机版本_04

使之立即生效
source /etc/profile

测试zookeeper是否安装成功
cd /usr/local/zookeeper-3.3.6/bin
./zkServer.sh start

kafka设置密码 单机版本 单机版kafka部署_kafka_05

如上图所示,即为zookeeper安装配置成功。

3、安装kafka
cd /usr/local/kafka
wget https://archive.apache.org/dist/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz
tar -zxvf kafka_2.8.0-0.8.0.tar.gz
配置kafka,修改文件server.properties
cd /usr/local/kafka/kafka_2.8.0-0.8.0/config

kafka设置密码 单机版本 单机版kafka部署_zookeeper_06

vim server.properties

kafka设置密码 单机版本 单机版kafka部署_kafka_07

将上图中的host.name处写上本地服务器的IP地址

kafka设置密码 单机版本 单机版kafka部署_zookeeper_08

上图中的log.dirs结合自己所建的文件夹路径填写,没有严格要求

kafka设置密码 单机版本 单机版kafka部署_vim_09

上图中的红框处默认为2181端口

配置kafka下zookeeper
mkdir /usr/local/kafka/zookeeper #创建zookeeper目录
mkdir /usr/local/kafka/log/zookeeper #创建zookeeper日志目录
cd /usr/local/kafka/kafka_2.8.0-0.8.0/config
vim zookeeper.properties

kafka设置密码 单机版本 单机版kafka部署_kafka_10

上图中的dataDir和dataLogDir可以依据自己建立的文件夹路径填写。

4、创建启动和关闭kafka脚本
(1)创建kafka脚本
vim kafkastart.sh

kafka设置密码 单机版本 单机版kafka部署_安装_11

(2)创建关闭kafka脚本
vim kafkastop.sh

kafka设置密码 单机版本 单机版kafka部署_kafka_12

(3)添加脚本执行权限
chmod +x kafkastart.sh
chmod +x kafkastop.sh

(4)设置脚本开机启动自动执行
vim /etc/rc.d/rc.local

kafka设置密码 单机版本 单机版kafka部署_kafka设置密码 单机版本_13

5、测试kafka

(1)创建主题
cd /usr/local/kafka/kafka_2.8.0-0.8.0/bin
./kafka-create-topic.sh –partition 1 –replica 1 –zookeeper localhost:2181 –topic test

kafka设置密码 单机版本 单机版kafka部署_vim_14

检查主题是否创建成功
./kafka-list-topic.sh –zookeeper localhost:2181

kafka设置密码 单机版本 单机版kafka部署_zookeeper_15

(2)启动producer
./kafka-console-producer.sh –broker-list 192.168.18.229:9092 –topic test
(192.168.18.229是本地服务器IP地址,读者根据情况填写)

kafka设置密码 单机版本 单机版kafka部署_vim_16

如上图所示,输入hello kafka!后,回车
然后另外打开一个shell终端
cd /usr/local/kafka/kafka_2.8.0-0.8.0/bin
在此终端下启动consumer
./kafka-console-consumer.sh –zookeeper localhost:2181 –topic test

kafka设置密码 单机版本 单机版kafka部署_安装_17

由上图可见,终端1生产者下所输入的hello kafka!,在终端2下的消费者下显现,至此kafka的单机安装部署完成。

(6)关闭kafka

cd /usr/local/kafka
./kafkastop.sh

附:有可能遇到的问题和解决方案

问题1: Failed to acquire lock on file .

kafka设置密码 单机版本 单机版kafka部署_kafka_18

解决方案:
这是因为之前已经有kafka进程在运行,可以如下:
通过jps命令查看进程号,并kill掉,然后重新启动kafka即问题解决

kafka设置密码 单机版本 单机版kafka部署_安装_19

问题2:BindException: Address already in use

kafka设置密码 单机版本 单机版kafka部署_安装_20

解决方案:
这个有时可以忽略,只要最后成功启动了kafka就可以,也可以将server.properties下的2181的端口号换一下,这个报错是因为2181端口被占用了。