【框架学习(3) -- Linux下Kafka单机部署】


友情提示:这是一篇踩坑记录,请看耐心完之后,再参考操作!!!

先下载一个可视化工具

https://www.kafkatool.com/download.html

在这里插入图片描述

下载源码包

http://kafka.apache.org/downloads.html

在这里插入图片描述
两个选哪个都行。

举例:kafka_2.12-3.3.1.tgz
由于服务器上,kafka是用scala写的
前面的2.12表示的是用这个版本的scala开发的,而后面的3.3.1是kafka版本。

在这里插入图片描述
在2.8.0版本的kafka之前,必须要部署zookeeper才行
从2.8.0开始,kafka不需要zookeeper帮它管理集群了。

上传解压

tar -zxvf 压缩包名称

解压完毕后将文件夹重命名为kafka,想保留版本号名称方便管理也行,自己意愿。
在这里插入图片描述
内部结构如下:
在这里插入图片描述

修改 config/server.properties

进入到config文件夹下,找到server.properties
在这里插入图片描述

参考B站尚硅谷:https://www.bilibili.com/video/BV1vr4y1677k?

在这里插入图片描述
在这里插入图片描述
红色标注出的部分是在配置文件中必须手动修改的内容:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

配置环境变量

vim /etc/profile

添加:

export KAFKA_HOME=//home/software/kafka
export PATH=$PATH:$KAFKA_HOME/bin

关于重新配置环境变量

B站尚硅谷老师的kafka视频中,修改的环境变量路径是 /etc/profile.d/my_env.sh

有些疑惑,为什么我们的环境变量文件不一样?

在原本的 /etc/profile文件中有这么一段话:
在这里插入图片描述
告诉我们:

直接修改这个profile文件并不是一个好办法,最好是在/etc/profile.d/这个目录下,配置环境变量。

那怎么配置呢?
翻到/etc/profile的最下面:
在这里插入图片描述
/etc/profile会自行去遍历执行/etc/profile.d这个文件夹下所有的.sh文件,并且上面的注释中也解释了,是login shell,登录即生效。

所以,我们要新增或修改某个环境变量,都在/etc/profile.d文件夹下。

先挪动JDK环境变量试试:
删掉/etc/profile下的jdk环境变量,在/etc/profile.d文件夹下新建一个my_env.sh
在这里插入图片描述
在这里插入图片描述

保存退出后刷新环境变量:

source /etc/profile

验证一下jdk是否还在:
在这里插入图片描述
直接重启,再次验证:
在这里插入图片描述
证实了操作可行以后,把之前配置的环境变量都挪过去:
在这里插入图片描述
在这里插入图片描述

保存退出后刷新环境变量:

source /etc/profile

验证MySQL可用:
在这里插入图片描述
验证redis可用:
在这里插入图片描述

其实也可以在/etc/profile.d文件夹下,Java建一个.sh,MySQL也建一个,Redis也建一个……
我自己觉得文件太多反而麻烦,只建一个。

觉得我没说清,可以自行百度或者C一下

启动kafka服务(启动失败及错误分析)

切换到bin目录下

cd /home/software/kafka/bin/

bin目录下有各种kafka操作
在这里插入图片描述

启动kafka

kafka-server-start.sh  -daemon ../config/server.properties 

解释:

  • kafka-server-start.sh 启动程序
  • -daemon 守护线程
  • …/config/server.properties 根据指定配置文件启动

在这里插入图片描述
启动失败!
由于没有输出错误,只能去找日志:
在这里插入图片描述

kafkaServer.out

在这里插入图片描述

log4j:ERROR Could not read configuration file from URL [file://home/software/kafka/bin/…/config/log4j.properties].
java.net.UnknownHostException: home

错误信息表示它无法根据这个路径读取路径

先寻找这个文件,它是存在的:
在这里插入图片描述
主要原因:

java.net.UnknownHostException: home

主机找不到,联合上文中的server.propertoes,猜测可能是server.propertoes中直接写master,IP地址没有根据主机名映射过去。
在这里插入图片描述
在这里插入图片描述
启动成功后又挂了

这里发现了很多问题:
1、我使用的是3.2.1版本,这个配置走的还是zookeeper的路子,我如何才能使用zookeeper启动呢?
2、在阅览群贴的过程中发现一个大问题,kafka从3.0.0版本开始就弃用Java8了
在这里插入图片描述
我他喵的装的是jdk8啊!!!

部署到这一步,我开始思考是不是jdk版本过低导致的。
要么降版本到3.0以下,要么换jdk 成Java11及以上。

事情到了这一步,我还是想试试,

寻找启动错误的原因

解压后的jdk11文件夹
切换到bin目录下:
手动生成jre

./jlink --module-path jmods --add-modules java.desktop --output jre

在这里插入图片描述
生成的jre文件夹到bin目录下了,我们挪到和bin同一级。
配置环境变量:
在这里插入图片描述
刷新环境变量让JDK11生效:

在这里插入图片描述
启动依旧报原之前的错误,说明与jdk版本无关。

这时意识到现在用的这种方式,配置的是zookeeper启动通信,很大可能性是因为我没有安装zookeeper启动或是没有启动自带的zookeeper原因。

如果是因为zookeeper的问题,因为我没有自己装zookeeper,kafka自带的zookeeper是不是需要我提前手动启动?

使用自kafka带的zookeeper启动

kafka是自带zookeeper的:

在这里插入图片描述
在kafka文件夹下新建一个zookeeper文件夹,用来存放zookeeper的数据及日志文件:
在这里插入图片描述在这里插入图片描述
修改kafka /config下的zookeeper.properties
在这里插入图片描述

clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/software/kafka/zookeeper/data
dataLogDir=/home/software/kafka/zookeeper/dataLog
server.0=192.168.253.10:12888:13888

在data文件夹下新建一个myid文件,内容就写0,就是server.00

启动zookeeper服务
kafka目录下执行:

./bin/zookeeper-server-start.sh config/zookeeper.properties &

zookeeper成功启动,但是仍旧无法启动kafka
在这里插入图片描述
把报错的log4j的路径给加入环境变量:

export KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:/home/software/kafka/config/log4j.properties

在这里插入图片描述

确认kafka自带的zookeeper启动成功后,再次尝试启动kafka

依旧失败。

踩坑!
之前有博客说进入日志文件夹修改这个文件:
在这里插入图片描述
cluster.id 修改跟zookeeper中server.x一样是错的!
要根据zookeeper的服务日志中的报错修改:
在这里插入图片描述

kafka.common.InconsistentClusterIdException: The Cluster ID VEAcwxN3TKG4Ktean19zJg doesn’t match stored clusterId Some(CdOlid3QR-SijiAl5flm1Q) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
at kafka.server.KafkaServer.startup(KafkaServer.scala:230)
at kafka.Kafka$.main(Kafka.scala:109)
at kafka.Kafka.main(Kafka.scala)

意思是这两个cluster id不一样,改成和前者一样的。

保存后关闭之前的服务,重新启动

最终的“胜利”

在这里插入图片描述

想知道我最终怎么解决的吗?

在这里插入图片描述
修改server.properties中的延迟为6000,默认18000

前面的步骤也很重要。

启动失败总结

好了,总结一下失败原因:
1、确保虚拟机时间正确,集群则需要保证时间同步

2、直接通过config文件夹下的server.properties文件启动,使用的zookeeper方式,如果没有自行安装zookeeper,可以先启动kafka自带的zookeeper。

3、如果报错找不到log4j的路径,先加入环境变量

4、kafka自带的zookeeper,是通过config文件夹下的zookeeper.properties启动。新增内容如下:

clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/software/kafka/zookeeper/data
dataLogDir=/home/software/kafka/zookeeper/dataLog
server.0=192.168.253.10:12888:13888 // server.x,例如server.1顺序数

同时还要保证data数据文件夹下有一个myid文件夹,里面的内容与server.x中的x一致。

6、logs文件夹下,server.log会包含服务信息,可以根据里面的报错排查问题。

5、如果上述从操作都不行,尝试修改server.propertities中的延迟,改小6000,或者改大。

花了一下午踩坑,血的教训!

当前已经解决使用kafka自带的zookeeper启动问题,并且将jdk升为Java11

下一篇,不使用zookeeper开启kafka服务,测试新版kafka的常用操作命令。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上岸撒尿的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值