当前位置: 首页 > 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.lryc.cn/news/506357.html

相关文章:

  • 【后端面试总结】深入解析进程和线程的区别
  • java版电子招投标采购|投标|评标|竞标|邀标|评审招投标系统源码
  • SSM 赋能 Vue 助力:新锐台球厅管理系统的设计与实现的辉煌之路
  • C++ 并发专题 - C++线程同步的几种方法
  • 使用Python脚本进行编写批量根据源IP进行查询的语句用于态势感知攻击行为的搜索
  • Python中的zip/unzip:像拉拉链一样组合数据的艺术
  • 数电课设·简易数字钟(Quartus Ⅱ)
  • 大模型中RAG模型的检索过程是如何实现的?(附最佳实践资料)
  • python:用 sklearn.metrics 评价 K-Means 聚类模型
  • Spring依赖注入不同类型的数据
  • Linux大杂烩!!!
  • 12.19问答解析
  • C语言——实现杨氏矩阵
  • 授权模型PAM
  • 【Leecode】子集⭐⭐
  • Linux高性能服务器编程 | 读书笔记 | 12. 多线程编程
  • [HNCTF 2022 Week1]baby_rsa
  • 解析Java中的Stream API:函数式编程与性能优化
  • java简单题目练习
  • Kaggler日志--Day9
  • OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+
  • 麒麟信安参编的《能源企业数字化转型能力评价 技术可控》团体标准发布
  • 戴尔物理机更换完Raid控制器(阵列卡),启动服务器失败
  • 计算机基础知识——数据结构与算法(二)(山东省大数据职称考试)
  • docsify
  • GEE教程——使用 CHIRPS 和 GSMaP 数据集计算并可视化了特定区域的降水量
  • 前端实现页面自动播放音频方法
  • 【Nginx-5】Nginx 限流配置指南:保护你的服务器免受流量洪峰冲击
  • 【芯片设计- RTL 数字逻辑设计入门 番外篇 7.1 -- 基于ATE的IC测试原理】
  • SurfaceFlinger 学习