三台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 zookeeper.connect=node2:2181,node3:2181,node4:2181/kafka
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 firstKafka集群启动停止脚本 创建脚本
进入~/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



