前提条件
三台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 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