从0到一搭建Kafka-单机版-通过单机版zookeeper配置

教程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!

相关推荐
zquwei2 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
道一云黑板报6 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
qq_5470261796 小时前
Kafka 常见问题
kafka
core5126 小时前
flink sink kafka
flink·kafka·sink
飞来又飞去8 小时前
kafka sasl和acl之间的关系
分布式·kafka
MZWeiei9 小时前
Zookeeper的监听机制
分布式·zookeeper
莹雨潇潇9 小时前
Hadoop完全分布式环境部署
大数据·hadoop·分布式
浩哲Zhe10 小时前
RabbitMQ
java·分布式·rabbitmq
明达技术10 小时前
分布式 IO 模块:赋能造纸业,革新高速纸机主传动
分布式
Allen Bright11 小时前
RabbitMQ中的Topic模式
分布式·rabbitmq