(一)zookeeper安装部署
由于Kafka需要依赖于Zookeeper,所以在这我们需要先把Zookeeper安装部署起来。
1. zookeeper单机安装
zookeeper需要依赖于jdk,只要保证jdk已经正常安装即可。
-
下载zookeeper的安装包
进入Zookeeper的官网
最终下载链接如下:
https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz -
把安装包上传到bigdata01机器的/data/soft目录下,解压
-
修改配置文件
首先将 zoo_sample.cfg 重命名为 zoo.cfg
然后修改 zoo.cfg 中的 dataDir 参数的值, dataDir 指向的目录存储的是zookeeper的核心数据,所以这个目录不能使用tmp目录
dataDir=/data/soft/apache-zookeeper-3.5.8-bin/data
- 启动zookeeper服务
bin/zkServer.sh start
- 如果能看到QuorumPeerMain进程就说明zookeeper启动成功
注意:如果执行jps命令发现没有QuorumPeerMain进程,则需要到logs目录下去查看zookeeper-*.out这个日志文件。
也可以通过 zkServer.sh 脚本查看当前机器中zookeeper服务的状态
注意:使用zkServer.sh默认会连接本机2181端口的zookeeper服务,默认情况下zookeeper会监听2181端口,这个需要注意一下,因为后面我们在使用zookeeper的时候需要知道它监听的端口是哪个。
bin/zkServer.sh status
- 操作zookeeper
首先使用zookeeper的客户端工具连接到zookeeper里面,使用bin目录下面的 zlCli.sh 脚本,默认会连接本机的zookeeper服务。
bin/zkCli.sh
这样就进入zookeeper的命令行了。
在这里面可以操作Zookeeper中的目录结构
zookeeper中的目录结构和Linux文件系统的目录结构类似
zookeeper里面的每一个目录我们称之为节点(ZNode)
正常情况下我们可以把ZNode认为和文件系统中的目录类似,但是有一点需要注意:ZNode节点本身是可以存储数据的。
- zookeeper的使用命令
- 查看根节点下面有什么内容:ls /
- 创建节点,在test节点上存储数据hello: create /test hello
- 查看节点中的信息:get /test
- 删除节点: deleteall /test
- 停止zookeeper服务
bin/zkServer.sh stop
2. zookeeper集群安装
- 集群节点规划,使用三个节点搭建一个zookeeper集群
bigdata01
bigdata02
bigdata03
- 首先在bigdata01节点上配置zookeeper
v zoo_sample.cfg zoo.cfg
dataDir=/data/soft/apache-zookeeper-3.5.8-bin/data
server.0=bigdata01:2888:3888
server.1=bigdata02:2888:3888
server.2=bigdata03:2888:3888
创建目录保存 myid 文件,并且向 myid 文件中写入内容
myid 中的值其实是和 zoo.cfg 中 server 后面指定的编号是一一对应的
编号 0 对应的是 bigdata01 这台机器,所以在这里指定 0。
- 把修改好配置的zookeeper拷贝到其它两个节点
scp -rq apache-zookeeper-3.5.8-bin bigdata02:/data/soft
scp -rq apache-zookeeper-3.5.8-bin bigdata03:/data/soft
-
修改bigdata02和bigdata03上zookeeper中myid文件的内容
首先修改bigdata02节点上的myid文件 -
启动zookeeper集群
分别在 bigdata01、bigdata02、bigdata03 上启动zookeeper进程
在bigdata01上启动:bin/zkServer.sh start -
验证
分别在bigdata01、bigdata02、bigdata03上执行jps命令验证是否有 QuorumPeerMain 进程
如果都有就说明zookeeper集群启动正常了
执行 bin/zkServer.sh status 命令会发现有一个节点显示为 leader ,其他两个节点为 follower -
停止zookeeper集群
在bigdata01、bigdata02、bigdata03三台机器上分别执行bin/zkServer.sh stop命令
(二)kafka安装部署
注意:在安装kafka之前需要先确保zookeeper集群是启动状态。
1. kafka单机安装
- 下载链接如下:
https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.4.1/kafka_2.12-2.4.1.tgz
- 注意:kafka在启动的时候不需要安装scala环境,只有在编译源码的时候才需要,因为运行的时候
是在jvm虚拟机上运行的,只需要有jdk环境就可以了
- 修改配置文件:vi config/server.properties
broker.id:集群节点id编号,单机模式不用修改
listeners:默认监听9092端口
log.dirs:注意:这个目录不是存储日志的,是存储Kafka中核心数据的目录,这个目录默认是指
zookeeper.connect:kafka依赖的zookeeper
- 启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
-
验证:jps
启动成功之后会产生一个kafka进程 -
停止kafka
bin/kafka-server-stop.sh
2. kafka集群安装
-
集群节点规划,使用三个节点搭建一个kafka集群
bigdata01
bigdata02
bigdata03
注意:针对Kafka集群而言,没有主从之分,所有节点都是一样的。 -
首先在bigdata01节点上配置kafka
修改配置文件
注意:此时针对集群模式需要修改 broker.id 、 log.dirs 、以及 zookeeper.connect。
broker.id 的值默认是从0开始的,集群中所有节点的 broker.id 从0开始递增即可。
log.dirs 的值建议指定到一块存储空间比较大的磁盘上面,因为在实际工作中kafka中会存储很多数据,
我这个虚拟机里面就一块磁盘,所以就指定到/data目录下面了
zookeeper.connect 的值是zookeeper集群的地址,可以指定集群中的一个节点或者多个节点地址,多个节点地址之间使用逗号隔开即可 -
将修改好配置的kafka安装包拷贝到其它两个节点
scp -rq kafka_2.12-2.4.1 bigdata02:/data/soft/
scp -rq kafka_2.12-2.4.1 bigdata03:/data/soft/
-
修改bigdata02和bigdata03上kafka中broker.id的值
首先修改bigdata02节点上的broker.id的值为1 -
启动集群
分别在bigdata01、bigdata02、bigdata03上启动kafka进程
在bigdata01上启动
bin/kafka-server-start.sh -daemon config/server.properties
- 验证
分别在bigdata01、bigdata02、bigdata03上执行jps命令验证是否有kafka进程
如果都有就说明kafka集群启动正常了