Zookeeper和Kafka安装

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
相关推荐
floret*5 小时前
Kafka高频面试题详解
分布式·kafka
知否&知否6 小时前
kafka中是如何快速定位到一个offset的
分布式·kafka
꧁薄暮꧂7 小时前
Kafka生产者如何提高吞吐量?
分布式·kafka
floret*10 小时前
Kafka高频面试题详解(consumer端)
kafka
晴子呀12 小时前
KafKa为什么这么快?
分布式·kafka
꧁薄暮꧂13 小时前
zk在kafka集群中有何作用
分布式·kafka
KasarJ16 小时前
kafka 的一些问题,夺命15连问后续
大数据·kafka
知否&知否16 小时前
kafka如何知道哪个消费者消费哪个分区?
分布式·kafka·debian
The博宇16 小时前
大数据面试题--kafka夺命连环问(后10问)
大数据·分布式·kafka
小王同学mf17 小时前
kafka面试题part-3
分布式·kafka