从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!

相关推荐
陌小呆^O^3 小时前
Cmakelist.txt之Liunx-rabbitmq
分布式·rabbitmq
斯普信专业组5 小时前
深度解析FastDFS:构建高效分布式文件存储的实战指南(上)
分布式·fastdfs
运维&陈同学5 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
jikuaidi6yuan6 小时前
鸿蒙系统(HarmonyOS)分布式任务调度
分布式·华为·harmonyos
BestandW1shEs6 小时前
彻底理解消息队列的作用及如何选择
java·kafka·rabbitmq·rocketmq
天冬忘忧7 小时前
Kafka 生产者全面解析:从基础原理到高级实践
大数据·分布式·kafka
天冬忘忧7 小时前
Kafka 数据倾斜:原因、影响与解决方案
分布式·kafka
隔着天花板看星星7 小时前
Kafka-Consumer理论知识
大数据·分布式·中间件·kafka
holywangle8 小时前
解决Flink读取kafka主题数据无报错无数据打印的重大发现(问题已解决)
大数据·flink·kafka