前提条件
三台Linux虚拟机,这里Linux使用的是CentOS7?
安装好zookeeper集群,可参考ZooKeeper集群的安装
集群规划
node2 | node3 | node4 |
---|
zk | zk | zk | kafka | kafka | kafka |
安装步骤
下载
下载安装包kafka_2.11-2.4.1.tgz ,下载地址https://kafka.apache.org/downloads ,将安装包上传到Linux
解压
[hadoop@node2 installfile]$ tar -zxvf kafka_2.11-2.4.1.tgz -C ~/soft
?
[hadoop@node2 installfile]$ cd ~/soft/
?
[hadoop@node2 soft]$ ls
hadoop-3.1.3 jdk1.8.0_212 kafka_2.11-2.4.1 zookeeper-3.5.7
?
创建logs目录
[hadoop@node2 soft]$ cd kafka/
[hadoop@node2 kafka]$ ls
bin config libs LICENSE NOTICE site-docs
[hadoop@node2 kafka]$ mkdir logs
[hadoop@node2 kafka]$
修改配置文件server.properties
# The id of the broker. This must be set to a unique integer for each broker. broke id不能重复
broker.id=0
?
delete.topic.enable=true
?
log.dirs=/home/hadoop/soft/kafka/data
log.dirs 就是数据目录,如果设置为logs,数据目录就会和logs目录在同一个目录下。设置为data目录,logs目录和data目录会分开存放。
修改环境变量
# 修改环境变量
[hadoop@node2 config]$ sudo nano /etc/profile.d/my_env.sh
?
# 末尾添加内容如下:
#KAFKA_HOME
export KAFKA_HOME=/home/hadoop/soft/kafka
export PATH=$PATH:$KAFKA_HOME/bin
?
# 让环境变量生效
[hadoop@node2 config]$ source /etc/profile.d/my_env.sh
同样的方法,在node3 、node4 机器上添加kafka环境变量
分发安装包
[hadoop@node2 config]$ cd ~/soft
?
[hadoop@node2 soft]$ xsync kafka
修改node3 broker id
[hadoop@node3 config]$ nano server.properties
?
broker.id=1
修改node4 broker id
[hadoop@node4 ~]$ cd $KAFKA_HOME/config
[hadoop@node4 config]$ nano server.properties
?
broker.id=2
启动zk集群(三台都执行)
[hadoop@node2 ~]$ zkServer.sh start
[hadoop@node3 ~]$ zkServer.sh start
[hadoop@node4 ~]$ zkServer.sh start
启动kafka(三台都执行)
[hadoop@node2 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka/config/server.properties
[hadoop@node3 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka/config/server.properties
[hadoop@node4 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka/config/server.properties
查看进程(三台都执行)
[hadoop@node2 ~]$ jps
1987 Jps
1898 Kafka
1499 QuorumPeerMain
?
[hadoop@node3 ~]$ jps
2024 Jps
1501 QuorumPeerMain
1903 Kafka
?
[hadoop@node4 ~]$ jps
1896 Kafka
2008 Jps
1500 QuorumPeerMain
?
测试使用
创建topic
[hadoop@node2 soft]$ kafka-topics.sh --zookeeper node2:2181/kafka --create --replication-factor 3 --partitions 1 --topic first
Created topic first
查看topic
[hadoop@node2 soft]$ kafka-topics.sh --zookeeper node2:2181/kafka --list
first
Kafka集群启动停止脚本
创建脚本
进入~/bin 目录,创建kf.sh
[hadoop@node2 soft]$ cd ~/bin
[hadoop@node2 bin]$ vim kf.sh
kf.sh 内容如下:
#! /bin/bash
?
case $1 in
"start"){
? ?for i in node2 node3 node4
? ?do
? ? ? ?echo " --------启动 $i Kafka-------"
? ? ? ?ssh $i "/home/hadoop/soft/kafka/bin/kafka-server-start.sh -daemon /home/hadoop/soft/kafka/config/server.properties"
? ?done
};;
"stop"){
? ?for i in node2 node3 node4
? ?do
? ? ? ?echo " --------停止 $i Kafka-------"
? ? ? ?ssh $i "/home/hadoop/soft/kafka/bin/kafka-server-stop.sh stop"
? ?done
};;
esac
添加权限
[hadoop@node2 bin]$ chmod u+x kf.sh
测试kf集群启动脚本
[hadoop@node2 bin]$ kf.sh start
--------启动 node2 Kafka-------
--------启动 node3 Kafka-------
--------启动 node4 Kafka-------
[hadoop@node2 bin]$ jps
2071 Jps
2041 Kafka
测试kf集群停止脚本
[hadoop@node2 bin]$ kf.sh stop
--------停止 node2 Kafka-------
No kafka server to stop
--------停止 node3 Kafka-------
No kafka server to stop
--------停止 node4 Kafka-------
No kafka server to stop
[hadoop@node2 bin]$ jps
2121 Jps
?
完成!enjoy it
|