• 从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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    也就是说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
    
    • 1
    • 2
    • 3

    照着这么说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
    
    • 1

    如果是其他端口(非2181的端口,很多参考文章地方都没说到的),就用这个:

     /root/zookeepers/zk382/bin/zkCli.sh -server 127.0.0.1:2184
    
    • 1

    3、安装和配置kafka

    ①先丢到虚拟机里面。

    ②解压:

    tar -zxvf kafka_2.13-3.5.1.tgz
    
    • 1

    ③修改文件夹名称(可以省略跳过)

    mv kafka_2.13-3.5.1 kafka2-1-3-02
    
    • 1
    输入命令“mv 原文件夹名 新文件夹名”,其中“mv”是移动文件或文件夹的命令,“原文件夹名”是要修改的文件夹的名称,“新文件夹名”是修改后的名称。 例如要将名为“old_folder”的文件夹修改为“new_folder”,则输入命令“mv old_folder new_folder”
    
    • 1

    ④修改配置

    先看看配置有什么:

    # 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    ⑤先备份,再拷贝

    [root@xinqi config]# cp server.properties servercp.properties 
    
    • 1

    ⑥再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服务地址, 多个zk节点用逗号隔开。后续再演示集群zookeeper以及kafka,目前zookeeper以及Kafka都只演示单机版
    zookeeper.connect=127.0.0.1:2184
    
    • 1
    • 2
    • 3
    • 4
    • 5

    防火墙关闭:

    [root@xinqi config]# systemctl stop firewalld
    
    • 1

    Kafka 开启远程连接,确认Linux 防火墙 kafka 的端口已开启,并做下面相关配置

    # broker对外提供的服务入口地址,用的比较少,表示客户端要连接的broker入口地址列表
    listeners=PLAINTEXT://127.0.0.1:9094
    
    advertised.listeners=PLAINTEXT://127.0.0.1:9094
    
    • 1
    • 2
    • 3
    • 4

    然后来到:

    [root@xinqi bin]# pwd
    /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
    
    • 1
    • 2

    ⑦启动和停止:

    主要是这个文件:

    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
    
    • 1

    (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 &
    
    • 1

    方式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
    
    • 1

    (3)停止:

    这里可能不能停止成功,原因待探究,

    /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/kafka-server-stop.sh
    
    • 1

    (4)这样应该也可以:

    [root@xinqi ~]# cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin/
    
    [root@xinqi bin]# ./kafka-server-stop.sh
    
    • 1
    • 2
    • 3

    ⑧检测kafka是否可以正常运行(简单演示)

    [root@xinqi bin]# pwd
    /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
    
    • 1
    • 2

    新建生产者终端1

    cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
    
    • 1
    ./kafka-console-producer.sh --broker-list 127.0.0.1:9094 --topic xinqi_test
    
    • 1

    (注:xinqi_test是你要建立的topic名)

    新建消费者终端2:

    先进入kafka目录。

    cd /root/kafkas/kafkaSoftWares/kafka2-1-3-01/bin
    
    • 1
    ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9094 --topic xinqi_test
    
    • 1

    消费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]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    消费者终端:

    [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]# 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    说明确实是没问题了,nice!

  • 相关阅读:
    09.05移动端appium基础操作
    关于Java并发多线程的一点思考
    python+vue维修预约上门服务系统django
    在 Net7.0 环境下使用 RestSharp 发送 Http(FromBody和FromForm)请求
    prometheus中PromQL查询语言
    推荐系统最通俗介绍
    详解企业财务数字化转型路径|推荐收藏
    量变引起质变:安卓改多了,就是自己的OS
    开箱即用 yyg-cli(脚手架工具):快速创建 vue3 组件库和vue3 全家桶项目
    JVM PC寄存器和虚拟机栈
  • 原文地址:https://blog.csdn.net/ws_please/article/details/133366665