写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

Kafka 3.x的解压安装 - Linux

本文关键字:Linux、Kafka、解压、安装、console测试

文章目录

  • Kafka 3.x的解压安装 - Linux
    • 一、Kafka介绍
      • 1. 应用场景
      • 2. 版本对比
    • 二、Kafka安装
      • 1. 前置环境
      • 2. 软件安装
      • 3. 服务启动
    • 三、Console测试
      • 1. 基础命令
      • 2. 启动生产者
      • 3. 启动消费者
      • 4. 验证消费流程
    • 四、注册系统服务
      • 1. Systemd服务配置
      • 2. Kafka服务控制

一、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. 软件安装

  • 下载Kafka:https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
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

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~

Kafka 3.x的解压安装 - Linux相关推荐

  1. Linux中如何解压安装rar软件包?

    首先确保虚拟机能上网,Linux系统本身是不支持解压rar包的,但是可以通过安装RAR工具来进行解压. 地址:https://www.rarlab.com/download.htm选择对应的版本进行下 ...

  2. linux安装tar解压命令,Linux下*.tar.gz/.tar.bz2 文件解压缩安装命令

    Linux tar 命令 在Linux平台,tar是主要的打包工具.tar命令通常用来把文件和目录压缩为一个文件( tarball 或 tar, gzip 和 bzip). Tar选项:c – 创建压 ...

  3. linux下---大于2G的文件解压安装7za

    一.安装必备环境 yum install kernel-devel kernel-headers gcc-c++ make bzip2 二.下载 wget http://downloads.sourc ...

  4. mysql5.6 mac10.11_Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)...

    没有mac的root密码,当前用户有sudo权限,所以想以root身份执行的命令都加了sudo. 是否存在 _mysql 是不是用户组 _mysql 的成员. 把解压后的代码移动到 /usr/loca ...

  5. Could NOT find Vulkan (missing: Vulkan_LIBRARY Vulkan_INCLUDE_DIR) | 解压安装

    文章目录 遇到报错 VULKAN 解压安装 [解压安装 -- 实际采用 ] 遇到报错 CMake Error at /usr/share/cmake-3.10/Modules/FindPackageH ...

  6. Qt基于QuaZIP实现文件压缩/解压(Linux下)

    Qt基于QuaZIP实现文件压缩/解压(Linux下) 一.工具准备 二.编译zlib 1.下载zlib源码 2.配置 3.编译与安装 三.编译QuaZIP 1.下载QuaZIP源码 2.将zlib库 ...

  7. JDK的解压安装 - CentOS(结尾附视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  8. linux常见的解压命令,linux常见解压命令

    刚学习linux不久,还有很多命令要记,解压缩也是经常用到的命令,放一些常见的在这,需要的时候看看. linux下tar解压gz解压bz2等各种解压文件使用方法 .tar 解包:tar xvf Fil ...

  9. linux+shell+解压命令,linux shell 压缩解压命令

    .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压 ...

最新文章

  1. 小机上监控AIX和数据库管理系统的运行情况直到性能优化(SQL语句优化和排除硬件问题)...
  2. HTML中单选框的设置,和提交按钮之间的组合
  3. 计算机学院会会,学生分会——计算机学院学生会
  4. 010_AOPXml方式开发
  5. makefile笔记
  6. AppleScript 以管理员身份运行程序
  7. 设计模式解析笔记之Adapter模式
  8. 使用jquery+css实现瀑布流布局
  9. 基于Matlab的三维胖射线追踪算法
  10. Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression Regularization
  11. [转载] Python集合set
  12. AndroidStudio与eclipse打包的时候报错。Error:(4) Error: ssdk_instapager_login_html is not translated in......
  13. JSP标签,jsp:include,jsp:forward用法介绍及示例
  14. 因一纸设计稿,我把竞品APP扒得裤衩不剩(中)
  15. java 检查 死链接_如何检查网站死链(网站死链接如何简易识别及处理)
  16. 简单html实现图片轮播,JavaScript实现简易轮播图
  17. 选择unity还是unreal4
  18. android 异源投屏,华为MATE10支持异源投屏是什么意思?
  19. 2020 0414对象的多态
  20. 计算机制图员主要学什么,计算机辅助设计绘图员高级绘图员(机械类)考试说明...

热门文章

  1. 精华推荐 | 【MySQL技术专题】「主从同步架构」全面详细透析MySQL的三种主从复制(Replication)机制的原理和实战开发(原理+实战)
  2. 绘制变形图形--Canvas的基本操作
  3. I am trying
  4. Unity3d游戏开发工程师笔试题学习
  5. OO ALV 下拉列表框
  6. 微信登录不能回调WXEntryActivity的解决
  7. [AHK]输入法状态提示,中文状态提示“中”,英文状态提示“EN”
  8. 报纸排版系统技术总结2
  9. Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
  10. 题解|《算法竞赛进阶指南》 前缀统计