kafka下载、安装与部署保姆级教程(windows、linux)

1.kafka简介

kafka官网地址:https://kafka.apache.org/

kafka的本质 是一个数据存储平台,流平台 , 只是他在做消息发布,消息消费的时候我们可以把他当做消息中间件来用。

Kafka提供了一个Kafka Broker、一个Kafka Producer和一个Kafka Consumer。

以下介绍源自:文心一言。

Kafka Broker在Kafka中扮演着重要的角色,主要作用如下:

  • 接收生产者的消息:Kafka Broker接收来自生产者的消息。
  • 为消息设置偏移量:Kafka Broker为每条消息设置偏移量,用于标识每条消息的位置。
  • 提交消息到磁盘保存:Kafka Broker将消息提交到磁盘上保存,保证消息不会因为意外情况丢失。
  • 为消费者提供服务:Kafka Broker为消费者提供服务,对消费者的请求作出响应。
  • 返回已经提交到磁盘上的消息:Kafka Broker返回已经提交到磁盘上的消息给消费者。

Kafka Producer是负责向Kafka服务端写入数据的程序,主要作用如下:

  • 地位和作用:Producer是Kafka中产生消息的一端,可以将消息生产到多个Topic中,也可以多个Producer将消息生产到同一个Topic中(容易造成消息顺序的混乱),同时Producer还可以决定将此消息存储在哪个partition中(通过partitioner)。
  • 产生消息:消息准备发送的过程中,Producer将会和选定Topic下所有的Partition leader保持socket连接;消息由Producer直接通过Socket发送到Broker中而不通过中介任何的路由层,而生产者会自动找到Partition对应的Leader,然后对leader执行消息追加的操作。
  • 负载均衡:Producer可以平衡发送压力。
  • 同步/异步发送:使用异步发送消息将会以少量的额外延迟换取大额的吞吐量。

Kafka Consumer是用于读取Kafka集群中某些Topic消息的应用程序,是Kafka的核心组件之一,主要作用如下:

  • 消费消息:Consumer将Producer生产的消息进行消费处理,完成消费任务。
  • 消费方式:Consumer采用主动拉取Broker数据的方式进行消费,即Pull模式。
  • 消费者组:Consumer用一个消费者组名来标记自己,topic的每条消息都只会被发送到每个订阅它的消费者组的一个Consumer实例上。
  • 重平衡机制:如果Consumer实例增减或发生故障,Consumer组会重新分配订阅关系,保证每条消息至少被一个Consumer实例处理。

另外,kafka作为消息中间件时,与以往的消息中间件不同的是:以往的消息中间件消费完,这条数据就消失了。

而kafka是将消息存储到了本地磁盘当中,即使消费完也不会消失,而是通过偏移量offset用来标识消费进度(Kafka具有存储功能,默认保存数据时间为7天或者大小1G,也就是说Kafka broker上的数据超7天或者1G,将会被自动删除。)。

  • Broker : 和AMQP里协议的概念一样, 就是消息中间件所在的服务器
  • Topic(主题) : 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
  • Partition(分区) : Partition是物理上的概念,体现在磁盘上面,每个Topic包含一个或多个Partition.
  • Producer : 负责发布消息到Kafka broker
  • Consumer : 消息消费者,向Kafka broker读取消息的客户端。
  • Consumer Group(消费者群组) : 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
  • offset 偏移量: 是kafka用来确定消息是否被消费过的标识,在kafka内部体现就是一个递增的数字。

说明文档:https://kafka.apache.org/documentation.html

2.下载与安装

下载

下载页:https://kafka.apache.org/downloads

一般情况下,我们下载最新版就可以了。

点击上方提供的连接进行下载即可。

如:https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz

说明:截止到发文时间,kafka的最新版本是:3.7.0,运行所需的jdk版本需>=1.8

Apache Kafka存在存在访问控制不当漏洞,受影响的版本包括:3.5.0、3.5.1、3.5.2、3.6.0、3.6.1,解决方案是升级到最新版本3.7.0

如何查看kafka所需的JDK版本?

https://kafka.apache.org/documentation.html#java

安装

下载完成,使用解压软件进行解压即可使用。

zookeeper配置文件说明

为什么要讲zookeeper?因为kafka的运行依赖于zookeeper,详细原因下面会讲到。

找到KAFKA_HOME/config目录下的zookeeper.properties。

最重要的就是以下两个属性的配置。

上面是默认配置,一般情况下,我们无需进行修改。

dataDir属性:配置的是zookeeper运行数据的存储路径,/tmp/zookeeper代表的意思是:

linux:数据存储在:/tmp/zookeeper目录下,windows:数据存在KAFKA_HOME所在磁盘的/tmp/zookeeper目录下。

当目录不存在时,会自动被创建。

clientPort属性:配置的是zookeeper运行时所占用的端口号,默认值是:2181。

kafka配置文件说明

找到KAFKA_HOME/config目录下的server.properties。

一个kafka服务器就是一个broker。

broker.id属性:属性值具有唯一性,在集群部署kafka的时候,作为区分broker的标识,默认值为:0。

如果你不需要集群部署时(只用一个kafka),不用管这个参数。

但在继续部署时(同时运行多个kafka),我们需要它们的broker.id各不相同(唯一值)。

listeners属性:设置的是kafka服务器的访问端口号,默认值是9092。

如何更改它的端口号呢?

listeners=PLAINTEXT://:9082

在此配置文件当中增加如上代码, 我们就把broker的端口号改成9082啦。

listeners=PLAINTEXT://192.168.0.1:9082

上面两种方式都可以。

log.dirs属性:该属性配置的是kafka运行日志存储路径,/tmp/kafka-logs表达的含义是:

linux:数据存储在:/tmp/kafka-logs目录下,windows:数据存在KAFKA_HOME所在磁盘的/tmp/kafka-logs目录下。

当目录不存在时,会自动被创建。

说明:想懒省事儿的话,上面的属性均采用默认值即可。

log.retention.hours属性:kafka运行日志保留时间,默认168小时(7天)。

3.部署

说明:启动kafka要先启动zookeeper

看了很多教程,都教你需要单独下载zookeeper,这纯属扯淡。

kafka默认自带了zookeeper,何必再画蛇添足呢。

并且独立安装zookeeper的话,还需要保持和kafka的版本兼容问题。

Apache ZooKeeper是一个分布式的、开源的分布式应用程序协调服务,它主要用于分布式系统中的状态同步和管理。

在Kafka中,ZooKeeper的作用主要体现在以下几个方面:

  • 元数据管理:Kafka将所有元数据,如主题、分区、消费者偏移量等,都存储在ZooKeeper中。这使得Kafka能够跟踪和管理其主题和消费者的状态。
  • 集群管理:ZooKeeper用于协调和管理Kafka集群中的Broker。例如,ZooKeeper负责处理Broker的加入和离开,以及集群的领导者选举。
  • 配置管理:Kafka的一些配置信息,如Broker的ID、端口号等,也存储在ZooKeeper中。
  • 主题和分区的管理:ZooKeeper存储了主题和分区的元数据,包括主题的配置信息和分区映射。
  • 消费者管理:ZooKeeper用于跟踪消费者的状态,包括消费者的组信息和消费者的偏移量。
  • 故障转移:如果Kafka集群中的某些Broker出现故障,ZooKeeper可以帮助进行故障转移,确保集群的可用性。

总的来说,ZooKeeper为Kafka提供了可靠的状态管理和协调功能,使得Kafka能够作为一个高性能、可扩展、可靠的流处理平台运行。

启动zookeeper服务(默认端口:2181)

windows操作步骤

zookeeper的启动命令是:zookeeper-server-start.bat

文件所在路径:KAFKA_HOME/bin/windows

和以往的启动步骤不同,你会发现:双击运行这个文件是无法运行成功的(直接闪退)。

为什么会闪退?

那是因为它的启动需要指定我们之前看的配置文件:zookeeper.properties。

具体启动指令如下:

切换到KAFKA_HOME/bin/windows目录下,输入:cmd,按Enter键,即可打开黑窗口。

输入指令:

zookeeper-server-start.bat ../../config/zookeeper.properties

按Enter键即可运行。

当出现如上字样时,zookeeper就启动成功啦。

访问路径:

http://localhost:2181/

如果运行报错:输入行太长,解决办法见文末推荐。

linux操作步骤

zookeeper的启动命令是:zookeeper-server-start.sh

文件所在路径:KAFKA_HOME/bin

打开操作窗口,切换到KAFKA_HOME目录下

输入指令:

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

说明:不带./也是可以的。

-daemon:是以守护进程的方式启动zookeeper。这样一来,当我们关闭会话或者退出当前命令操作时,zookeeper会继续保持运行。

之所以可以使用参数-daemon,是因为zookeeper-server-start.sh文件中有关于该参数的配置。

关闭zookeeper服务

bin/zookeeper-server-stop.sh

或者杀掉zookeeper服务对应的PID。

启动kafka服务(broker)(默认端口:9092)

windows操作步骤

broker的启动命令是:kafka-server-start.bat

文件所在路径:KAFKA_HOME/bin/windows

 

同样的,kafka-server-start.bat的运行离不开配置文件:server.properties。

server.properties所在路径:KAFKA_HOME/config/server.properties。

再次打开命令窗口。

启动命令:

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

当出现如上字样时,broker就启动成功啦。

访问路径:

http://localhost:9092/

说明:

如果kafka启动闪退,说明zookeeper没有启动成功,需要先重启zookeeper再尝试启动kafka

linux操作步骤

broker的启动命令是:kafka-server-start.sh

文件所在路径:KAFKA_HOME/bin

打开操作窗口,切换到KAFKA_HOME目录下。

输入指令:

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

关闭kafka服务

bin/kafka-server-stop.sh

或者杀掉kafka服务对应的PID。 

netstat -nltp|grep 9092
kill pid    

4.kafka connect

Kafka Connect是一个可扩展的、可插拔的数据传输框架,它可以连接Kafka和其它系统。

这是一个配置其它组件完成数据的发布和订阅的插件,换言之就是:当我们只有这种需求的时候,才需用到这个项服务。

更多介绍见文末推荐。

5.便捷启动

要想运行kafka,至少要启动两个服务:一个是zookeeper,一个是broker。

每次运行都要敲命令,这就很麻烦,有没有简单的启动办法呢?

在windows操作系统下,是有的。

我们可以将上述启动命令封装成bat文件,就可以啦。

在磁盘根目录下创建一个文件夹,如:kfk。

将kafka_2.13-3.6.1移至kfk目录下。

分别创建3个bat文件:1-zk.bat,2-kafka.bat和3-kafka-connect.bat(这3个文件需要和kafka_2.13-3.6.1在同一目录下)。

1-zk.bat文件的内容为:

cd kafka_2.13-3.6.1\bin\windows
zookeeper-server-start.bat ../../config/zookeeper.properties

2-kafka.bat文件的内容为:

cd kafka_2.13-3.6.1\bin\windows
kafka-server-start.bat ../../config/server.properties

3-kafka-connect.bat文件的内容为:

cd kafka_2.13-3.6.1\bin\windows
connect-standalone.bat ../../config/connect-standalone.properties

这样一来,以后我们直接双击运行bat文件就行了,再也不需要手敲命令啦。 

说明:如果使用kafka connect的话,配置插件的路径也需要进行更改。

2024-09-05 10:43:04

6.补充说明

关于kafka运行日志的说明

kafka的运行日志被放置在KAFKA_HOME/logs/server.log。

如果kafka被异常关闭,我们直接查看server.log里面的日志内容就能知晓原因了。

已经没有存储空间

zookeeper服务挂掉了

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2023-12-28 18:54  Marydon  阅读(3407)  评论(0编辑  收藏  举报