关于我:全国7*24高效代维服务

联系我:lianglab@126.com

淘宝店:全国7*24高效代维服务

CentOS 8.2上安装Apache Kafka服务器

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软件

从此网页复制所需版本的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服务器上并可以使用。

posted @ 2020-12-22 23:32  亮亮实验室  阅读(610)  评论(0编辑  收藏  举报