Zookeeper和Kafka安装
1、Windows下的安装
1.1 安装JAVA JDK
请参考《Windows环境下JDK的安装》
JDK版本:
1.2 安装ZooKeeper
1、 下载安装包
http://zookeeper.apache.org/releases.html#download
这里下载的版本为3.4.9
2、 解压并进入ZooKeeper目录:
3、进入C:\zsxsoftware\zookeeper-3.4.9\conf
, 将zoo_sample.cfg
复制并且重命名为zoo.cfg
4、 打开zoo.cfg
找到并编辑dataDir=C:\\zsxsoftware\\zookeeper-3.4.9\\data
(必须以\\
分割)
5、 添加系统变量:ZOOKEEPER_HOME=C:\zsxsoftware\zookeeper-3.4.9
6、 编辑path系统变量,添加路径:%ZOOKEEPER_HOME%\bin
7、 在zoo.cfg
文件中修改默认的Zookeeper端口(默认端口2181
)
8、 打开新的cmd,输入zkServer
,运行Zookeeper
9、 命令行提示如下:说明本地Zookeeper启动成功
注意:不要关了这个窗口。
zookeeper启动无法找到主类:使用zookeeper3.5.x
的版本会出现你描述的问题,把版本还为3.4.x
后可以解决
该问题。
1.3 安装Kafka
1、 下载安装包
http://kafka.apache.org/downloads
注意要下载二进制版本,这里下载的版本为2.12-0.11.0.0
2、 解压并进入Kafka目录
3、 进入config目录找到文件server.properties
并打开
4、 找到并编辑log.dirs=C:\\zsxsoftware\\kafka_2.12-0.11.0.0\\logs
5、 找到并编辑zookeeper.connect=localhost:2181
6、 Kafka会按照默认,在9092
端口上运行,并连接zookeeper的默认端口:2181
7、 进入Kafka安装目录C:\zsxsoftware\kafka_2.12-0.11.0.0
,打开命令行,输入:
shell
.\bin\windows\kafka-server-start.bat .\config\server.properties
注意:不要关了这个窗口,启用Kafka前请确保ZooKeeper实例已经准备好并开始运行。
1.4 测试
1、 创建主题,进入Kafka安装目录C:\zsxsoftware\kafka_2.12-0.11.0.0
,打开命令行,输入:
shell
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2、查看主题输入:
shell
.\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
3、 创建生产者,进入Kafka安装目录C:\zsxsoftware\kafka_2.12-0.11.0.0
,打开命令行,输入:
shell
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
输入hello
,回车。
注意:不要关了这个窗口
4、 创建消费者,进入Kafka安装目录C:\zsxsoftware\kafka_2.12-0.11.0.0
,打开命令行,输入:
shell
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
此时,往生产者窗口写入消息,消费者窗口也能同步的接收到消息
5、查看topic,进入Kafka安装目录C:\zsxsoftware\kafka_2.12-0.11.0.0
,打开命令行,输入:
shell
.\bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic test
1.5 操作日志的处理
kafka启动后,如果你去查看kafka所在的根目录,或者是kafka本身的目录,会发现已经默认生成一堆操作日志,
而且会不断生成不同时间戳的操作日志。
一番研究后,看了启动的脚本内容,发现启动的时候是会默认使用到这个log4j.properties
文件中的配置,而
在zoo.cfg
是不会看到本身的启动会调用到这个,还以为只有那一个日志路径。在这里配置一下就可以了,找到
config
下的log4j.properties
,将路径更改下即可,这样就可以归档在一个文件夹下边了,路径根据自己喜
好定义。
这两个路径是相互对应的。
另外如何消除不断生成日志的问题,就是同一天的不同时间会不停生成。修改这里,还是在
log4j.properties
中:本身都为trace,字面理解为会生成一堆跟踪日志,将其改为INFO即可。
2、Linux下的安装
主要介绍如何在Centos7
下安装zookeeper以及如何使用。
2.1 安装JDK
使用zookeeper前,必须先安装JDK。
JDK的安装请参考《Linux环境下JDK的安装》。
2.2 下载安装zookeeper
2.2.1 通过官网下载
https://archive.apache.org/dist/zookeeper/
https://downloads.apache.org/zookeeper/
本文中使用3.4.9
版本:zookeeper-3.4.9.tar.gz
2.2.2 解压
shell
# 解压
$ tar -xvf zookeeper-3.4.9.tar.gz
2.2.3 修改配置文件
shell
# 1.进入配置文件目录
$ cd conf/
# 2.将zoo_sample.cfg这个文件复制为zoo.cfg (注意:文件名一定要是zoo.cfg)
$ cp zoo_sample.cfg zoo.cfg
# 3.修改配置文件
$ vim zoo.cfg
properties
# 修改下面两项的内容
dataDir=/home/zhangshixing/kafka/zookeeper-3.4.9/data
clientPort=2181
注意:数据存放目录由自己决定,但是启动服务前一定要确保对应的目录存在,不然启动会失败。
2.2.4 创建data文件夹
shell
# 创建data目录
$ mkdir /home/zhangshixing/kafka/zookeeper-3.4.9/data
2.3 启动zookeeper
2.3.1 进入zookeeper下的bin目录
shell
$ cd /home/zhangshixing/kafka/zookeeper-3.4.9/bin
2.3.2 执行启动命令
shell
$ ./zkServer.sh start
启动成功后如下:
除了开启,再备注几个其他命令:
shell
# 停止
$ ./zkServer.sh stop
# 重启
$ ./zkServer.sh restart
# 查看状态
$ ./zkServer.sh status
虽然这样可以正常启动,但是每次都要进入到zookeeper的bin目录下,为了避免麻烦,可以将zookeeper设置开
机启动。
2.3.3 启动CLI
shell
$ ./zkCli.sh
2.4 设置zookeeper开机自动启动
2.4.1 切换到/lib/systemd/system/目录,创建自启动文件
shell
$ cd /lib/systemd/system/
$ vim zookeeper.service
文件内容如下:
shell
[Unit]
Description=zookeeperservice
After=network.target
[Service]
# zookeeper路径
WorkingDirectory=/home/zhangshixing/kafka/zookeeper-3.4.9
# zookeeper执行文件
ExecStart=/home/zhangshixing/kafka/zookeeper-3.4.9/bin/zkServer.sh start
User=root
Group=root
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
注意:zookeeper的路径需要修改成自己的!
2.4.2 设置自启动
shell
$ systemctl enable zookeeper.service
2.4.3 启动服务
shell
$ systemctl start zookeeper.service
2.4.4 查看启动状态
shell
$ systemctl status zookeeper.service
至此,在Linux下安装zookeeper就完成了!
2.5 下载安装kafka
本文主要介绍如何在Centos7下安装kafka,本文使用的kafka版本是:2.12-0.11.0.0
2.5.1 通过官网直接下载
http://kafka.apache.org/downloads
kafka_2.12-0.11.0.0.tgz
2.5.2 解压并进入kafka目录
shell
$ tar -xzf kafka_2.12-0.11.0.0.tgz
$ cd kafka_2.12-0.11.0.0/
2.5.3 启动kafka
1、启动kafka之前要确保zookeeper已经启动,如果没有启动,执行以下命令:
shell
$ ./zkServer.sh
2、启动kafka之前,需要修改kafka配置文件中的zookeeper地址,打开配置文件:
shell
$ vim config/server.properties
修改zookeeper.connect=192.168.94.186:2181
(这里修改成自己安装的zookeeper地址和端口即可),除了
修改zookeeper服务地址外,还有其他配置项,如日志储存路径、消息的最大持久化时间、端口等等,这里不再赘
述。
properties
zookeeper.connect=192.168.94.186:2181
log.dirs=/home/zhangshixing/kafka/kafka_2.12-0.11.0.0/logs
3、启动kafka
shell
$ bin/kafka-server-start.sh config/server.properties
2.6 设置kafka开机自动启动
2.6.1 切换到/lib/systemd/system/目录,创建自启动文件
shell
$ cd /lib/systemd/system/
$ vim kafka.service
文件内容如下:
shell
[Unit]
Description=kafkaservice
After=network.target
[Service]
WorkingDirectory=/home/zhangshixing/kafka/kafka_2.12-0.11.0.0
ExecStart=/home/zhangshixing/kafka/kafka_2.12-0.11.0.0/bin/kafka-server-start.sh config/server.properties
ExecStop=/home/zhangshixing/kafka/kafka_2.12-0.11.0.0/bin/kafka-server-stop.sh
User=root
Group=root
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
2.6.2 设置自启动
shell
$ systemctl enable kafka.service
2.6.3 立即启动服务
shell
$ systemctl start kafka.service
2.6.4 查看启动状态
shell
$ systemctl status kafka.service
至此,linux安装kafka就完成了!
3、Docker安装
3.1 搜索zookeeper镜像
shell
$ docker search zookeeper
3.2 拉取zookeeper镜像
shell
$ docker pull wurstmeister/zookeeper
3.3 启动zookeeper
shell
$ docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
3.4 查看zookeeper启动信息
shell
$ docker logs -f zookeeper
3.5 搜索kafka镜像
shell
$ docker search kafka
3.6 拉取kafaka镜像
shell
$ docker pull wurstmeister/kafka
3.7 启动kafka
shell
$ docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.94.186:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.94.186:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -t wurstmeister/kafka
shell
# 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e KAFKA_BROKER_ID=0
# 配置zookeeper管理kafka的路径192.168.94.186:2181
-e KAFKA_ZOOKEEPER_CONNECT=192.168.94.186:2181
# 把kafka的地址端口注册给zookeeper
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.94.186:9092
# 配置kafka的监听端口
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
# 允许使用PLAINTEXT侦听器
-e ALLOW_PLAINTEXT_LISTENER=yes
3.8 查看kafka启动信息
shell
$ docker logs -f kafka
3.9 测试
shell
# 进入kafka容器
# 创建Replication为1,Partition为1的topic
$ docker exec -it kafka /bin/sh
$ cd /opt/kafka_2.13-2.8.1
$ bin/kafka-topics.sh --create --zookeeper 192.168.94.186:2181 --replication-factor 1 --partitions 1 --topic partopic
shell
# 查看topic的状态
$ bin/kafka-topics.sh --describe --zookeeper 192.168.94.186:2181 --topic partopic
shell
# 发送kafka消息
$ bin/kafka-console-producer.sh --broker-list 192.168.94.186:9092 --topic partopic
shell
# 接收消息
$ docker exec -it kafka /bin/sh
$ cd /opt/kafka_2.13-2.8.1
$ bin/kafka-console-consumer.sh --bootstrap-server 192.168.94.186:9092 --topic partopic --from-beginning