当前位置: 首页 > 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博客

相关文章:

搭建分布式Kafka集群

title: 搭建分布式Kafka集群 date: 2024-12-1 14:00:00 categories: - 服务器 tags: - Kafka - 大数据搭建分布式Kafka集群 在主节点上安装Kafka&#xff1b; Kafka使用Zookeeper服务器来存储元数据信息 本次实验环境&#xff1a;Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeep…...

【后端面试总结】深入解析进程和线程的区别

在操作系统和并发编程中&#xff0c;进程和线程是两个核心概念。它们各自承担着不同的职责&#xff0c;并在多任务处理中发挥着关键作用。本文将从定义、特性、应用场景以及优缺点等多个方面对进程和线程进行详细对比&#xff0c;帮助读者深入理解它们之间的区别。 一、进程和…...

java版电子招投标采购|投标|评标|竞标|邀标|评审招投标系统源码

招投标管理系统是一款适用于招标代理、政府采购、企业采购和工程交易等领域的企业级应用平台。该平台以项目为主线&#xff0c;从项目立项到项目归档&#xff0c;实现了全流程的高效沟通和协作。通过该平台&#xff0c;用户可以实时共享项目数据信息&#xff0c;实现规范化管理…...

SSM 赋能 Vue 助力:新锐台球厅管理系统的设计与实现的辉煌之路

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…...

C++ 并发专题 - C++线程同步的几种方法

一&#xff1a;概述 线程同步是多线程编程中的一个重要概念&#xff0c;它用于控制多个线程之间对共享资源的访问&#xff0c;避免竞态条件&#xff08;race condition&#xff09;和数据不一致的问题。线程同步确保在多线程环境中&#xff0c;多个线程访问共享数据时能够按照某…...

使用Python脚本进行编写批量根据源IP进行查询的语句用于态势感知攻击行为的搜索

使用Python脚本进行编写批量根据源IP进行查询的语句 以下根据ip-list集里面的IP地址&#xff08;可以自行扩充&#xff09;&#xff0c;然后采用srcaddress "{ip}" or 的形式进行打印并存储在路径为&#xff1a;桌面的IOC结果.txt --------------------------代码如…...

Python中的zip/unzip:像拉拉链一样组合数据的艺术

今天让我们一起探讨Python中一个优雅而强大的内置功能&#xff1a; zip 和 unzip 。听名字就知道&#xff0c;它就像我们衣服上的拉链一样&#xff0c;能把两边的数据完美地咬合在一起。 从一个有趣的例子开始 想象你正在开发一个班级管理系统。每个学生都有名字、成绩和评语…...

数电课设·简易数字钟(Quartus Ⅱ)

忽如一夜春风来&#xff0c;千树万树梨花开 —— 《白雪歌诵武判官归京》 岑参 【唐】 目录 简易数字钟 要点剖析&#xff1a; 逐步分析&#xff1a; 端口说明&#xff1a; 代码展示&#xff1a; 分部解释&#xff1a; 代码编译结果&#xff1a; 提醒 &#xff1a; …...

大模型中RAG模型的检索过程是如何实现的?(附最佳实践资料)

RAG模型的检索过程主要涉及以下几个步骤&#xff1a; 向量化&#xff08;Embedding&#xff09;&#xff1a;首先&#xff0c;需要将外部知识库中的文档转换为计算机能够理解的向量形式。这一步骤通常使用预训练的嵌入模型&#xff08;如BERT、GPT等&#xff09;将文本转换为高…...

python:用 sklearn.metrics 评价 K-Means 聚类模型

sklearn 的 metrics 模块提供的聚类模型评价指标如下&#xff1a; ARI 评价法&#xff08;兰德系数&#xff09;: adjusted_rand_score AMI 评价法&#xff08;相互信息&#xff09;: adjusted_mutual_info_score V-measure 评分 : completeness_score FMI 评价法 : fowlkes_m…...

Spring依赖注入不同类型的数据

目录 前言 回顾 注入集合 List与set集合 Map集合 前言 前面学习依赖注入时注入的都是对象&#xff0c;这里记录注入的值为集合的情况 回顾 在注入的时候&#xff0c;如果要注入的属性的值为字符串或基本数据类型&#xff0c;用value即可&#xff1b;如果要注入一个对象的…...

Linux大杂烩!!!

Linux 命令大全 https://www.runoob.com/linux/linux-command-manual.html Linux下打印ASCII字符 ASCII码对照表及转换器 [rootuntifa_80 ~]# printf "\x30\n" 0 [rootuntifa_80 ~]# echo -e "\u0030" 0tar、gzip 打包解压命令 参考文章&#xff1a;ta…...

12.19问答解析

概述 某中小型企业有四个部门&#xff0c;分别是市场部、行政部、研发部和工程部&#xff0c;请合理规划IP地址和VLAN&#xff0c;实现企业内部能够互联互通&#xff0c;同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议)&#xff0c;研发部不能访问外网环境…...

C语言——实现杨氏矩阵

什么是杨氏矩阵&#xff1f; 概念&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的 eg&#xff1a; 1 2 3 4 5 6 7 8 9 题目&#xff1a; 请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复…...

授权模型PAM

PAM&#xff08;Privileged Access Management&#xff09;是一种授权模型&#xff0c;用于管理和控制特权用户的访问权限。PAM的目标是确保特权用户只能在需要时获得所需的特权&#xff0c;并且他们的活动得到适当的监控和审计。 PAM的核心思想是将特权访问权限视为一种受限的…...

【Leecode】子集⭐⭐

子集 [78]子集I 题目描述 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例输入 示例 1&#xff1a; 输入&#xff1a;nums [1, 2, 3…...

Linux高性能服务器编程 | 读书笔记 | 12. 多线程编程

12. 多线程编程 注&#xff1a;博客中有书中没有的内容&#xff0c;均是来自 黑马06-线程概念_哔哩哔哩_bilibili 早期Linux不支持线程&#xff0c;直到1996年&#xff0c;Xavier Leroy等人开发出第一个基本符合POSIX标准的线程库LinuxThreads&#xff0c;但LinuxThreads效率…...

[HNCTF 2022 Week1]baby_rsa

源代码&#xff1a; from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…...

解析Java中的Stream API:函数式编程与性能优化

自Java 8以来&#xff0c;Java语言引入了Stream API&#xff0c;为开发者提供了一种全新的数据处理方式。Stream API支持函数式编程风格&#xff0c;使得对集合、数组、IO流等数据源的操作更加简洁、直观且具有高效的性能优势。通过Stream API&#xff0c;我们可以在不修改原有…...

java简单题目练习

大家好&#xff0c;今天我们不学习新的内容&#xff0c;今天给大家分享一些简单的java算法题供大家练练手&#xff0c;那么我们下面就来看看。 那么大家下去练习一下&#xff0c;我们明天继续讲解类和对象的相关知识&#xff0c;谢谢大家&#xff01;&#xff01;&#xff01;...

2026年三维扫描仪选购指南:专业厂家如何选,这几点是关键

在工业4.0与智能制造浪潮的推动下&#xff0c;三维扫描技术已成为产品设计、逆向工程、质量检测等领域的核心工具。面对市场上琳琅满目的品牌与型号&#xff0c;如何选择一台真正适合自身需求、性能可靠的三维扫描仪&#xff0c;成为众多工程师、设计师和企业决策者面临的难题。…...

为“自感”留白

为“自感”留白早晨醒来&#xff0c;手机屏幕亮着&#xff0c;几条推送已经整齐地排好了队。它们比我自己更清楚我昨天看过什么、想过什么、可能在今天还想看些什么。我划掉几条&#xff0c;点开一条&#xff0c;于是更多的、相似的推送便如约而至。这本是极便利的事&#xff0…...

Linux打印机驱动foo2zjs全攻略:从安装到优化的完整指南

Linux打印机驱动foo2zjs全攻略&#xff1a;从安装到优化的完整指南 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 价值定位&#xff1a;解决Linux打印…...

Delayed Job测试策略完整指南:如何在开发和测试环境中高效测试异步任务

Delayed Job测试策略完整指南&#xff1a;如何在开发和测试环境中高效测试异步任务 【免费下载链接】delayed_job 项目地址: https://gitcode.com/gh_mirrors/de/delayed_job Delayed Job是Ruby on Rails生态系统中最受欢迎的异步任务处理库之一&#xff0c;它让开发者…...

技术无罪,人心可畏 —— 写在 315 “GEO 投毒” 话题之后

2026 年央视 315 晚会&#xff0c;将镜头对准了人工智能领域的灰色地带 ——“AI 投毒” 与 “GEO” 一夜之间成为公众热议的话题。记者虚构了一款名为 “Apollo-9” 的智能手环&#xff0c;借助 “GEO 优化系统” 批量生成虚假内容&#xff0c;短短数小时就让多个主流 AI 大模…...

SVN分支管理避坑指南:为什么你的Merge two different trees总会删文件?

SVN分支合并的底层逻辑与实战避坑指南 当你面对SVN分支合并时是否经常遇到文件神秘消失的情况&#xff1f;特别是使用TortoiseSVN的"Merge two different trees"功能时&#xff0c;那些本应保留的文件为何总是不翼而飞&#xff1f;本文将深入解析SVN合并的底层机制&a…...

双向DC/DC全钒液流蓄电池充放电储能matlab/simulink仿真模型,采用双闭环控制...

双向DC/DC全钒液流蓄电池充放电储能matlab/simulink仿真模型&#xff0c;采用双闭环控制&#xff0c;充放电电流和电压均可控&#xff0c;直流母线端电压可控&#xff0c;电流为负则充电&#xff0c;电流为正则放电&#xff0c;可以控制电流实现充放电。 &#xff08;1&#xf…...

Phi-3-Mini-128K实战JavaScript:构建前端智能代码提示插件

Phi-3-Mini-128K实战JavaScript&#xff1a;构建前端智能代码提示插件 最近在折腾前端项目时&#xff0c;我总在想&#xff0c;要是写代码时能有个更懂我的助手就好了。现有的代码补全工具虽然不错&#xff0c;但很多时候还是停留在语法层面&#xff0c;对于业务逻辑、复杂函数…...

ERNIE-4.5-0.3B-PT智能合约分析:区块链安全检测系统

ERNIE-4.5-0.3B-PT智能合约分析&#xff1a;区块链安全检测系统 1. 引言 区块链开发者们经常面临一个头疼的问题&#xff1a;智能合约部署后才发现存在安全漏洞&#xff0c;导致资产损失。传统的安全审计需要专业团队花费数天甚至数周时间&#xff0c;成本高昂且效率低下。现…...

【ZGC性能黄金阈值手册】:基于127个线上集群实测数据,定义堆大小/线程数/触发频率最优配比

第一章&#xff1a;ZGC性能黄金阈值的定义与行业意义ZGC&#xff08;Z Garbage Collector&#xff09;作为JDK 11引入的低延迟垃圾收集器&#xff0c;其核心设计目标是将GC暂停时间稳定控制在10毫秒以内&#xff0c;且不随堆大小线性增长。而“ZGC性能黄金阈值”并非官方术语&a…...