- A+
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服务器上并可以使用。