openEuler24.03 LTS下安装Kafka集群

news2025/9/18 4:56:47

目录

前提条件

Kafka集群规划

下载Kafka

解压

设置环境变量

配置Kafka

分发到其他机器

分发安装文件

分发环境变量

启动Kafka

测试Kafka

关闭Kafka

集群启停脚本

问题及解决


前提条件

安装好ZooKeeper集群,可参考:openEuler24.03 LTS下安装ZooKeeper集群

Kafka集群规划

node2node3node4
kafkakafkakafka

安装的kafka版本为3.3.1,先在node2安装kafka,然后分发kafka安装目录到其他机器。

下载Kafka

浏览器访问以下地址下载Kafka

https://archive.apache.org/dist/kafka/3.3.1/kafka_2.12-3.3.1.tgz

上传到node2 /opt/software目录

[liang@node2 conf]$ cd /opt/software/
[liang@node2 software]$ ls | grep kafka
kafka_2.12-3.3.1.tgz

解压

[liang@node2 software]$ tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/module/

设置环境变量

[liang@node2 module]$ sudo vim /etc/profile.d/my_env.sh

添加内容

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka_2.12-3.3.1
export PATH=$PATH:$KAFKA_HOME/bin

让环境变量生效

[liang@node2 module]$ source /etc/profile

配置Kafka

[liang@node2 module]$ cd $KAFKA_HOME/config
[liang@node2 config]$ ls
connect-console-sink.properties    connect-mirror-maker.properties  server.properties
connect-console-source.properties  connect-standalone.properties    tools-log4j.properties
connect-distributed.properties     consumer.properties              trogdor.conf
connect-file-sink.properties       kraft                            zookeeper.properties
connect-file-source.properties     log4j.properties
connect-log4j.properties           producer.properties
[liang@node2 config]$ vim server.properties

修改及添加内容如下

# 修改
broker.id=0
log.dirs=/opt/module/kafka_2.12-3.3.1/datas
zookeeper.connect=node2:2181,node3:2181,node4:2181/kafka

# 添加
delete.topic.enable=true

分发到其他机器

分发安装文件

分发安装文件

分发Kafka安装目录到node3、node4

xsync /opt/module/kafka_2.12-3.3.1

修改broker id

分别修改node3、node4的broker id。注意:kafka集群broker id不能重复。

node3机器

[liang@node3 ~]$ vim /opt/module/kafka_2.12-3.3.1/config/server.properties

将broker id设置为1

broker.id=1

node4机器

[liang@node4 ~]$ vim /opt/module/kafka_2.12-3.3.1/config/server.properties

将broker id设置为2

broker.id=2

分发环境变量

sudo /home/liang/bin/xsync /etc/profile.d/my_env.sh

根据提示输入node2机器root账户的登录密码

分别让node3及node4的环境变量生效

[liang@node3 ~]$ source /etc/profile
[liang@node4 ~]$ source /etc/profile

启动Kafka

分别在集群各个机器启动Kafka

node2机器

Kafka需要用到ZooKeeper,如果还没有启动ZooKeeper,先启动ZooKeeper

[liang@node2 config]$ zk.sh start

启动kafka

[liang@node2 config]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

出现如下警告

egrep: warning: egrep is obsolescent; using grep -E
egrep: warning: egrep is obsolescent; using grep -E
...
​

经测试发送和接收数据,均正常,但警告信息太多,影响观察数据。

解决警告问题:

egrep 命令已过时,需要将kafka-run-class.sh中的egrep 改为grep -E

[liang@node2 config]$ cd $KAFKA_HOME/bin
[liang@node2 bin]$ vim kafka-run-class.sh

输入/egrep关键字,回车光标跳到匹配的第一个关键字(全脚本也只有一个地方匹配)

egrep 改为grep -E,修改后效果如下  

分发修改文件

xsync /opt/module/kafka_2.12-3.3.1/bin

重启kafka

[liang@node2 bin]$ kafka-server-stop.sh
[liang@node2 bin]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

jps查看进程

[liang@node2 bin]$ jps
4626 Jps
4548 Kafka
3583 QuorumPeerMain

node3机器

启动kafka

[liang@node3 ~]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

jps查看进程

[liang@node3 ~]$ jps
3766 Kafka
3244 QuorumPeerMain
3790 Jps

node4机器

启动kafka

[liang@node4 bin]$ kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

jps查看进程

[liang@node3 bin]$ jps
3764 Jps
3208 QuorumPeerMain
3724 Kafka

测试Kafka

创建topic

[liang@node2 bin]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --create --partitions 1 --replication-factor 1 --topic test1

查看topic

[liang@node2 bin]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --list
 

生产者

执行如下命令生产消息

[liang@node2 bin]$ kafka-console-producer.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --topic test1

消费者

启动一个新的终端,执行消费者命令

[liang@node2 ~]$ kafka-console-consumer.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --topic test1

在生产者终端发送数据

观察消费者终端能正常接收生产者发来的数据

分别按Ctrl+c关闭生产者和消费者返回Linux命令行。

关闭Kafka

分别在集群各个机器关闭Kafka

[liang@node2 ~]$ kafka-server-stop.sh
[liang@node3 ~]$ kafka-server-stop.sh
[liang@node4 ~]$ kafka-server-stop.sh

再关闭ZooKeeper集群

[liang@node2 ~]$ zk.sh stop

集群启停脚本

在node2机器操作

kf.sh

vim ~/bin/kf.sh

内容如下:

#!/bin/bash
case $1 in
"start"){
    for i in node2 node3 node4
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/opt/module/kafka_2.12-3.3.1/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-3.3.1/config/server.properties"
    done
};;
"stop"){
    for i in node2 node3 node4
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/opt/module/kafka_2.12-3.3.1/bin/kafka-server-stop.sh stop"
    done
};;
esac

添加权限

chmod +x ~/bin/kf.sh

如果需要在其他机器执行脚本,需要分发脚本到其他机器(可选)

xsync ~/bin

测试

脚本启动kafka

zk.sh start && kf.sh start

关闭kafka

kf.sh stop && zk.sh stop

问题及解决

执行脚本时,输出Authorized users only. All activities may be monitored and reported.警告信息

---------- zookeeper node2 启动 ------------
​
Authorized users only. All activities may be monitored and reported.
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 8654.
---------- zookeeper node3 启动 ------------
​
Authorized users only. All activities may be monitored and reported.
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 5802.
---------- zookeeper node4 启动 ------------
​
Authorized users only. All activities may be monitored and reported.
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 5686.

解决办法

若需彻底禁用SSH警告,可修改SSH配置文件/etc/ssh/sshd_config,注释或删除Banner /etc/issue.net行,并重启SSH服务。

分别在集群所有机器执行如下语句

sudo vim /etc/ssh/sshd_config

找到并注释Banner /etc/issue.net

#Banner /etc/issue.net

重启SSH

sudo systemctl restart sshd

修改后效果

[liang@node2 bin]$ kf.sh stop && zk.sh stop
 --------停止 node2 Kafka-------
 --------停止 node3 Kafka-------
 --------停止 node4 Kafka-------
---------- zookeeper node2 停止 ------------
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
---------- zookeeper node3 停止 ------------
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
---------- zookeeper node4 停止 ------------
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.7.1/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

如有需要,可点击查看:

配套视频教程

完成!enjoy it! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt QQuaternion详解

1. 概述 QQuaternion 是 Qt 中用于表示三维空间中旋转的四元数类。它包含一个标量部分和一个三维向量部分,可以用来表示旋转操作。四元数在计算机图形学中广泛用于平滑的旋转和插值。 2. 重要方法 默认构造函数 QQuaternion::QQuaternion(); // 构造单位四元数 (1…

epoch、batch、batch size、step、iteration深度学习名词含义详细介绍

卷积神经网络训练中的三个核心概念:Epoch、Batch Size 和迭代次数 在深度学习中,理解一些基本的术语非常重要,这些术语对模型的训练过程、效率以及最终性能都有很大影响。以下是一些常见术语的含义介绍: 1. Epoch(周…

TCP 协议算法解析 | RTT / 滑动窗口 / 拥塞控制

注:本文为 “TCP 协议算法解析” 相关文章合辑。 略作重排,未去重。 如有内容异常,请看原文。 TCP 的那些事儿(上) 2014 年 05 月 28 日 陈皓 TCP 是一个极为复杂的协议,因为它需要解决众多问题&#x…

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。 这是一种特殊的深度神经网络结构,由 Kaiming He 等人在 2015 年提出,目的是解…

GreenPlum学习

简介 Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用sharednothi…

传统神经网络、CNN与RNN

在网络上找了很多关于深度学习的资料,也总结了一点小心得,于是就有了下面这篇文章。这里内容较为简单,适合初学者查看,所以大佬看到这里就可以走了。 话不多说,上图 #mermaid-svg-Z3k5YhiQ2o5AnvZE {font-family:&quo…

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考: 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位,位置模式很飘 雷达的更新频率也是10HZ, 而px飞控的频率是100HZ,没有对两者之间的频率差异做出处理 所以才导致无人…

【Linux探索学习】第二十九弹——线程概念:Linux线程的基本概念与线程控制详解

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在现代操作系统中,线程是程序执行流的最小单元。与进程相比,线程更加轻量级,创建和销毁的开销更小&…

深入探索 iOS 卡顿优化

认识卡顿 一些概念 FPS:Frames Per Second,表示每秒渲染的帧数,通过用于衡量画面的流畅度,数值越高则表示画面越流畅。CPU:负责对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码…

# 基于 OpenCV 的选择题自动批改系统实现

在教育领域,选择题的批改工作通常较为繁琐且重复性高。为了提高批改效率,我们可以利用计算机视觉技术,通过 OpenCV 实现选择题的自动批改。本文将详细介绍如何使用 Python 和 OpenCV 实现一个简单的选择题自动批改系统。 1. 项目背景 选择题…

身份验证:区块链如何让用户掌控一切

在网上证明你自称的身份变得越来越复杂。由于日常生活的很多方面现在都在网上进行,保护你的数字身份比以往任何时候都更加重要。 我们可能都接受过安全培训,这些培训鼓励我们选择安全的密码、启用双因素身份验证或回答安全问题,例如“你祖母…

嵌入式硬件: GPIO与二极管基础知识详解

1. 前言 在嵌入式系统和硬件开发中,GPIO(通用输入输出)是至关重要的控制方式,而二极管作为基础电子元件,广泛应用于信号整流、保护电路等。本文将从基础原理出发,深入解析GPIO的输入输出模式,包…

游戏引擎学习第194天

为当天的活动做铺垫 正在进行游戏开发中的调试和视图功能开发。目标是增加一些新功能,使得在开发过程中能够有效地检查游戏行为。今天的重点是推进用户界面(UI)的开发,并且尝试在调试变量的管理上找到一个折中的解决方案。计划探…

js文字两端对齐

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.text-align: justify; 不就可以了吗?但是实际测试无效 二、原因及解决方法 1.原因:text-align只对非最后一行文字有效。只有一行文字时,text-align无效,要用text-alig…

HarmonyOS 介绍

HarmonyOS简介 随着万物互联时代的开启,应用的设备底座将从几十亿手机扩展到数百亿IoT设备。全新的全场景设备体验,正深入改变消费者的使用习惯。 同时应用开发者也面临设备底座从手机单设备到全场景多设备的转变,全场景多设备的全新底座&am…

每天一篇目标检测文献(六)——Part One

今天看的是《Object Detection with Deep Learning: A Review》 目录 一、摘要 1.1 原文 1.2 翻译 二、介绍 2.1 信息区域选择 2.2 特征提取 2.3 分类 三、深度学习的简要回顾 3.1 历史、诞生、衰落和繁荣 3.2 CNN架构和优势 一、摘要 1.1 原文 Due to object dete…

ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动

ESXI 安装及封装第三方驱动和在ESXI系统下安装驱动 准备工作在线安装 Windows PowerShell离线安装 Windows PowerShell更新在线更新离线更新 下载 ESXi-Customizer-PS-v2.6.0.ps1安装Python安装pip安装相关插件 下载离线捆绑包下载对应的网卡驱动(如果纯净版可以进去…

【12】Ajax的原理和解析

一、前言 二、什么是Ajax 三、Ajax的基本原理 3.1 发送请求 3.2 解析内容 3.3 渲染网页 3.4 总结 四、Ajax 分析 五、过滤请求-筛选所有Ajax请求 一、前言 当我们在用 requests 抓取页面的时候,得到的结果可能会和在浏览器中看到的不一样&a…

双塔模型2之如何选择正确的正负样本

双塔模型:正负样本 选对正负样本的作用 > 改进模型的结构 正样本 什么是正样本?答:曝光且有点击的 “用户-物品” 二元组 存在的问题:存在28法则,即少部分物品(比如热门物品)占大部分点击…

《八大排序算法》

相关概念 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来。稳定性:它描述了在排序过程中,相等元素的相对顺序是否保持不变。假设在待排序的序列中,有两个元素a和b,它们…