今天给大家分享一下如何在 Linux 服务器上安装和配置 Apache Kafka。

第一步:准备工作 - 安装 Java

Kafka 是用 Scala 和 Java 写的,运行的时候必须要有 Java 环境(JVM)。所以,在安装 Kafka 之前,我们得先确保服务器上已经装好了 Java。

  1. 检查 Java 版本

    打开你的终端,输入下面的命令:

    Bash

    java -version
    

    如果能看到类似 openjdk version "11.0.2" 这样的输出,说明 Java 已经装好了。Kafka 官方推荐使用 Java 11 或更高版本。

  2. 安装 Java (如果需要)

    如果你的服务器上没有 Java,或者版本太低,可以用下面的命令来安装 OpenJDK 11 (以 CentOS/RHEL 为例):

    Bash

    # (可选) 更新你的包管理器
    sudo yum update -y
    
    # 安装 Java 11
    sudo yum install -y java-11-openjdk-devel
    

    安装完之后,再用 java -version 确认一下。

第二步:下载并解压 Kafka

接下来,我们就去 Kafka 官网下载安装包。

  1. 下载 Kafka

    我们直接去 Apache Kafka 官网的下载页面。建议下载二进制版本 (Binary downloads),而不是源码 (Source downloads)。选择一个你想要的版本,比如 kafka_2.13-3.7.0.tgz。

    你可以直接在服务器上用 wget 命令下载,这样更方便:

    Bash

    # 进入 /opt 目录,我们习惯把软件装在这里
    cd /opt
    
    # 下载 Kafka 安装包 (请到官网确认最新的链接)
    wget https://dlcdn.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
    
  2. 解压文件并创建软链接

    下载好之后,是个 .tgz 的压缩包,我们来解压它。

    Bash

    # 解压到当前目录
    tar -xzf kafka_2.13-3.7.0.tgz
    

    解压后会得到一个很长的文件夹名 kafka_2.13-3.7.0。为了以后升级和管理方便,我们给它创建一个简短的软链接,叫 kafka 就行了。

    Bash

    # 创建一个叫 kafka 的软链接,指向实际的安装目录
    ln -s kafka_2.13-3.7.0 kafka
    

    这样,以后不管我们升级到哪个版本,只需要修改这个软链接的目标就行了,脚本和配置都不用改。

第三步:启动 Kafka 服务

Kafka 的运行依赖于 ZooKeeper,所以我们需要先启动 ZooKeeper,再启动 Kafka。Kafka 的安装包里已经自带了 ZooKeeper,可以直接用,非常方便。

  1. 启动 ZooKeeper

    执行下面的命令来启动 ZooKeeper。加上 -daemon 参数可以让它在后台安静地运行。

    Bash

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

    可以执行 jps 命令看看,如果出现了 QuorumPeerMain 进程,就说明 ZooKeeper 启动成功了。

  2. 启动 Kafka

    同样地,我们用后台模式启动 Kafka Broker。

    Bash

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

    再执行一次 jps,如果除了 QuorumPeerMain 之外,还看到了一个 Kafka 进程,那就恭喜你,Kafka 也成功启动了!

第四步:功能测试 - 发送和接收消息

服务都跑起来了,我们来实际操作一下,看看它能不能正常工作。

  1. 创建一个 Topic

    在发消息之前,我们得先创建一个“主题”(Topic),你可以把它想象成一个消息队列的分类名称。我们来创建一个叫 vehicle_data_local_test 的 Topic。

    Bash

    # 进入 kafka 目录,方便执行命令
    cd /opt/kafka
    
    # 创建一个单分区、单副本的 Topic
    ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic vehicle_data_local_test
    

    看到 Created topic vehicle_data_local_test. 的提示就说明创建成功了。

  2. 启动生产者发送消息

    现在,我们打开一个生产者(Producer)控制台,往刚才创建的 Topic 里发几条消息。

    Bash

    ./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic vehicle_data_local_test
    

    执行后,你会看到一个 > 符号,这时候你就可以输入任何你想发的消息,然后按回车。比如:

    >你好,Kafka!
    >这是我的第一条测试消息。
    >测试完成。
    

    这个窗口先别关,我们等下还要用它来对比接收到的消息。

  3. 启动消费者接收消息

    重新打开一个新的终端窗口,进入 Kafka 目录,启动一个消费者(Consumer)来接收数据。

    Bash

    cd /opt/kafka
    
    ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic vehicle_data_local_test --from-beginning
    

    --from-beginning 参数会让消费者从头开始读取这个 Topic 里的所有消息。

    如果一切正常,你应该马上就能在新窗口里看到刚才在生产者窗口里输入的那几条消息:

    你好,Kafka!
    这是我的第一条测试消息。
    测试完成。
    

搞定!到这里,你的 Kafka 就已经成功安装并且测试通过了。现在你可以启动自己的消费者程序来接入数据了。