title: 搭建分布式Kafka集群
date: 2024-12-1 14:00:00
categories:
- 服务器
tags:
- Kafka
- 大数据
搭建分布式Kafka集群
在主节点上安装
Kafka
;
Kafka
使用Zookeeper
服务器来存储元数据信息
- 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Kafka(2.11-2.3.1)
前提
-
在
Kafka-2.8.0
版本以前,运行Kafka需要预先安装Zookeeper
-
在
Kafka 2.8.0
版本以后,引入了Kraft(Kafka Raft)模式,可以使Kafka在不依赖外部Zookeeper
的前提下运行 -
除此之外
Kafka
由Scala
语言编写,而Scala
语言是由JAVA
语言发展而来,所以需要JVM的运行环境
功能规划
Master | Slave1 | Slave2 |
---|---|---|
主节点 | 代理服务器 | 代理服务器 |
192.168.66.6 | 192.168.66.7 | 192.168.66.21 |
开始安装
1. 上传Kafka服务器
- 首先上传/下载Kafka的文件到服务器上,或直接进行以下的下载行为
# 使用wget命令下载Kafka文件(二选一)
wget -P /tmp/ -c 'https://repo.huaweicloud.com/artifactory/apache-local/kafka/2.3.1/kafka_2.11-2.3.1.tgz'
# 使用curl命令下载Kafka文件(二选一)
curl -C - 'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz' -O /tmp/
# 解压文件到指定目录
tar -zxvf /tmp/kafka_2.11-2.3.1.tgz -C /opt/module/
# 重命名文件夹
mv /opt/module/kafka_2.11-2.3.1/ /opt/module/kafka
2. 配置用户环境变量
cat >> ~/.bashrc << "EOF"
# ------------------- Kafka 配置--------------------
# 设置Kafka环境变量,指向Kafka安装目录
export KAFKA_HOME=/opt/module/kafka
# 将Kafka的bin目录添加到PATH环境变量
export PATH=$PATH:$KAFKA_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------
说明
举例 export PATH=$Kafka_HOME/bin:$PATH
英文冒号代表分隔
这段代码表示
1. 当你输入一个命令时,shell会首先在"KAFKA_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找
-------------------------------------------------------------
3. 修改配置文件
# 创建Kafka日志目录
mkdir /opt/module/kafka/logs
# 备份kafka配置文件
cp /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak
# 修改Kafka的日志存储目录
sed -i 's|log.dirs=/tmp/kafka-logs|log.dirs=/opt/module/kafka/logs|' /opt/module/kafka/config/server.properties
# 配置Kafka依靠指定ZooKeeper服务器进行集群管理和元数据存储
sed -i 's|zookeeper.connect=localhost:2181|zookeeper.connect=master:2181,slave1:2181,slave2:2181|' /opt/module/kafka/config/server.properties
----------------------------------------------
说明
1. 可以使用IP地址或使用主机名,前提是配置好hosts/DNS解析
2. 根据自己的配置,修改连接的主机的信息
-----------------------------------------------
4. 同步文件
# 同步到slave1机器
scp -r /opt/module/kafka/ slave1:/opt/module/
scp ~/.bashrc root@slave1:/root
# 同步到slave2机器
scp -r /opt/module/kafka/ slave2:/opt/module/
scp ~/.bashrc root@slave2:/root
5. 修改从节点配置
# 修改Slave1的broker-ID值
ssh slave1 "sed -i 's|broker.id=0|broker.id=1|' /opt/module/kafka/config/server.properties"
# 修改Slave2的broker-ID值
ssh slave2 "sed -i 's|broker.id=0|broker.id=2|' /opt/module/kafka/config/server.properties"
6. 环境变量生效
# master节点环境变量生效
source ~/.bashrc
# slave1节点环境变量生效
ssh slave1 'source ~/.bashrc'
# slave2节点环境变量生效
ssh slave2 'source ~/.bashrc'
安装结束
7. 前台启动一台Kafka服务器
在当前控制台前台启动Kafka,使用
Ctrl``C
停止kafka
# 在master节点上执行
kafka-server-start.sh $KAFKA_HOME/config/server.properties
8. 后台启动Kafka服务器集群
# 在master节点上执行
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 &
# 在slave1节点上执行
ssh slave1
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 &
exit
# 在slave2节点上执行
ssh slave2
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 &
exit
9.查看kafka进程
-
master会有
Kafka
的进程 -
slave1会有
Kafka
的进程 -
slave2会有
Kafka
的进程
# 命令
jps
10. 停止Kafka
# 停止master节点的Kafka服务
kafka-server-stop.sh
# 停止slave1节点的Kafka服务
ssh slave1 kafka-server-stop.sh
# 停止slave2节点的Kafka服务
ssh slave2 kafka-server-stop.sh
参考文档
-
Linux 搭建 Kafka 环境 - 详细教程_linux安装kafka-CSDN博客
-
kafka-2.3.1版本的安装_kafka2.3.1下载-CSDN博客
-
JVM-合理配置堆内存_xms和xmx设置多少合适-CSDN博客
-
Kafka的分布式安装及基本操作-刘宇_头歌kafka安装-CSDN博客