CentOS 8.2上安装Apache Kafka服务器

  • A+
所属分类:linux技术
摘要

Apache Kafka® 是一个分布式流处理平台.
我们知道流处理平台有以下三种特性:

Apache Kafka® 是一个分布式流处理平台.
我们知道流处理平台有以下三种特性:

可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
可以储存流式的记录,并且有较好的容错性。
可以在流式记录产生时就进行处理。

CentOS 8.2上安装Apache Kafka服务器

在本文中,您将学习如何在CentOS 8上安装Apache Kafka Server。

什么是Apache Kafka?

Kafka是由Apache Software Foundation开发的开源流处理软件平台,用ScalaJava编写。该项目旨在为处理实时数据提要提供一个统一的,高吞吐量,低延迟的平台。

Kafka可以通过Kafka Connect连接到外部系统(用于数据导入/导出),并提供Java流处理库Kafka Streams。Kafka使用基于TCP的二进制协议,该协议针对效率进行了优化,并依赖于“消息集”抽象,该抽象将消息自然地组合在一起以减少网络往返的开销。这“导致更大的网络数据包,更大的顺序磁盘操作,连续的内存块,从而使Kafka可以将突发的随机消息写入流转换为线性写入。” (来源:维基百科

环境规格:

我们使用的是最低规格的[CentOS 8 KVM]计算机。

  • CPU -3.4 GHz(2核)
  • 内存-2 GB
  • 储存空间-20 GB
  • 作业系统-CentOS 8.2
  • 主机名– kafka.lianglab.cn
  • IP地址-192.168.6.65/24

第一步:Linux服务器中更新软件包

ssh客户端的帮助下,以root用户身份与**kafka.lianglab.nc连接。

更新Linux服务器上已安装的软件软件包。在此安装指南中,我们正在使用CentOS Linux,因此,您可以为此使用dnf命令。

[root@kafka ~]#  dnf update -y Last metadata expiration check: 0:19:21 ago on Mon 09 Nov 2020 09:21:21 PM PKT. Dependencies resolved. Nothing to do. Complete! 

检查本安装指南中使用的Linux操作系统和内核版本。

[root@kafka ~]#  uname -r 4.18.0-193.28.1.el8_2.x86_64 [root@kafka-01 ~]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) 

第二步:服务器上安装Java Development Kit(JDK)

Apache Kafka使用Java编程语言构建,因此需要Java Development Kit 8或更高版本。

JDK 11在标准yum存储库中可用,因此,您可以使用以下Linux命令安装JDK 11

[root@kafka ~]# dnf install -y java-11-openjdk Last metadata expiration check: 2:13:52 ago on Tue 22 Dec 2020 09:20:53 PM CST. Dependencies resolved. ========================================================================================================================  Package                              Architecture       Version                            Repository             Size ======================================================================================================================== Installing:  java-11-openjdk                      x86_64             1:11.0.9.11-0.el8_2                AppStream             251 k Installing dependencies:  java-11-openjdk-headless             x86_64             1:11.0.9.11-0.el8_2                AppStream              40 M  Transaction Summary ======================================================================================================================== Install  2 Packages  Total download size: 40 M Installed size: 173 M Downloading Packages: (1/2): java-11-openjdk-11.0.9.11-0.el8_2.x86_64.rpm                                      12 MB/s | 251 kB     00:00     (2/2): java-11-openjdk-headless-11.0.9.11-0.el8_2.x86_64.rpm                             67 MB/s |  40 MB     00:00     ------------------------------------------------------------------------------------------------------------------------ Total                                                                                    67 MB/s |  40 MB     00:00      Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction   Running scriptlet: java-11-openjdk-headless-1:11.0.9.11-0.el8_2.x86_64                                            1/1    Preparing        :                                                                                                1/1    Installing       : java-11-openjdk-headless-1:11.0.9.11-0.el8_2.x86_64                                            1/2    Running scriptlet: java-11-openjdk-headless-1:11.0.9.11-0.el8_2.x86_64                                            1/2    Installing       : java-11-openjdk-1:11.0.9.11-0.el8_2.x86_64                                                     2/2    Running scriptlet: java-11-openjdk-1:11.0.9.11-0.el8_2.x86_64                                                     2/2    Verifying        : java-11-openjdk-1:11.0.9.11-0.el8_2.x86_64                                                     1/2    Verifying        : java-11-openjdk-headless-1:11.0.9.11-0.el8_2.x86_64                                            2/2  Installed products updated.  Installed:   java-11-openjdk-1:11.0.9.11-0.el8_2.x86_64             java-11-openjdk-headless-1:11.0.9.11-0.el8_2.x86_64              Complete! [root@kafka ~]#   

第三步:CentOS 8上安装Apache Kafka服务器

Apache Kafka是根据Apache License 2.0发行的,因此您可以从官方网站下载Kafka软件

CentOS 8.2上安装Apache Kafka服务器

从此网页复制所需版本的Apache Kafka软件的URL。

使用复制的URL和wget命令可直接从Linux命令行下载Apache Kafka软件。

[root@kafka-01 ~]# cd /tmp [root@kafka tmp]# wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz --2020-12-22 23:35:58--  https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz Connecting to 192.168.6.175:3128... connected. Proxy request sent, awaiting response... 200 OK   

使用tar命令提取下载的安装包 。

[root@kafka tmp]# tar xzf kafka_2.13-2.6.0.tgz 

将提取的文件移动到/opt/kafka目录。

[root@kafka tmp]# mv kafka_2.13-2.6.0 /opt/kafka 

当前版本的Apache Kafka需要Zookeeper服务才能进行分布式配置。但是,在Kafka文档中提到“很快,Apache Kafka将不再需要ZooKeeper。”

但是目前,您必须先配置Apache Zookeeper服务,然后再配置Kafka服务器。

Zookeeper二进制脚本随Apache Kafka设置文件一起提供。您可以使用它来配置ZooKeeper服务器。

为Apache Zookeeper创建一个系统服务单元。

[root@kafka tmp]# cd /opt/kafka/ [root@kafka kafka]#  [root@kafka kafka]# vi /etc/systemd/system/zookeeper.service 

在此文件中添加以下指令。

[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target  [Service] Type=simple ExecStart=/usr/bin/bash /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties ExecStop=/usr/bin/bash /opt/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal  [Install] WantedBy=multi-user.target 

同样,为Apache Kafka服务创建一个systemd单元。

[root@kafka kafka]# vi /etc/systemd/system/kafka.service 

在其中添加以下指令。

[Unit] Description=Apache Kafka Server Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service  [Service] Type=simple Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk" ExecStart=/usr/bin/bash /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/usr/bin/bash /opt/kafka/bin/kafka-server-stop.sh  [Install] WantedBy=multi-user.target 

启用并启动Apache Zookeeper和Kafka服务。

[root@kafka kafka]# systemctl daemon-reload [root@kafka kafka]# systemctl enable --now zookeeper.service Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service. [root@kafka kafka]# systemctl enable --now kafka.service Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service. 

验证Apache Kafka服务的状态。

[root@kafka kafka]# systemctl status kafka.service ● kafka.service - Apache Kafka Server    Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: disabled)    Active: active (running) since Tue 2020-12-22 23:55:42 CST; 9s ago      Docs: http://kafka.apache.org/documentation.html  Main PID: 82192 (java)     Tasks: 68 (limit: 49642) 

CentOS 8.2上安装Apache Kafka服务器

第五步:Apache Kafka Server中创建主题

在Apache Kafka服务器中创建一个主题。

[root@kafka kafka]# /opt/kafka/bin/kafka-topics.sh --create --topic lianglab --bootstrap-server localhost:9092 Created topic lianglab. 

要查看该主题的详细信息,可以在Linux命令行中使用run following脚本。

[root@kafka kafka]# /opt/kafka/bin/kafka-topics.sh --describe --topic lianglab --bootstrap-server localhost:9092 Topic: lianglab        PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824         Topic: lianglab        Partition: 0    Leader: 0       Replicas: 0    Isr: 0 

在您的主题中添加一些示例事件。

[root@kafka kafka]# /opt/kafka/bin/kafka-console-producer.sh --topic lianglab --bootstrap-server localhost:9092 >This is the First event. >This is the Second event. >This is the Third event. >^C[root@kafka-01 kafka]# 

要查看插入到主题中的所有事件,可以在Linux命令行中执行以下脚本。

[root@kafka kafka]# /opt/kafka/bin/kafka-console-consumer.sh --topic lianglab --from-beginning --bootstrap-server localhost:9092 This is the First event. This is the Second event. This is the Third event. ^CProcessed a total of 3 messages 

CentOS 8.2上安装Apache Kafka服务器

Apache Kafka服务器已安装在Linux服务器上并可以使用。