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

server/2024/12/16 4:57:41/

简介

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


http://www.ppmy.cn/server/150532.html

相关文章

最新消息!ChatGPT已集成到苹果操作系统!

12月11日,OpenAI宣布ChatGPT将集成到苹果iOS、iPadOS和macOS操作系统中,用户可以直接在这些设备上访问ChatGPT的功能。 通过此次宣布内容来看,ChatGPT不再局限于单独的应用程序,用户可以在苹果设备上更便捷地使用它。这意味着&…

Acwing 算法基础课 数学知识 线性筛

线性筛素数 也叫欧拉筛。 int pr[maxn]; bool flg[maxn]; int main() {for (int i 2; i < maxn; i) {if (!flg[i]) pr[pr[0]] i;for (int j 1; i * pr[j] < n && j < pr[0]; j) {flg[i * pr[j]] 1;if (i % pr[j] 0) break; // 重点}} }这样筛的话&…

ubuntu24.04部署单节点kafka_2.13-3.8.1

ubuntu24.04部署单节点kafka_2.13-3.8.1 下载地址推荐使用清华镜像源下载 https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.8.1/kafka_2.13-3.8.1.tgz 部署kafka部署 # 解压kafka压缩包 sudo tar -zxvf kafka_2.13-3.8.1.tgz -C /usr/local/# 改变权限及所有权 sudo ch…

【软件工程】第六章·考虑对象(UML、UML在软件开发中的应用、面向对象方法的软件开发)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

TDengine Flink集成

Flink 集成 TDengine 主要涉及在 Flink 项目中配置与 TDengine 的连接&#xff0c;实现数据的读取和写入。以下是一个详细的指南&#xff0c;介绍如何在 Flink 中集成 TDengine&#xff1a; 一、准备工作 安装并启动 Flink&#xff1a; 下载并解压 Flink 安装包。启动 Flink …

MacOs 日常故障排除troubleshooting

1. 关闭开机自启动 app X macOs 15.1 System settings -> General -> Login Items & Extensions->Open at Login -> Select app X and click -

Nginx 缓存那些事儿:原理、配置和最佳实践

Nginx 缓存那些事儿&#xff1a;原理、配置和最佳实践 在当今的互联网世界&#xff0c;网站的访问量和数据处理量不断攀升&#xff0c;如何确保用户能够快速、稳定地访问我们的网站&#xff0c;已经成为每个运维工程师面临的挑战。幸运的是&#xff0c;Nginx 作为一款高性能的…

C语言:const的用法

有时候我们希望定义这样一种变量&#xff0c;它的值不能被改变&#xff0c;在整个作用域中都保持固定。例如&#xff0c;用一个变量来表示班级的最大人数&#xff0c;或者表示缓冲区的大小。为了满足这一要求&#xff0c;可以使用 const 关键字对变量加以限定&#xff1a; con…