目录
2.3 修改集群中其他虚拟机的server.properties
1. kafka安装
1.1 准备工作
1)下载地址
2)本地文件保存目录
3)文件上传
将下载好的文件通过Termius工具,上传到虚拟机的/opt/software目录
1.2 安装
解压安装包到指定目录/opt/module目录下。
# /opt/software
[root@hadoop102 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/
1.3 修改名称
安装好的文件名过长,修改的短一点。
# /opt/module
[root@hadoop102 module]# mv kafka_2.12-3.0.0/ kafka
1.4 查看已安装的kafka目录
1)查看bin目录内容
所在目录: /opt/module/kafka/bin
注: kafka是由生产者、消费者、主题组成,其中每一个模块对应一个脚本文件(如上图)。
2)查看config目录内容
所在目录: /opt/module/kafka/config
kafka的每一个模块都对应一个配置文件。
server.properties配置文件记录有集群信息。
3)查看libs目录内容
全部都是第三方jar包。
1.5 创建文件存储目录
在/opt/module/kafka/目录下创建一个datas目录
[root@hadoop102 ~]# cd /opt/module/kafka
[root@hadoop102 kafka]# mkdir datas
1.6 配置环境变量
(1)在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置
[root@hadoop102 ~]# vim /etc/profile.d/my_env.sh
增加如下内容:
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
(2)刷新一下环境变量
[root@hadoop102 ~]# source /etc/profile
(3)查看环境变量
[root@hadoop102 ~]# echo $PATH
2. 集群配置
集群规划
hadoop102 | hadoop103 | hadoop104 |
zk | zk | zk |
kafka | kafka | kafka |
不是所有的服务器都要部署,而是那些服务器需要才部署。以上面三个为例:
2.1 修改server.properties配置文件
[root@hadoop102 ~]# cd /opt/module/kafka/config/
[root@hadoop102 config]# vim server.properties
修改三个参数: broker.id , log.dirs , zookeeper.connect;
输入以下内容:
#broker 的全局唯一编号,不能重复,只能是数字。kafka在整个集群中的身份唯一标识,不能重复
(hadoop102为0,hadoop103为1,hadoop104为2)
broker.id=0
#kafka存放数据的目录
log.dirs=/opt/module/kafka/datas
#配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka
2.2 分发kafka安装包
[root@hadoop102 ~]# xsync /opt/module/kafka/
返回到module目录下,对当前安装并修改的kafka进行分发;
2.3 修改集群中其他虚拟机的server.properties
分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties
中的 broker.id=1、broker.id=2
注:broker.id 不得重复,整个集群中唯一。
[root@hadoop103 ~]# vim /opt/module/kafka/config/server.properties
修改: broker.id=1
[root@hadoop104 ~]# vim /opt/module/kafka/config/server.properties
修改: broker.id=2
2.4 分发kafka环境变量
分发环境变量文件到其他节点,并刷新环境配置。
[root@hadoop102 ~]# xsync /etc/profile.d/my_env.sh
打开另外两台主机终端
[root@hadoop103 ~]# source /etc/profile
[root@hadoop104 ~]# source /etc/profile
3. Kafka集群的启停
前提: 启动前先启动zk集群,关闭前要先关闭kafka集群。
启停zk集群命令:
# 自动启动zk集群
[root@hadoop102 ~]# zk.sh start
# 自动停止zk集群
[root@hadoop102 ~]# zk.sh stop
查看集群运行进程: jpsall脚本
[root@hadoop102 ~]# jpsall
3.1 手动启停(不用)
1)手动启动
依次在 hadoop102、hadoop103、hadoop104 节点上启动 Kafka。
切换到kafka目录(cd /opt/module/kafka)
[root@hadoop102 kafka]# bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop103 kafka]# bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop104 kafka]# bin/kafka-server-start.sh -daemon config/server.properties
2) 手动停止
[root@hadoop102 kafka]# bin/kafka-server-stop.sh
[root@hadoop103 kafka]# bin/kafka-server-stop.sh
[root@hadoop104 kafka]# bin/kafka-server-stop.sh
3.2 自动启停
1)创建 kf.sh 脚本
在/root/bin 目录下创建文件 kf.sh 脚本文件。
[root@hadoop102 bin]$ vim /root/bin/kf.sh
脚本如下:
#! /bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo " --------启动 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
done
};;
esac
2)添加kf.sh文件执行权限
[root@hadoop102 bin]# chmod 777 kf.sh
3)启动集群
注意: 先启动zk集群
[root@hadoop102 ~]# kf.sh start
4)停止集群命令
注意: 先停止zk集群,否则只能通过kill -9 端口停止kafka。
[root@hadoop102 ~]# kf.sh stop
注意:停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper
集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止,
Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了(kill -9 端口)。
例如:
杀死hadoop102中的4301端口
kill -9 端口