当前位置: 首页 > news >正文

搭建分布式Kafka集群

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的前提下运行

  • 除此之外KafkaScala语言编写,而Scala语言是由JAVA语言发展而来,所以需要JVM的运行环境

功能规划

MasterSlave1Slave2
主节点代理服务器代理服务器
192.168.66.6192.168.66.7192.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

参考文档

  1. Linux 搭建 Kafka 环境 - 详细教程_linux安装kafka-CSDN博客

  2. kafka-2.3.1版本的安装_kafka2.3.1下载-CSDN博客

  3. JVM-合理配置堆内存_xms和xmx设置多少合适-CSDN博客

  4. Kafka的分布式安装及基本操作-刘宇_头歌kafka安装-CSDN博客


http://www.mrgr.cn/news/80687.html

相关文章:

  • 系统漏洞扫描服务:安全风险识别与防护指南
  • 网络安全产品架构图 网络安全相关产品
  • Spring Boot从入门到精通:核心知识点+实战指南
  • LLM学习笔记2——使用Docker(Ollama+OpenWebUI)实现本地部署DeepSeek-R1-14B模型
  • 【CubeMX-HAL库】STM32F407—无刷电机学习笔记
  • 组件库选择:ElementUI 还是 Ant Design
  • Vue2二、指令补充,computed 计算属性vs方法,watch 侦听器,
  • 遇到“REMOTE HOST IDENTIFICATION HAS CHANGED!”(远程主机识别已更改)的警告
  • 知道一个服务器IP地址,如何attack对方美国
  • 从0开始写android 之xwindow
  • MYSQL 利用concat函数 生成更新或者插入SQL
  • HUAWEI-eNSP交换机链路聚合(手动负载分担模式)
  • go 自己写序列化函数不转义
  • linux安装mysql
  • 二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
  • Python 在Word文档中插入图片的3种方式(插入到段落、插入到指定位置、插入到每一页)
  • spring\strust\springboot\isp前后端那些事儿
  • 三、使用langchain搭建RAG:金融问答机器人--检索增强生成
  • iClient3D for Cesium 实现限高分析
  • 【Nginx-4】Nginx负载均衡策略详解
  • 阮一峰C语言教程_10字符串
  • 最新ubuntu20.04安装docker流畅教程
  • 数据结构十大排序之(冒泡,快排,并归)
  • 【济大期末数据库】SQL语法速成
  • 跟着AI 学AI开发二,本地部署自己的Chat GPT
  • 解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题