Oracle Linux 8 安装 Apache Kafka

Apache Kafka 是一个免费的开源分布式事件流平台,被数千家公司用于高性能数据管道。 它是一个消息代理软件应用程序,主要用于构建实时流数据管道和应用程序。 Apache Kafka 允许我们通过分布式流平台处理数据流。 它基于分布式架构,因此提供了高容错性和可扩展性能力。

在这篇文章中,我们将解释 Oracle Linux 8 上安装 Apache Kafka。

先决条件

  • 在 云平台上运行 Oracle Linux 8 的服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 Oracle Linux 8 作为至少 2GB RAM 的操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

登录到服务器后,运行以下命令以使用最新的可用软件包更新基本系统。

dnf update -y

第 2 步 – 安装 Java

Apache Kafka 基于 Java,因此我们需要在服务器上安装 Java。 我们可以通过运行以下命令来安装它:

dnf install java-11-openjdk-devel -y

安装 Java 后,使用以下命令验证 Java 安装:

java --version

我们将在以下输出中获得 Java 版本:

openjdk 11.0.15 2022-04-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10-LTS, mixed mode, sharing)

第 3 步 – 在 Oracle Linux 8 上安装 Apache Kafka

首先,到 Apache 官网,使用 wget 命令下载最新版本的 Apache Kafka:

wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz

下载完成后,使用以下命令提取下载的文件:

tar -xvzf kafka_2.13-3.2.0.tgz

接下来,将提取的目录移动到 /usr/local 目录:

mv kafka_2.13-3.2.0/ /usr/local/kafka

完成后,我们可以继续下一步。

第 4 步 – 为 Zookeeper 和 Kafka 创建 Systemd 服务文件

最好创建一个 systemd 服务文件以在后台运行 Zookeeper 和 Kafka。

首先,使用以下命令为 Zookeeper 创建一个 systemd 服务文件:

nano /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 /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

保存并关闭文件,然后使用以下命令为 Kafka 创建一个 systemd 服务文件:

nano /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 /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

保存并关闭文件,然后使用以下命令重新加载 systemd 守护进程:

systemctl daemon-reload

接下来,启动 Zookeeper 和 Kafka 服务,并让它们在系统重启时启动:

systemctl start zookeeper
systemctl start kafka
systemctl enable zookeeper
systemctl enable kafka

要检查 Zookeeper 服务,请运行以下命令:

systemctl status zookeeper

我们将获得以下输出:

● zookeeper.service - Apache Zookeeper server
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-06-11 01:06:50 EDT; 28s ago
     Docs: http://zookeeper.apache.org
 Main PID: 29634 (java)
    Tasks: 26 (limit: 11409)
   Memory: 67.9M
   CGroup: /system.slice/zookeeper.service
           └─29634 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCI>

Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,302] INFO zookeeper.commitLogCount=500 (org.apache.zookeeper.server.ZKDatabase)
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,311] INFO zookeeper.snapshot.compression.method = CHECKED (org.apache.zookeepe>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,312] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,321] INFO Snapshot loaded in 18 ms, highest zxid is 0x0, digest is 1371985504 >
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,321] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,324] INFO Snapshot taken in 2 ms (org.apache.zookeeper.server.ZooKeeperServer)
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,378] INFO zookeeper.request_throttler.shutdownTimeout = 10000 (org.apache.zook>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,388] INFO PrepRequestProcessor (sid:0) started, reconfigEnabled=false (org.apa>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,446] INFO Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalM>
Jun 11 01:06:53 oraclelinux8 bash[29634]: [2022-06-11 01:06:53,447] INFO ZooKeeper audit is disabled. (org.apache.zookeeper.audit.ZKAuditProv>
lines 1-20/20 (END)

要检查 Kafka 服务,请运行以下命令:

systemctl status kafka

我们应该看到以下输出:

● kafka.service - Apache Kafka Server
   Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-06-11 01:07:17 EDT; 55s ago
     Docs: http://kafka.apache.org/documentation.html
 Main PID: 29994 (java)
    Tasks: 69 (limit: 11409)
   Memory: 327.3M
   CGroup: /system.slice/kafka.service
           └─29994 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupanc>

Jun 11 01:07:23 oraclelinux8 bash[29994]: [2022-06-11 01:07:23,975] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNod>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,001] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Starting socket serv>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,055] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started data-plane a>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,055] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started socket serve>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,157] INFO Kafka version: 3.2.0 (org.apache.kafka.common.utils.AppInfoParser)
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,157] INFO Kafka commitId: 38103ffaa962ef50 (org.apache.kafka.common.utils.AppI>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,157] INFO Kafka startTimeMs: 1654924044055 (org.apache.kafka.common.utils.AppI>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,158] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,377] INFO [BrokerToControllerChannelManager broker=0 name=forwarding]: Recorde>
Jun 11 01:07:24 oraclelinux8 bash[29994]: [2022-06-11 01:07:24,378] INFO [BrokerToControllerChannelManager broker=0 name=alterPartition]: Rec>

第 5 步 – 在 Kafka 上创建我们的第一个主题

接下来,我们需要在服务器上创建至少一个主题来测试 Apache Kafka。

将目录更改为 Apache Kafka 并使用以下命令创建一个名为 app1 的测试主题:

cd /usr/local/kafka/
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic app1

我们现在可以使用以下命令验证我们创建的主题:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

我们将获得以下输出:

app1

Kafka 提供了两种 API:生产者和消费者。 生产者负责创建事件,消费者使用它们将其显示在屏幕上:

现在,运行生产者,然后在控制台中输入一些消息以发送到服务器。

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic app1

键入一些我们想要流式传输并显示在消费者身上的文本。

>Hi, this is my first kafka server

打开另一个终端,运行以下命令,实时显示生成的事件数据:

cd /usr/local/kafka/
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic app1 --from-beginning

我们将获得以下输出:

Hi, this is my first kafka server

在上述指南中,我们解释了 Oracle Linux 8 上安装 Apache Kafka。我们现在可以将 Apache Kafka 与我们的应用程序集成以收集和分析大量数据。 有关更多信息,我们可以访问 Apache Kafka 文档页面。 在 的专用主机上试一试!

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论