【大数据】Kafka安装与配置
2025-06-16 11:36:40 # 大数据

大数据学习记录。

  1. 【大数据】虚拟机Fusion初始化系统CentOS9
  2. 【大数据】Hadoop安装与配置
  3. 【大数据】Flink安装与配置

1. 软件安装

官网下载 kafka 和 zookeeper。

  • kafka_2.12-3.8.1.tgz
  • apache-zookeeper-3.8.4-bin.tar.gz

将上面的包下载后传到 hadoop102 下的/opt/software下。解压到/opt/module下。

1
2
3
cd /opt/software/
tar -zxf kafka_2.12-3.8.1.tgz -C /opt/module/
tar -zxf apache-zookeeper-3.8.4-bin.tar.gz -C /opt/module/

软件分发到其他节点。

1
2
xsync /opt/module/kafka_2.12-3.8.1
xsync /opt/module/zookeeper-3.8.4

2. 配置

2.1 zookeeper 配置

配置服务器编号。

到zk的home目录下,创建zkData目录。

1
2
cd /opt/module/zookeeper-3.8.4
mkdir zkData

在该zkData目录下,创建myid文件,内容如下

1
1

修改zk的配置文件,到conf目录下,拷贝zoo_simple.cfg到当前目录,名为zoo.cfg。

1
cp zoo_simple.cfg zoo.cfg

编辑zoo.cfg文件,做如下修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改
dataDir=/opt/module/zookeeper-3.8.4/zkData

# 追加
server.1=hadoop102:2888:3888
server.2=hadoop103:2888:3888
server.3=hadoop104:2888:3888

# server.A=B.C.D
# A 是一个数字 表示这是第号服务器 myid中的值
# B 是 A 服务器的主机名
# C 是 A 服务器与集群中的主服务器(Leader)交换信息的端口
# D 是 A 服务器用于主服务器(Leader)选举的端口

分发配置,后修改每台服务器的myid,我的三台机器对应关系如下。

1
2
3
hadoop102 -> 1
hadoop103 -> 2
hadoop104 -> 3

2.2 zookeeper 起停

使用bin/zkServer.sh进行起停

1
2
3
bin/zkServer.sh start # 启动本机的zk
bin/zkServer.sh stop # 停止本机的zk
bin/zkServer.sh status # 查看本机的zk的状态

起停脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash

# 启停zk
# 参数:
# - start 启动
# - stop 停止
# - status 查看状态

if [ $# -lt 1 ]
then
echo "No Args Input"
exit;
fi

case $1 in
"start") {
for i in hadoop102 hadoop103 hadoop104
do
echo ---------------------- zk $i 启动 ---------------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh start"
done
}
;;
"stop") {
for i in hadoop102 hadoop103 hadoop104
do
echo ---------------------- zk $i 停止 ---------------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh stop"
done
}
;;
"status") {
for i in hadoop102 hadoop103 hadoop104
do
echo ---------------------- zk $i 状态 ---------------------------
ssh $i "/opt/module/zookeeper-3.8.4/bin/zkServer.sh status"
done
}
;;
*)
echo "Input Args Error"
;;
esac

2.3 kafka 配置

到kafka的home目录下,修改config/server.properties文件。

1
2
3
4
broker.id=1
advertised.listeners=PLAINTEXT://hadoop102:9092
log.dirs=/opt/module/kafka_2.12-3.8.1/data
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

分发配置,到每个节点修改config/server.properties文件中的broker.idadvertised.listeners,对应关系如下。

1
2
3
4
5
6
7
8
9
hadoop102
- broker.id=1
- advertised.listeners=PLAINTEXT://hadoop102:9092
hadoop103
- broker.id=2
- advertised.listeners=PLAINTEXT://hadoop103:9092
hadoop104
- broker.id=3
- advertised.listeners=PLAINTEXT://hadoop104:9092

2.4 kafka 起停

kafka要依赖zk,所以在在启动kafka之前要先启动zk。

kafka的起停命令。

1
2
3
4
# 启动本机的kafka
bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-3.8.1/config/server.properties
# 停止本机的kafka
bin/kafka-server-stop.sh

起停脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

# 启停kafka
# 参数:
# - start 启动
# - stop 停止

if [ $# -lt 1 ]
then
echo "No Args Input"
exit;
fi

case $1 in
"start") {
for i in hadoop102 hadoop103 hadoop104
do
echo ---------------------- kafka $i 启动 ---------------------------
ssh $i "/opt/module/kafka_2.12-3.8.1/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-3.8.1/config/server.properties"
done
}
;;
"stop") {
for i in hadoop102 hadoop103 hadoop104
do
echo ---------------------- kafka $i 停止 ---------------------------
ssh $i "/opt/module/kafka_2.12-3.8.1/bin/kafka-server-stop.sh"
done
}
;;
*)
echo "Input Args Error"
;;
esac