CentOS 8.2上安装Apache Kafka服务器
Apache Kafka® 是一个分布式流处理平台.
我们知道流处理平台有以下三种特性:
可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
可以储存流式的记录,并且有较好的容错性。
可以在流式记录产生时就进行处理。
在本文中,您将学习如何在CentOS 8上安装Apache Kafka Server。
什么是Apache Kafka?
Kafka是由Apache Software Foundation开发的开源流处理软件平台,用Scala和Java编写。该项目旨在为处理实时数据提要提供一个统一的,高吞吐量,低延迟的平台。
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软件。
从此网页复制所需版本的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)
第五步: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
Apache Kafka服务器已安装在Linux服务器上并可以使用。