教程https://www.bilibili.com/video/BV1t34y1G7NW/
一、安装软件
首先得找到一些基本概念:
1、类比Java的文件执行过程:
Java 程序从源代码到运行主要有三步:
- 编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class)
- 解释:虚拟机执行Java字节码,将字节码翻译成机器能识别的机器码
- 执行:对应的机器执行二进制机器码
参考林小鹿大佬
机器码
机器码:机器码就是cpu能够直接读取并运行的代码,用二进制编码表示,也叫做机器指令码。
字节码
字节码:字节码是一种中间状态的二进制代码,是由源码编译过来的,可读性没有源码高。而且cpu也不能够直接读取字节码,在java中,字节码需要经过JVM虚拟机转译成机器码之后,cpu才能够读取并运行
https://blog.csdn.net/lln1540295459/article/details/120615880
也就是说Java文件会被编译成为字节码文件(16进制串,但可以被idea就行反编译识别成可读性较强的代码),这个字节码文件会被jvm解析成为二进制机器码,也就是01串,这个二进制机器码会被本地系统电脑执行。如果是win系统电脑就win电脑系统执行,如果是linux系统电脑就被linux系统电脑执行。
这里是本人调研得出的结果,如果有误,望指正。谢谢!
2、在安装软件时都会看到2种类型得压缩包:
sourcre downloads(源代码下载)下载以后需要自行编译出安装包,再行安装。
Binary downloads(二进制下载)已经编译完成的安装包,下载之后可以直接安装使用。Scala的版本不同,对应的kafka版本也不一样。
https://blog.csdn.net/loongkingwhat/article/details/122143072
照着这么说source还可以编译成为二进制机器码,这样子不就可以类似于java代码差不多了吗?看来修改源码并定制属于个人的软件。看来是这样子的!nice!老早之前就想找到可以修改源代码来跑这些软件的方法了。
3、安装Apache Kafka
用我的也行
链接:https://pan.baidu.com/s/1Jznw01iB_L8GBbcgP5JbRw?pwd=2w3k
提取码:2w3k
二、配置过程
1、下载并配置jdk,这里就不详细展开了。
如果要配置jdk,可以自己去找一下文章参考Linux安装Java环境(OpenJDK1.8) - MrFugui - 博客园 (cnblogs.com)
这个下载步骤的参考不一定好,不过我当初也是使用yum的方式来下载java环境了(应该是和这个文章有类似之处),而且好像自动配置好了,不需要配置etc的那个文件了,但是jps就没配置好,还得是单独配置jdk好些。
链接:https://pan.baidu.com/s/1BCRVaOIHPdG1ou1MXq_9wQ?pwd=tyvr
提取码:tyvr
2、zookeeper的下载和安装配置
具体看我的一个文章https://blog.csdn.net/ws_please/article/details/133326165
启动zookeeper并连接zookeeper:
连接服务zkCli.sh
这个没问题就说明应该是没问题了。
/root/zookeepers/zookeeper382-03/bin/zkCli.sh
如果是其他端口(非2181的端口,很多参考文章地方都没说到的),就用这个:
/root/zookeepers/zk382/bin/zkCli.sh -server 127.0.0.1:2184
3、安装和配置kafka
①先丢到虚拟机里面。
②解压:
tar -zxvf kafka_2.13-3.5.1.tgz
③修改文件夹名称(可以省略跳过)
mv kafka_2.13-3.5.1 kafka2-1-3-02
输入命令“mv 原文件夹名 新文件夹名”,其中“mv”是移动文件或文件夹的命令,“原文件夹名”是要修改的文件夹的名称,“新文件夹名”是修改后的名称。 例如要将名为“old_folder”的文件夹修改为“new_folder”,则输入命令“mv old_folder new_folder”
④修改配置
先看看配置有什么:
# broker的编号,如果集群中有多个broker,则每个broker的编号需要设置的不同
broker.id=0
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
⑤先备份,再拷贝
[root@xinqi config]# cp server.properties servercp.properties
⑥再vim config/server.properties
加入:
# 存放消息日志文件的地址,kafka存储消息(log日志数据)的目录,log.dir配置单个目录,log.dirs可以配置多个目录
log.dirs=/root/kafkas/kafkaDatas/kafka2-1-3-01/kafkaLogs
# Kafka所需的ZooKeeper集群地址,为了方便演示,我们假设Kafka和ZooKeeper都安装在本机,如果有多个zookeeper, ZooKeeper服务地址<ip:port>, 多个zk节点用逗号隔开。后续再演示集群zookeeper以及kafka,目前zookeeper以及Kafka都只演示单机版
zookeeper.connect=127.0.0.1:2184
防火墙关闭:
[root@xinqi config]# systemctl stop firewalld
Kafka 开启远程连接,确认Linux 防火墙 kafka 的端口已开启,并做下面相关配置
# broker对外提供的服务入口地址,用的比较少,表示客户端要连接的broker入口地址列表
listeners=PLAINTEXT://127.0.0.1:9094
advertised.listeners=PLAINTEXT://127.0.0.1:9094
然后来到:
[root@xinqi bin]# pwd
/root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
⑦启动和停止:
主要是这个文件:
kafka-server-start.sh
以及kafka-server-stop.sh
(1)根据配置文件启动,实时查看:
/root/kafkas/kafkaSoftWares/kafka213-01/bin/kafka-server-start.sh /root/kafkas/kafkaSoftWares/kafka213-01/config/server.properties
(2)后台启动:
如果要在后台运行 Kafka 服务,那么可以在启动命令中加入 -daemon 参数或&字符
方式1:
/root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/kafka-server-start.sh /root/kafkas/kafkaSoftWares/kafka2-1-3-01/config/server.properties &
方式2,(deamon难不难启动看自己的kafka的版本等其他详细信息)
/root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/kafka-server-start.sh ‐daemon /root/kafkas/kafkaSoftWares/kafka2-1-3-01/config/server.properties
(3)停止:
这里可能不能停止成功,原因待探究,
/root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/kafka-server-stop.sh
(4)这样应该也可以:
[root@xinqi ~]# cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/
[root@xinqi bin]# ./kafka-server-stop.sh
⑧检测kafka是否可以正常运行(简单演示)
[root@xinqi bin]# pwd
/root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
新建生产者终端1
cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
./kafka-console-producer.sh --broker-list 127.0.0.1:9094 --topic xinqi_test
(注:xinqi_test是你要建立的topic名)
新建消费者终端2:
先进入kafka目录。
cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9094 --topic xinqi_test
消费xinqi_test的topic消息
在生产者终端1不断输入推送的消息,另消费者终端2则消费这个消息。
⑨实操演示:
生产者终端:
[C:\~]$
Connecting to 192.168.10.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Wed Sep 27 07:33:28 2023 from 192.168.10.1
[root@xinqi ~]# cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
[root@xinqi bin]# ./kafka-console-producer.sh --broker-list 127.0.0.1:9094 --topic xinqi_test
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
>xinqiyaya
>xinqi^H^H^H
>^C^C[root@xinqi bin]# ^C
[root@xinqi bin]#
消费者终端:
[C:\~]$
Connecting to 192.168.10.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Wed Sep 27 08:22:14 2023 from 192.168.10.1
[root@xinqi ~]# cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
[root@xinqi bin]# ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9094 --topic xinqi_test
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[2023-09-27 08:23:58,694] WARN [Consumer clientId=console-consumer, groupId=console-consumer-21730] Error while fetching metadata with correlation id 2 : {xinqi_test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
[2023-09-27 08:23:58,784] WARN [Consumer clientId=console-consumer, groupId=console-consumer-21730] Error while fetching metadata with correlation id 4 : {xinqi_test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
......................................................
xinqiyaya
xinqi
^C^C^CProcessed a total of 2 messages
^C[root@xinqi bin]# ^C
[root@xinqi bin]#
说明确实是没问题了,nice!