Kafka【六】Linux下安装Kafka(Zookeeper)集群

devtools/2024/9/20 7:06:06/ 标签: kafka, linux, 分布式, kafka集群安装

Kafka从早期的消息传输系统转型为开源分布式事件流处理平台系统,所以很多核心组件,核心操作都是基于分布式多节点的。本文这里采用三台虚拟机模拟真实物理主机搭建Zookeeper集群和kafka集群。

VMware可以使用户在一台计算机上同时运行多个操作系统,还可以像Windows应用程序一样来回切换。用户可以如同操作真实安装的系统一样操作虚拟机系统,甚至可以在一台计算机上将几个虚拟机系统连接为一个局域网或者连接到互联网。生产环境中,我们会使用多台服务器搭建Kafka集群系统,但是对于学习来讲,准备多台独立的服务器还是比较困难的,所以我们这里采用虚拟机的方式进行学习。

在这里插入图片描述

【1】安装jdk1.8

① 卸载现有jdk

# 不同节点都要执行操作
rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

② 上传压缩包

将jdk-8u212-linux-x64.tar.gz文件上传到虚拟机的/opt/softinstall目录中

③ 解压JDK到/opt/module目录下

[root@localhost ~]# cd /opt/softinstall/[root@localhost ~]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

④ 配置JDK环境变量

新建/etc/profile.d/my_env.sh文件,

 vim /etc/profile.d/my_env.sh

添加如下内容,保存后退出。

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

使新的环境变量PATH生效

source /etc/profile

检测是否生效:

[root@centos3 softinstall]# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

三个节点上都要配置jdk环境。

【2】安装Zookeeper

① 上传ZooKeeper压缩包

apache-zookeeper-3.7.1-bin.tar.gz文件上传到三台虚拟机的/opt/softinstall目录中

② 解压ZooKeeper压缩包

# 进入到/opt/softinstall目录中
cd /opt/softinstall/# 解压缩文件到指定目录
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module/# 进入/opt/module目录
cd /opt/module# 文件目录改名
mv apache-zookeeper-3.7.1-bin/ zookeeper

③ 配置服务器编号

(1)在/opt/module/zookeeper/目录下创建zkData

# 进入/opt/module/zookeeper目录
cd /opt/module/zookeeper
# 创建zkData文件目录
mkdir zkData

(2)创建myid文件

# 进入/opt/module/zookeeper/zkData目录 
cd /opt/module/zookeeper/zkData# 创建myid文件
vim myid

(3)在文件中增加内容

1

服务器与编号对应关系如下:

Centos1:1
Centos2:2
Centos3:3

④ 修改配置文件

(1)重命名/opt/module/zookeeper/conf目录下的zoo_sample.cfg文件为zoo.cfg文件

# 进入cd /opt/module/zookeeper/conf文件目录
cd /opt/module/zookeeper/conf# 修改文件名称
mv zoo_sample.cfg zoo.cfg

(2)修改zoo.cfg文件

# 修改文件内容
vim zoo.cfg# 以下内容为修改内容
dataDir=/opt/module/zookeeper/zkData# 以下内容为新增内容
####################### cluster ##########################
# server.A=B:C:D
#
# A是一个数字,表示这个是第几号服务器
# B是A服务器的主机名
# C是A服务器与集群中的主服务器(Leader)交换信息的端口
# D是A服务器用于主服务器(Leader)选举的端口
#########################################################
server.1=centos1:2888:3888
server.2=centos2:2888:3888
server.3=centos3:2888:3888

上述操作针对其他两台虚拟机同样执行。

⑤ 启动/关闭/查看状态

启动ZooKeeper

# 进入zookeeper目录
cd /opt/module/zookeeper# 启动ZK服务
bin/zkServer.sh start

关闭ZooKeeper

# 进入zookeeper目录
cd /opt/module/zookeeper# 关闭ZK服务
bin/zkServer.sh stop

查看ZooKeeper状态

# 进入zookeeper目录
cd /opt/module/zookeeper# 查看ZK服务状态
bin/zkServer.sh status

JPS检测,QuorumPeerMain表示Zookeeper进程

[root@centos1 zookeeper]# jps
2619 Jps
2541 QuorumPeerMain

使用客户端工具可以看到此时Zookeeper的节点:

在这里插入图片描述

【3】安装Kafka

① 上传Kafka压缩包

kafka_2.12-3.6.1.tgz文件上传到三台虚拟机的/opt/softinstall/目录中

② 解压Kafka压缩包

# 进入/opt/softinstall目录
cd /opt/softinstall# 解压缩文件到指定目录
tar -zxvf kafka_2.12-3.6.1.tgz -C /opt/module/# 进入/opt/module目录
cd /opt/module# 修改文件目录名称
mv kafka_2.12-3.6.1/ kafka

③ 修改配置文件

# 进入cd /opt/module/kafka/config文件目录
cd /opt/module/kafka/config# 修改配置文件
vim server.properties

参考如下配置:

#broker的全局唯一编号,每个服务节点不能重复,只能是数字。
broker.id=1#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://centos1:9092
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
# 每个topic创建时的副本数,默认时1个副本
offsets.topic.replication.factor=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=centos1:2181,centos2:2181,centos3:2181/kafka

centos2节点需要修改如下:

#broker的全局唯一编号,每个服务节点不能重复,只能是数字。
broker.id=2
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://centos2:9092
log.dirs=/opt/module/kafka/datas
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=centos1:2181,centos2:2181,centos3:2181/kafka

centos3节点需要修改如下:

#broker的全局唯一编号,每个服务节点不能重复,只能是数字。
broker.id=3
#broker对外暴露的IP和端口 (每个节点单独配置)
advertised.listeners=PLAINTEXT://centos3:9092
log.dirs=/opt/module/kafka/datas
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=centos1:2181,centos2:2181,centos3:2181/kafka

④ 配置环境变量

(1)修改 /etc/profile.d/my_env.sh文件

vim /etc/profile.d/my_env.sh

(2)添加内容

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

(3)让环境变量生效

source /etc/profile.d/my_env.sh

kafka_284">⑤ 启动/关闭kafka

启动Kafka,启动前请先启动ZooKeeper服务

# 进入/opt/module/kafka目录
cd /opt/module/kafka# 执行启动指令
bin/kafka-server-start.sh -daemon config/server.properties

此时再查看Zookeeper节点如下所示:

在这里插入图片描述

关闭Kafka

# 进入/opt/module/kafka目录
cd /opt/module/kafka# 执行关闭指令
bin/kafka-server-stop.sh

关闭kafka后,查看Zookeeper节点会发现已下线:

在这里插入图片描述


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

相关文章

掌握Hive函数[1]:从基础到高级应用

目录 函数简介 单行函数 算术运算函数 数值函数 字符串函数 日期函数 流程控制函数 集合函数 案例演示 函数简介 Hive将常用的逻辑封装成函数供用户使用,类似于Java中的函数。这样做的好处是可以避免用户反复编写相同的逻辑代码,可以直接调用这些函数。…

【Flutter】Flutter安装和配置(mac)

1、准备工作 升级Macos系统为最新系统安装最新的Xcode电脑上面需要安装brew https://brew.sh/安装chrome浏览器(开发web用) 2.、下载flutter https://docs.flutter.dev/release/archive?tabmacos 大家网页后,选择对应的版本【Tips&#x…

C++复习day05

类和对象 1. 面向对象和面向过程的区别是什么?(开放性问题) 1. **抽象级别**:- **面向对象**:以对象(数据和方法的集合)为中心,强调的是数据和行为的封装。- **面向过程**&#xf…

单一职责原则介绍

一.概念介绍 单一职责原则(Single Responsibility Principle, SRP)是面向对象设计中的五大基本原则之一,它是指一个类或者模块应该仅有一个引起它变化的原因。 具体来说,单一职责原则有以下几个特点: 职责集中:一个类或模块应该专注于完成一种特定的功能或职责,而不应该承担过…

力扣9.7

115.不同的子序列 题目 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 数据范围 1 < s.length, t.length < 1000s 和 t 由英文字母组成 分析 令dp[i][j]为s的前i个字符构成的子序列中为t的前j…

ArrayList,Vector, LinkedList 的存储性能和特性

1. ArrayList ArrayList 是基于动态数组实现的列表。在底层&#xff0c;它使用一个数组来存储元素&#xff0c;并在需要时自动扩容。这种设计使得 ArrayList 在进行按索引访问时性能非常高&#xff0c;但在插入和删除操作上可能表现不如链表。 1.1 特性 动态扩容&#xff1a…

Linux 递归删除大量的文件

一般情况下 在 Ubuntu 中&#xff0c;递归删除大量文件和文件夹可以通过以下几种方式快速完成。常用的方法是使用 rm 命令&#xff0c;配合一些适当的选项来提高删除速度和效率。 1. 使用 rm 命令递归删除 最常见的方式是使用 rm 命令的递归选项 -r 来删除目录及其所有内容。…

MySQL数据库的SQL注入漏洞解析

说明:本文仅是用于学习分析自己搭建的SQL漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据&#xff1f; 2.大数据有什么用&#xff1f; 2.1商业与营销&#xff1a; 2.2医疗与健康&#xff1a; 2.3金融服务&#xff1a; 2.4政府与公共服务&#xff1a; 2.5交通与物流&#xff1a; 2.6教育与个性化学习&#xff1a; 3.学习大数据需要学习哪…

Elasticsearch - SpringBoot 索引与文档相关demo

文章目录 前言Elasticsearch - SpringBoot 索引与文档相关demo1. _cat/* 相关API2. 查看所有索引3. 创建索引4. 检索索引5. 删除索引6. 新增文档7. 更新文档8. 根据索引中的文档 ID 查询文档9. 删除文档前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作…

电脑驱动分类

电脑驱动程序&#xff08;驱动程序&#xff09;是操作系统与硬件设备之间的桥梁&#xff0c;用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类&#xff1a; 1. 设备驱动程序 显示驱动程序&#xff1a;控制显卡和显示器的显示功能&#xff0c;负责图形渲染和…

Windows 11安装nvm教程

1、nvm是什么 nvm 全名 node.js version management&#xff0c;是一个 nodejs 的版本管理工具。通过它可以安装和切换不同版本的 nodejs&#xff0c;主要解决 node 各种版本存在不兼容现象。   在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0…

数据结构:线性表的顺序存储

文章目录 &#x1f34a;自我介绍&#x1f34a;线性表的顺序存储介绍概述例子 &#x1f34a;顺序表的存储类型设计设计思路类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我…

c++ 析构函数详解

C 中的析构函数用于在对象生命周期结束时执行清理任务&#xff0c;如释放内存、关闭文件或其他资源。析构函数是类的一部分&#xff0c;确保对象在销毁时能够正确地清理自身。 1. 析构函数的基本语法 析构函数的定义与构造函数类似&#xff0c;但它以波浪号 ~ 开头&#xff0…

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中&#xff0c;优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率&#xff0c;还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化&#xff0c;传统的优化算法在许…

Linux网络测试和故障排查命令

文章目录 ping 命令常用选项&#xff1a;使用示例&#xff1a;域名解析和 IP 地址响应数据停止 ping 命令统计数据延迟统计 traceroute 命令常用选项&#xff1a;使用示例&#xff1a;命令执行&#xff1a;路由节点详情&#xff1a; mtr 命令使用示例&#xff1a;使用结果详解输…

冒泡排序——基于Java的实现

简介 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;适用于小规模数据集。其基本思想是通过重复遍历待排序的数组&#xff0c;比较相邻的元素并交换它们的位置&#xff0c;以此将较大的元素逐步“冒泡”到数组的末尾。算法的名称源于其运行过程…

HBase

Apache HBase 是一个基于 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;构建的分布式、面向列的 NoSQL 数据库&#xff0c;主要用于处理大规模、稀疏的表结构数据。HBase 的设计灵感来自 Google 的 Bigtable&#xff0c;能够在海量数据中提供快速的随机读写操作&#xff…

分类与回归的区别

分类和回归的详细区别如下&#xff1a; 目标变量类型: 分类: 目标变量是离散的&#xff0c;分为若干类别。例如&#xff0c;邮件分类为“垃圾邮件”或“正常邮件”。 回归: 目标变量是连续的&#xff0c;通常是一个数值。例如&#xff0c;预测房价或气温。 输出结果: 分类:…

前端工程化2:从0到1的eslint插件开发教程

从0-1的eslint插件开发教程 开发eslint插件目的&#xff1a;根据项目需要&#xff0c;自定义满足项目特殊需要的校验规则是 参考eslint官方文档展开阐述 插件开发 自定义规则 单元测试 下面开始通过一个示例demo来介绍插件整个开发流程 代码中出现的方法及变量的详细解释与…