搭建分布式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的前提下运行 -
除此之外
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博客
相关文章:
搭建分布式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、Zookeep…...
【后端面试总结】深入解析进程和线程的区别
在操作系统和并发编程中,进程和线程是两个核心概念。它们各自承担着不同的职责,并在多任务处理中发挥着关键作用。本文将从定义、特性、应用场景以及优缺点等多个方面对进程和线程进行详细对比,帮助读者深入理解它们之间的区别。 一、进程和…...
java版电子招投标采购|投标|评标|竞标|邀标|评审招投标系统源码
招投标管理系统是一款适用于招标代理、政府采购、企业采购和工程交易等领域的企业级应用平台。该平台以项目为主线,从项目立项到项目归档,实现了全流程的高效沟通和协作。通过该平台,用户可以实时共享项目数据信息,实现规范化管理…...
SSM 赋能 Vue 助力:新锐台球厅管理系统的设计与实现的辉煌之路
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…...
C++ 并发专题 - C++线程同步的几种方法
一:概述 线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(race condition)和数据不一致的问题。线程同步确保在多线程环境中,多个线程访问共享数据时能够按照某…...
使用Python脚本进行编写批量根据源IP进行查询的语句用于态势感知攻击行为的搜索
使用Python脚本进行编写批量根据源IP进行查询的语句 以下根据ip-list集里面的IP地址(可以自行扩充),然后采用srcaddress "{ip}" or 的形式进行打印并存储在路径为:桌面的IOC结果.txt --------------------------代码如…...
Python中的zip/unzip:像拉拉链一样组合数据的艺术
今天让我们一起探讨Python中一个优雅而强大的内置功能: zip 和 unzip 。听名字就知道,它就像我们衣服上的拉链一样,能把两边的数据完美地咬合在一起。 从一个有趣的例子开始 想象你正在开发一个班级管理系统。每个学生都有名字、成绩和评语…...
数电课设·简易数字钟(Quartus Ⅱ)
忽如一夜春风来,千树万树梨花开 —— 《白雪歌诵武判官归京》 岑参 【唐】 目录 简易数字钟 要点剖析: 逐步分析: 端口说明: 代码展示: 分部解释: 代码编译结果: 提醒 : …...
大模型中RAG模型的检索过程是如何实现的?(附最佳实践资料)
RAG模型的检索过程主要涉及以下几个步骤: 向量化(Embedding):首先,需要将外部知识库中的文档转换为计算机能够理解的向量形式。这一步骤通常使用预训练的嵌入模型(如BERT、GPT等)将文本转换为高…...
python:用 sklearn.metrics 评价 K-Means 聚类模型
sklearn 的 metrics 模块提供的聚类模型评价指标如下: ARI 评价法(兰德系数): adjusted_rand_score AMI 评价法(相互信息): adjusted_mutual_info_score V-measure 评分 : completeness_score FMI 评价法 : fowlkes_m…...
Spring依赖注入不同类型的数据
目录 前言 回顾 注入集合 List与set集合 Map集合 前言 前面学习依赖注入时注入的都是对象,这里记录注入的值为集合的情况 回顾 在注入的时候,如果要注入的属性的值为字符串或基本数据类型,用value即可;如果要注入一个对象的…...
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 打包解压命令 参考文章:ta…...
12.19问答解析
概述 某中小型企业有四个部门,分别是市场部、行政部、研发部和工程部,请合理规划IP地址和VLAN,实现企业内部能够互联互通,同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议),研发部不能访问外网环境…...
C语言——实现杨氏矩阵
什么是杨氏矩阵? 概念: 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的 eg: 1 2 3 4 5 6 7 8 9 题目: 请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复…...
授权模型PAM
PAM(Privileged Access Management)是一种授权模型,用于管理和控制特权用户的访问权限。PAM的目标是确保特权用户只能在需要时获得所需的特权,并且他们的活动得到适当的监控和审计。 PAM的核心思想是将特权访问权限视为一种受限的…...
【Leecode】子集⭐⭐
子集 [78]子集I 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例输入 示例 1: 输入:nums [1, 2, 3…...
Linux高性能服务器编程 | 读书笔记 | 12. 多线程编程
12. 多线程编程 注:博客中有书中没有的内容,均是来自 黑马06-线程概念_哔哩哔哩_bilibili 早期Linux不支持线程,直到1996年,Xavier Leroy等人开发出第一个基本符合POSIX标准的线程库LinuxThreads,但LinuxThreads效率…...
[HNCTF 2022 Week1]baby_rsa
源代码: 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以来,Java语言引入了Stream API,为开发者提供了一种全新的数据处理方式。Stream API支持函数式编程风格,使得对集合、数组、IO流等数据源的操作更加简洁、直观且具有高效的性能优势。通过Stream API,我们可以在不修改原有…...
java简单题目练习
大家好,今天我们不学习新的内容,今天给大家分享一些简单的java算法题供大家练练手,那么我们下面就来看看。 那么大家下去练习一下,我们明天继续讲解类和对象的相关知识,谢谢大家!!!...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
