Kafka 3.x的解压安装 - Linux

简介: Kafka 3.x的解压安装 - Linux

一、Kafka介绍

来自维基百科:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。

1. 应用场景

Kafka可以看作是一个能够处理消息队列的中间件,适用于实时的流数据处理,主要用于平衡好生产者和消费者之间的关系。

  • 生产者

生产者可以看作是数据源,可以来自于日志采集框架,如Flume,也可以来自于其它的流数据服务。当接收到数据后,将根据预设的Topic暂存在Kafka中等待消费。对于接收到的数据将会有额外的标记,用于记录数据的被消费【使用】情况。

  • 消费者

消费者即数据的使用端,可以是一个持久化的存储结构,如Hadoop,也可以直接接入支持流数据计算的各种框架,如Spark - Streaming。消费者可以有多个,通过订阅不同的Topic来获取数据。

2. 版本对比

Kafka的0.x和1.x可以看作是上古版本了,最近的更新也是几年以前,从目前的场景需求来看,也没有什么特别的理由需要使用到这两个版本了。

  • 2.x

在进行版本选择时,通常需要综合考虑整个数据流所设计到的计算框架和存储结构,来确定开发成本以及兼容性。目前2.x版本同样是一个可以用于生产环境的版本,并且保持着对Scala最新版本的编译更新。

  • 3.x

3.x是目前最新的稳定版,需要注意的是,Kafka的每个大版本之间的差异较大,包括命令参数以及API调用,所以在更换版本前需要做好详细的调查与准备,本文以3.x的安装为例。

二、Kafka安装

解压安装的操作方式可以适用于各种主流Linux操作系统,只需要解决好前置环境问题。

1. 前置环境

此前,运行Kafka需要预先安装Zookeeper。在Kafka 2.8.0版本以后,引入了Kraft(Kafka Raft)模式,可以使Kafka在不依赖外部Zookeeper的前提下运行。除此之外Kafka由Scala语言编写,需要JVM的运行环境。

  • 检查已有的JDK环境
  • Ubuntu/Debian:update-java-alternatives --list【需要已安装sudo apt install java-common】
  • CentOS/RedHat:rpm -qa|grep java

检查已经安装的环境也可以使用find来搜索,或者使用java -version命令辅助验证,主要为了保证不会与即将安装的JDK版本产生冲突。

  • 卸载不需要的JDK环境
  • Ubuntu/Debian:sudo apt remove xxx
  • CentOS/RedHat:sudo rpm -e --nodeps xxx

使用已经查到的软件包完整名称替换掉xxx的部分,可以卸载掉系统预装的JDK版本。

  • 安装JDK
  • Ubuntu/Debian:sudo apt install openjdk-8-jdk
  • CentOS/RedHat:sudo yum install java-1.8.0-openjdk

安装完成后可以使用java-version命令验证【可省去环境变量配置】。

2. 软件安装

wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz

  • 解压安装
tar -zvxf kafka_2.13-3.4.0.tgz
  • 环境变量配置
  • 系统环境变量:/etc/profile
  • Ubuntu/Debian:~/.bashrc
  • CentOS/RedHat:~/.bash_profile

需要在环境变量中指定Kafka的安装目录以及命令文件所在目录,系统环境变量与用户环境变量配置其中之一即可。

export KAFKA_HOME=/home/parallels/Software/kafka_2.13-3.4.0
export PATH=$PATH:$KAFKA_HOME/bin

在文件结尾添加以上内容后执行source命令,使其立即生效。

[Ubuntu/Debian]source ~/.bashrc
[CentOS/RedHat]source ~/.bash_profile

执行后可以输入kafka,然后按Tab尝试补全【需要按多次】,如果出现命令列表则证明配置成功。

3. 服务启动

如果使用Kraft模式,则需要先进行集群初始化【即使是单个节点】,以下为操作步骤:

  • 修改配置文件

修改Kafka的server.properties文件,更换其中的log.dirs目录指向,防止默认的/tmp被清空:

# 创建log目录
cd $KAFKA_HOME
mkdir kafka-logs
# 修改配置文件
log.dirs=/home/parallels/Software/kafka_2.13-3.4.0/kafka-logs
  • 创建Kafka的集群ID

调用kafka-storage.sh生成一个UUID,并存储在一个临时变量KAFKA_CLUSTER_ID中。

KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

  • 执行格式化操作

进入到Kafka的家目录后,执行以下命令:

bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

  • 启动Kafka集群

进入到Kafka的家目录后,执行以下命令

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

这种方式并不是后台运行,需要保证终端开启,等测试稳定后可以在后台执行或者注册为系统服务。

三、Console测试

1. 基础命令

  • 查看Topic列表
kafka-topics.sh --list --bootstrap-server localhost:9092
  • 创建Topic
  • 默认:分区数为1
  • 默认:副本因子为1
  • 默认:删除策略为delete,即删除后数据不可恢复
  • 默认:压缩类型为producer,即由生产者决定是否压缩消息
  • 默认:清理策略为delete,即按照时间和大小进行日志清理

当创建一个Topic时,如果只填写Topic名称,会使用以上的默认配置

kafka-topics.sh --create --topic <topic-name> --partitions <num-partitions> --replication-factor <replication-factor> --bootstrap-server localhost:9092

  • 查看Topic
kafka-topics.sh --describe --topic <topic-name> --bootstrap-server localhost:9092

  • 删除Topic
kafka-topics.sh --delete --topic <topic-name> --bootstrap-server localhost:9092

2. 启动生产者

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my-topic

启动一个基于console的生产者脚本,可以方便的进行数据输入的测试,直接进行数据输入即可。

3. 启动消费者

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning

添加from-beginning参数来从头消费数据。

4. 验证消费流程

生产者脚本中持续输入数据,然后查看消费者脚本中的消费情况,使用Ctrl + C终止。

四、注册系统服务

为了方便的控制Kafka服务的启动和停止,可以将其注册为系统服务。

1. Systemd服务配置

  • 创建Systemd服务文件
sudo vi /etc/systemd/system/kafka.service

在文件中添加以下内容,需要手动替换User和Group名称以及ExecStartExecStop中关于路径的部分:

[Unit]
Description=Apache Kafka
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=parallels
Group=parallels
ExecStart=/path/to/kafka_home/bin/kafka-server-start.sh /path/to/kafka_home/config/kraft/server.properties
ExecStop=/path/to/kafka_home/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

  • 重新加载Systemd配置
sudo systemctl daemon-reload

2. Kafka服务控制

  • 开机自动启动
sudo systemctl enable kafka.service

  • 启动Kafka服务
sudo systemctl start kafka.service
  • 检查Kafka状态
sudo systemctl status kafka.service

  • 停止Kafka服务
sudo systemctl stop kafka.service
  • 重启Kafka服务
sudo systemctl restart kafka.service


目录
相关文章
|
8月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
6月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
458 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
6月前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
910 0
|
8月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
421 5
|
8月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
614 1
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
477 1
|
消息中间件 Java Kafka
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
1559 9