如何在 Ubuntu 22.04 上安装和使用 Apache Kafka

简介

Apache Kafka是一个高性能、低延迟的分布式流处理平台,广泛用于构建实时数据管道和流式应用。本文将指导你如何在Ubuntu 22.04系统上快速部署Apache Kafka,让你体验到Kafka在处理大规模实时数据流方面的强大能力。通过本教程,你将学会如何安装、配置Kafka及其依赖的Zookeeper服务,并进行基本的测试以确保部署成功。

功能特点简介

Apache Kafka的核心优势在于其高吞吐量和分布式、容错的特性,使其成为处理大规模实时数据流的理想选择。以下是Kafka的一些独特卖点:

  • 高吞吐量:Kafka能够处理高吞吐量的数据流,满足大数据时代的需求。
  • 低延迟:即使在高负载下,Kafka也能保持低延迟的数据传输。
  • 分布式架构:Kafka的分布式架构支持数据的分布式存储和处理,提高了系统的可扩展性和可靠性。
  • 容错机制:Kafka内置的复制和分区机制,确保了数据的高可用性和持久性。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

1. 更新系统

首先,更新你的包列表并升级系统包到最新版本。

sudo apt update -y

2. 安装Java

Kafka需要Java环境来运行。安装Ubuntu仓库中最新版本的OpenJDK。

sudo apt install openjdk-21-jdk -y

3. 创建Kafka用户

出于安全考虑,建议为Kafka创建一个专用用户。

sudo useradd -m -s /bin/bash kafka
sudo passwd kafka

切换到Kafka用户:

sudo su - kafka

4. 下载并解压Kafka

从Apache Kafka官方下载页面下载最新稳定版本的Kafka。

wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
mv kafka_2.13-3.7.0 kafka

5. 配置Kafka

Kafka需要Zookeeper,它随Kafka一起提供,用于开发和测试目的。在生产环境中,你应该设置一个专用的Zookeeper集群。

配置Zookeeper

创建Zookeeper的数据目录:

mkdir -p ~/kafka/data/zookeeper

编辑Zookeeper配置文件:

nano ~/kafka/config/zookeeper.properties

更新dataDir属性指向新数据目录:

dataDir=/home/kafka/kafka/data/zookeeper

配置Kafka Broker

创建Kafka的数据目录:

mkdir -p ~/kafka/data/kafka

编辑Kafka配置文件:

nano ~/kafka/config/server.properties

更新以下属性:

log.dirs=/home/kafka/kafka/data/kafka
zookeeper.connect=localhost:2181

6. 启动Zookeeper和Kafka

打开两个终端会话:一个用于Zookeeper,另一个用于Kafka。确保你在两个会话中都以Kafka用户身份登录。

启动Zookeeper

~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties

启动Kafka

在第二个终端会话中,启动Kafka:

~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties

7. 测试安装

创建Topic

在新的终端会话中,以Kafka用户身份登录,创建一个测试Topic:

~/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

列出Topics

验证Topic是否创建:

~/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

生产消息

启动一个Kafka生产者:

~/kafka/bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092

输入几条消息并按Enter键:

Hello Kafka
This is a test message

消费消息

打开另一个终端会话,启动一个Kafka消费者:

~/kafka/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

你应该能看到你在生产者终端输入的消息。

8. 设置SELinux为Enforcing(可选)

如果你已启用SELinux,请按照以下步骤操作。为了启动Kafka和Zookeeper服务,我们需要将SELinux设置为Enforcing。否则,我们将面临“Permission Denied”错误。

sudo setenforce 0

9. 将Kafka设置为Systemd服务

为了确保Kafka和Zookeeper在启动时自动启动,你可以将它们设置为systemd服务。

创建Zookeeper的systemd服务文件:

sudo nano /etc/systemd/system/zookeeper.service

添加以下内容:

[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
After=network.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

创建Kafka的systemd服务文件:

sudo nano /etc/systemd/system/kafka.service

添加以下内容:

[Unit]
Description=Apache Kafka server
Documentation=http://kafka.apache.org/documentation.html
After=network.target zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

启动并启用服务:

重新加载systemd以应用新的服务文件:

sudo systemctl daemon-reload

启动并启用Zookeeper:

sudo systemctl start zookeeper
sudo systemctl enable zookeeper

启动并启用Kafka:

sudo systemctl start kafka
sudo systemctl enable kafka

结论

你已经成功地在Ubuntu 22.04上安装了Apache Kafka。你可以创建主题、生产和消费消息,并将Kafka和Zookeeper作为systemd服务进行管理。这个设置为你构建实时数据管道和流式应用提供了一个坚实的基础。

如需进一步配置和调整,请参考官方Kafka文档。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

群控系统服务端开发模式-应用开发-自动退出发送邮件

一、修改Redis配置文件 将redis.conf里面的notify-keyspace-events参数对应的值改为Ex&#xff0c;具体代码如下&#xff1a; notify-keyspace-events Ex 二、创建控制台命令 在根目录下config文件夹下找到console.php文件修改&#xff0c;具体代码如下&#xff1a; <?p…

前端篇 -- jQuery详细教程

jQuery教程 jQuery官网1.1 jQuery的基本介绍1.2 jQuery 基本开发步骤1.3 jQuery对象和DOM对象 1.3.1 jQuery对象的基本介绍1.3.2 DOM对象转 jQuery对象1.3.3 jQuery对象转DOM对象 1.4 jQuery选择器 1.4.1 jQuery 基本选择器介绍1.4.2 基本选择器1.4.3 层次选择器1.4.4 基础过滤…

【数模学习笔记】模糊综合评价

声明&#xff1a;以下笔记中的图片均来自“数学建模学习交流”清风老师的课程ppt&#xff0c;仅用作学习交流使用 模糊综合评价 文章目录 模糊综合评价模糊数学经典集合和模糊集合的基本概念经典集合和特征函数模糊集合和隶属函数模糊集合的分类 隶属函数的确定方法方法一 模糊…

STM32F103单片机使用STM32CubeMX新建IAR工程步骤

打开STM32CubeMX软件&#xff0c;选择File 选择新建工程 在打开的窗口输入单片机型号 在右下角选择单片机型号&#xff0c;然后点右上角 start project&#xff0c;开始新建工程。 接下来设置调试接口&#xff0c;在左边System Core中选择 SYS&#xff0c;然后在右右边debu…

相机(Camera)硬件组成详解

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 写在前面&#xff1a;可以去B站观看一些相机原理的视频来配合学习&#xff0c;这里推荐&#xff1a;推荐1&#xff0c;推荐2&#xff0c;推荐3 相机&#xff08;Camera&#xff09;是一种复杂的光…

String【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a; 文章目录 String1.String是什么&#xff1f;2.String怎么用&#xff1f;3.常用操作4.底层实现&#xff1f;5.总结&#xff08;重点&#xff09; String 1.String是什么&#xff1f; String就是字符串&…

乘上 SpringBoot 东风,广场舞团掀起律动热潮

2 系统开发环境 2.1 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#xff0c;所以Java的发展迅速。…

组件开发的环境准备

目录​​​​​​​ node.js的安装 npm镜像源的修改 pnpm包管理器的安装&#xff08;全局安装&#xff09; 基于pnpm创建脚手架项目 node.js的安装 Node.js 是一个开源的、跨平台的 JavaScript 运行环境&#xff0c;能够在服务器端执行 JavaScript 代码。 a.下载与安装 …

【OpenCV】Canny边缘检测

理论 Canny 边缘检测是一种流行的边缘检测算法。它是由 John F. Canny 在 1986 年提出。 这是一个多阶段算法&#xff0c;我们将介绍算法的每一个步骤。 降噪 由于边缘检测易受图像中的噪声影响&#xff0c;因此第一步是使用 5x5 高斯滤波器去除图像中的噪声。我们在前面的章…

gitee常见命令

目录 1.本地分支重命名 2.更新远程仓库分支 3.为当前分支设置远程跟踪分支 4.撤销已经push远程的代码 5.idea->gitee的‘还原提交’ 需要和本地当前的代码解决冲突 解决冲突 本地工作区的差异代码显示 本地commit和push远程 6.idea->gitee的‘将当前分支重置到此…

Ultra-Fast-Lane-Detection复现、部署及训练

Ultra-Fast-Lane-Detection复现、训练及部署 一、复现二、训练三、部署 一、复现 Github下载源码&#xff1a;https://github.com/cfzd/Ultra-Fast-Lane-Detection &#xff08;1&#xff09;将GPU运算改为CPU运算&#xff1a;.cuda() -> .to(‘cpu’) test.py中33行&…

【Java计算机毕业设计】基于SSM+VUE宠物领养管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文&#xff1a;https://arxiv.org/pdf/2311.14897v3.pdf 项目&#xff1a;https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位&#xff0c;这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…

Linux-ubuntu环境配置

一&#xff0c;安装VWware&#xff0c;里面导入镜像文件 这些都是文件夹里面有的&#xff0c;然后对着正点原子视频安装就行&#xff0c;虚拟机的破解码&#xff0c;去百度搜一个能用就行&#xff0c;中间遇见俩问题。①乌班图里面不能上网&#xff0c;②插入U盘后&#xff0c;…

Python Selenium 各浏览器驱动下载与配置使用(详细流程)

大家好啊&#xff01;我是NiJiMingCheng 这是我的博客&#xff1a;NiJiMingCheng 这节课我们来学习安装selenium和对应的各个浏览器驱动&#xff0c;个人比较喜欢使用谷歌浏览器驱动&#xff0c;所以接下来以谷歌浏览器来为大家做示例&#xff01;&#xff01;&#xff01; Sel…

工具学习_Buildroot

0. 工具概述 Buildroot 是一个简单、高效且易于使用的工具&#xff0c;旨在通过交叉编译生成嵌入式 Linux 系统。它支持生成交叉编译工具链、根文件系统、内核镜像以及引导加载器。通过类似于内核配置的菜单界面&#xff08;menuconfig、gconfig、xconfig&#xff09;&#xf…

【机器人】系统辨识之激励轨迹设计(傅里叶级数)

在机器人参数辨识中使用傅里叶级数&#xff0c;主要是为了生成一种激励轨迹&#xff0c;具有良好的数学特性&#xff0c;同时符合物理要求。傅里叶级数的特性使其在机器人动力学辨识的激励轨迹设计中非常常用。 1. 为什么需要激励轨迹&#xff1f; 激励轨迹的作用是通过驱动机…

Unity简单操作及使用教程

Unity 是一款强大的跨平台游戏引擎&#xff0c;它不仅支持 2D 和 3D 游戏的开发&#xff0c;还可以用于虚拟现实 (VR)、增强现实 (AR)、动画、建筑可视化等多个领域。Unity 提供了完整的开发环境&#xff0c;具有丰富的功能、工具和资源&#xff0c;可以帮助开发者快速实现创意…

前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

需求&#xff1a;在做前端开发的时候&#xff0c;有的时候 这个项目需要 node 14 那个项目需要 node 16&#xff0c;我们也不能卸载 安装 。这岂不是很麻烦。这个时候 就需要 一个工具 来管理我们的 node 版本和 npm 版本。 下面就分享一个 nvm 工具 用来管理 node 版本。 这个…

为什么数据平台需要敏捷版|直播回顾

11月28日&#xff0c;我们邀请到StartDT合伙人、CTO地雷和StartDT资深战略咨询专家何夕&#xff0c;围绕“为什么数据平台需要敏捷版”这个话题&#xff0c;向大家汇报了DataSimba敏捷版这半年来的最新进展&#xff0c;并带来了详细的产品解读。 敏捷版支持StarRocks、ClickHo…