【Linux】环境部署kafka集群

devtools/2024/9/20 10:11:12/

目录

kafka%E7%AE%80%E4%BB%8B-toc" style="margin-left:40px;">一、kafka简介

1. 主要特点

2.组件介绍

3.消息中间件的对比

二、环境准备

1.Java环境

2.Zookeeper环境

3.硬件环境集群

三、Zookeeper的集群部署

1.下载zookeeper

2.部署zookeeper集群

(1)node1节点服务器

(2)node2节点服务器和node3 节点服务器重复上述node1节点安装zookeeper步骤

(3)启动node1、node2、node3节点的zookeeper

kafka%E9%9B%86%E7%BE%A4-toc" style="margin-left:40px;">​编辑 四、搭建kafka集群

kafka%E5%AE%89%E8%A3%85%E5%8C%85-toc" style="margin-left:80px;">1.下载kafka安装包

kafka%E9%9B%86%E7%BE%A4-toc" style="margin-left:80px;">2.部署kafka集群

(1)node1节点部署

kafka%E6%AD%A5%E9%AA%A4-toc" style="margin-left:120px;">(2)node2节点服务器、node3 节点服务器重复上述node1节点安装kafka步骤

kafka%E9%9B%86%E7%BE%A4-toc" style="margin-left:120px;">(3)启动kafka集群

(4)测试集群


kafka%E7%AE%80%E4%BB%8B">一、kafka简介

Apache Kafka 是一个开源的分布式事件流平台,最初由LinkedIn开发,并于2011年贡献给了Apache软件基金会。Kafka被设计为一个高吞吐量、可扩展且容错的消息系统,它能够处理大量的实时数据流。Kafka广泛应用于构建实时数据管道和流应用。

1. 主要特点

(1)发布/订阅消息模型:Kafka支持传统的发布/订阅模式,允许多个消费者订阅并处理相同的消息流。
(2)持久化存储:消息在Kafka中被持久化到磁盘,并且可以根据配置保留一段时间(例如7天)。这使得Kafka可以作为可靠的存储系统来使用。
(3)高吞吐量:Kafka设计用于支持每秒百万级别的消息吞吐量,适用于大规模的数据处理场景。
(4)水平扩展性:可以通过增加更多的broker节点来轻松扩展Kafka集群,以处理更大的流量。
(5)多租户能力:支持多个生产者和消费者共享同一集群,同时保持隔离性和安全性。
(6)零拷贝原理:使用操作系统级别的零拷贝技术来优化网络传输效率,减少CPU使用率。
(7)分区机制:每个topic可以分成多个partition,这些partition可以分布在不同的broker上,从而实现负载均衡和故障转移。

(8)消费组:一组消费者可以组成一个消费者组,共同消费一个topic下的不同partition,确保每个partition只被组内的一个消费者消费。

2.组件介绍

        Broker:Kafka集群中的单个服务器,负责存储消息和处理客户端请求。

        Topic:特定类型的消息流,是消息的分类或主题。        

        Partition:每个topic可以分为多个partition,提高并行处理能力和吞吐量。

        Producer:向Kafka发送消息的应用程序。

        Consumer:从Kafka读取消息的应用程序。

        Consumer Group:一组消费者的集合,它们共同消费一个topic的所有消息。

        Offset:每个partition中的消息都有一个唯一的序列号,称为offset。

        Zookeeper:虽然不是Kafka的核心组件,但早期版本的Kafka依赖Zookeeper来管理集群元数据。新版本中已经内置了替代方案,减少了对Zookeeper的依赖。

3.消息中间件的对比

二、环境准备

1.Java环境

需要Java 8或更高版本(JDK)。Kafka是用Scala编写的,并且运行在JVM之上。

安装步骤参考:Linux环境下离线安装jdk1.8(内置最新的jdk安装包x64)_linux 离线安装jdk1.8-CSDN博客

2.Zookeeper环境

Kafka使用Zookeeper来管理集群元数据。

3.硬件环境集群

采用三台服务器部署kafka和zookeeper集群。

node1node2node3
ZookeeperZookeeperZookeeper
KafkaKafkaKafka

三、Zookeeper的集群部署

1.下载zookeeper

地址:Apache ZooKeeper

2.部署zookeeper集群

(1)node1节点服务器

下载zookeeper包之后上传服务器

# 1.解压 zookeeper
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz# 2.移动到/usr/local/目录下方便管理
mv apache-zookeeper-3.8.4-bin /usr/local/zookeeper-3.8.4# 3.切换到/usr/local/zookeeper-3.8.4/conf 配置目录下
cp zoo_sample.cfg zoo.cfg# 4.编辑配置文件
vim zoo.cfg

zoo.cfg文件新增如下内容: 数据目录和日志目录需要提前创建

说明:server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

节点标记

myid配置:在/data/zookeeper/data设置myid, 这个myid的数字跟配置文件里面的server id对应

echo 1 > /data/zookeeper/data/myid

配置环境变量

# 打开环境变量的文件
vim /etc/profile# 文件末尾添加如下内容 
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.8.4
export PATH=$ZOOKEEPER_HOME/bin:$PATH# 保存并退出 刷新环境变量
source /etc/profile

到此node1节点服务器zookeeper部署完成

(2)node2节点服务器和node3 节点服务器重复上述node1节点安装zookeeper步骤

注意:记得修改节点标记 myid 改为 2 和 3,若没改启动时会报错。

(3)启动node1、node2、node3节点的zookeeper
# 启动三台机器zookeeper
zkServer.sh start# 查看集群状态
zkServer.sh status# 停止命令
zkServer.sh stop

从下面的截图就能看出来 node1节点为主节点,其他两个是从节点。

kafka%E9%9B%86%E7%BE%A4"> 四、搭建kafka集群

kafka%E5%AE%89%E8%A3%85%E5%8C%85">1.下载kafka安装包

地址:Apache Kafka

kafka%E9%9B%86%E7%BE%A4">2.部署kafka集群

(1)node1节点部署
# 1.将下载好的kafka包上传服务器
# 2.解压
tar -zxvf kafka_2.12-3.8.0.tgz# 3.将解压后的目录移动到 /usr/local/下
mv kafka_2.12-3.8.0 /usr/local/kafka_2.12-3.8.0# 4.切换到目录下 编辑kafka配置文件
cd /usr/local/kafka_2.12-3.8.0/config
vim server.properties

 主要修改如下所示几个配置信息

#--------------------------------配置文件-------------------------------------------
# broker的全局唯一编号,不能重复,多个节点需要修改 0、1、2
broker.id=0
# 监听
listeners=PLAINTEXT://:9092  #开启此项
# 日志目录
log.dirs=/data/kafka/kafka_logs      #修改日志目录(需提前创建)
# 配置zookeeper的连接(如果不是本机,需要该为ip或主机名)多个地址 用,隔开
zookeeper.connect=cong11:2181,cong12:2181,cong13:2181
#--------------------------------配置文件-------------------------------------------

 配置环境变量

# 打开环境变量的文件
vim /etc/profile# 文件末尾添加如下内容 
export KAFKA_HOME=/usr/local/kafka_2.12-3.8.0
export PATH=$KAFKA_HOME/bin:$PATH# 保存并退出 刷新环境变量
source /etc/profile
kafka%E6%AD%A5%E9%AA%A4">(2)node2节点服务器、node3 节点服务器重复上述node1节点安装kafka步骤

或者 你直接将节点1的kafka目录分别复制到节点2和节点3上,修改内容如下

node2节点:

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://ip:9092

node3节点

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://ip:9092

在添加环境变量 刷新环境变量。

kafka%E9%9B%86%E7%BE%A4">(3)启动kafka集群
# 后台启动服务(3台都启动)
kafka-server-start.sh -daemon /usr/local/kafka_2.12-3.8.0/config/server.properties 

可以通过 jps 或者 ps -ef|grep kafka 查看进程

(4)测试集群

1)创建一个测试主题(node1)

kafka-topics.sh --create --topic test --partitions 3 --replication-factor 3 --bootstrap-server ip1:9092
  • --replication-factor:指定副本数量
  • --partitions:指定分区数量
  • --topic:主题名称

注意:在node1节点上创建之后,会同步到node2、node3节点主题信息。说明你集群搭建成功。

2)查看刚刚创建的主题信息

kafka-topics.sh --describe --topic test --bootstrap-server IP1:9092

说明

  • Partition: 0:分区编号为0。
  • Leader: 0:当前分区的leader broker是broker 0。
  • Replicas: 0,2,1:该分区的所有副本分布在broker 0、broker 2和broker 1上。
  • Isr: 0,2,1:与leader保持同步的副本列表(In-Sync Replicas),即broker 0、broker 2和broker 1。
  • Elr: N/A:选举中的leader(Elected Leader Replica),这里没有显示。
  • LastKnownElr: N/A:上次已知的选举中的leader,这里也没有显示。

 3)查看所有的topic命令和查看指定的topic命令

# 列出指定的topic
kafka-topics.sh --bootstrap-server ip:9092 --list --topic test# 列出所有的topic
kafka-topics.sh --bootstrap-server ip:9092 --list 

4)在node1上创建生产者(producer)

kafka-console-producer.sh --broker-list ip:9092 --topic test

随便写一些测试消息

5) 在node2上测试消费消息

kafka-console-consumer.sh --bootstrap-server IP1:9092,IP2:9092,IP3:9092 --topic test --from-beginning
  • --bootstrap-server IP1:9092,IP2:9092,IP3:9092

    指定Kafka集群的多个broker地址。这里列出了三个broker:JClouds:9092, Book:9092, 和 Client01:9092。这些broker地址用于初始化连接。Kafka客户端会使用这些地址来发现整个集群的其他broker。
  • --from-beginning

    从主题的最早可用偏移量(offset)开始消费消息。如果没有这个选项,消费者将从最新的偏移量开始消费。

6)删除topic

kafka-topics.sh --delete --bootstrap-server IP1:9092 --topic test

到此kafka验证完毕,有兴趣可试试kafka其他相关命令

参考:Kafka 集群部署_kafka集群安装部署-CSDN博客


http://www.ppmy.cn/devtools/114498.html

相关文章

【操作系统】1.2操作系统的发展与分类

首先我们来看本节要学习的内容(绿框内为重点): ①手工操作阶段: 计算所占的时间少,导致资源(CPU)利用率低。 ②批处理阶段: ③分时操作系统: ④实时操作系统&…

shell指令及笔试题

一:linux基本指令考察 创建文件,直接在本目录的上级目录下创建一个名为dir1的文件夹,并在dir1文件夹下创建一个名为file1的文件 答:本目录的上级目录下创建一个名为dir1的文件:mkdir ../dir1 在dir1文件夹下创建一个名为file1的…

企业风险承担-盈利波动性和现金流波动性(2000-2022年)

企业盈利波动性和现金流波动性与企业风险承担水平密切相关。经过行业调整后的盈利波动性(Adj_ROA)更能反映企业自身的风险管理能力。 2000-2022年企业风险承担-盈利波动性和现金流波动性(原始数据、do代码、参考文献、最终结果).…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

【Linux】【Vim】Vim 基础

Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…

力扣 209.长度最小的子数组

目录 题目介绍解题方法 题目介绍 解题方法 和209题类似(滑动窗口思想) 思路:如果从l到r这一段的乘积是小于k的,那么[l,r]、[l1,r]….[r,r]这些子数组都是满足乘积小于k的,一共有r-l1个 class Solution {public int n…

Java中ThreadLocal 类介绍、应用场景和示例代码

概述 ThreadLocal 是 Java 中用于创建线程局部变量的类,它提供了一种在多线程环境中存储线程私有数据的方法。每个线程都可以通过 ThreadLocal 存取和修改自己的数据,这些数据在其他线程中是不可见的。这对于需要存储线程特有的状态信息而不影响其他线程…

Vscode搭配latex简易教程

1. 找镜像网站下载texlive的iso文件 清华源镜像 下载之后直接打开iso文件,打开install-tl-windows.bat文件,进行安装即可,安装大概30分钟左右 2. VScode端配置 2.1 下载这三个插件 2.2 打开设置 2.3 追加内容到配置json文件当中 // Latex…

Ubuntu 20.04安装pycharm2022及配置快捷方式

一、下载与安装 1. 下载 在 官网 下载所需版本,如:下载 2022.3.3 - Linux (tar.gz) 2. 安装 设置自定义安装路径(推荐在 /opt/ 路径下)并安装 mkdir -p ~/Documents/software/pycharm/ cd ~/Documents/software/pycharm/ mv ~/Downloads/pycharm-c…

【Linux进程控制】进程程序替换

目录 进程程序替换 替换函数 看现象 替换原理 多进程替换 exec*函数使用(部分),并且认识函数参数的含义 1.execl 2.execv 3.execvp 4.execvpe execlp 和execlpe 替换函数总结 进程程序替换 替换函数 有六种以exec开头的函数&am…

关于单片机的技术原理及应用

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片机的技术原理及应用的相关内容&…

Mac虚拟机Parallels Desktop 20 for Mac破解版发布 完整支持 Windows 11

Parallels Desktop 20 for Mac 破解版是一款虚拟化软件,允许用户在 Mac 设备上运行 Windows 和其他操作系统。Parallels Desktop 20 for Mac 特别适合需要同时使用 macOS 和 Windows 应用的用户,常用于开发、设计、办公等场景。 自从OpenAI推出ChatGPT之…

【WPF】02 按钮控件圆角配置及状态切换

按钮圆角 先从工具箱里拖进来一个Button控件&#xff0c;然后对这个按钮进行美化。 首先在 xaml 里按钮控件部分 添加如下代码&#xff1a; <Button x:Name"btnLogin" Content"登录" HorizontalAlignment"Center" Margin"0,399,0,0&q…

nginx和php-fpm连接超时的相关配置以及Nginx中的try_files以及root、alias的使用

一、nginx和php-fpm连接超时的相关配置 线上的PHP服务器架构大都是nginx proxy->nginx web->php-fpm。在服务器运行正常&#xff0c;服务器之间的连接正常&#xff0c;未被防火墙阻止的情况下&#xff0c;对这种架构排查504报错时需要注意以下几个地方的参数。 1是nginx…

electron多标签页模式更像客户端

Electron多标签页模式是指在Electron框架中实现的类似Web浏览器的多标签页功能。Electron是一个使用Web技术&#xff08;HTML、CSS和JavaScript&#xff09;来创建跨平台桌面应用程序的框架。在Electron中实现多标签页模式&#xff0c;通常需要借助一些特定的库或组件&#xff…

硬件基础知识

驱动开发分为&#xff1a;裸机驱动、linux驱动 嵌入式&#xff1a;以计算机技术为基础&#xff0c;软硬结合的、可移植、可剪裁的专用计算机 单片机最小单元&#xff1a;vcc gnd reset 晶振 cpu --- soc :system on chip 片上外设 所有的程序都是在soc&#xff08;cpu&…

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析

【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析 系列文章汇总:《鸿蒙OH-v5.0源码分析之 Uboot+Kernel 部分】000 - 文章链接汇总》 本文链接:《【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】003 - vmlinux.lds 链接脚本文件源码分析》 …

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式&#xff0c;yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集&#xff0c;旨在解决行人密集场景下的检测挑…

合理使用布局

一、ArkUI框架执行流程 在使用ArkUI开发中&#xff0c;我们通过布局组件和基础组件进行界面描述&#xff0c;这些描述会呈现出一个组件树的结构&#xff0c;基础组件在其中为叶子结点&#xff0c;布局组件则是中间节点&#xff0c;可以把这棵树称之为应用组件树。当用户执行交互…

php环境搭建教程

PHP环境搭建教程 在构建和开发PHP应用程序时&#xff0c;搭建一个稳定、高效的PHP环境是基础且关键的一步。本教程将详细介绍如何在不同操作系统&#xff08;Windows和Linux&#xff09;上搭建PHP环境&#xff0c;包括Apache服务器的安装与配置、PHP的安装与配置、MySQL的安装…