如何在CentOS 8上安装Apache Kafka

时间:2019-05-19 01:26:35  来源:igfitidea点击:

Apache Kafka是一个分布式流媒体平台。
它对于构建实时流数据管道以在系统或应用程序之间获取数据非常有用。
另一个有用的特性是实时流应用程序,它可以转换数据流或对数据流作出反应。
本教程将在CentOS 8 Linux系统上安装Apache Kafka

步骤1 -安装Java

必须在系统上安装Java才能运行Apache Kafka。
我们可以通过执行以下命令在机器上安装OpenJDK。
另外,安装一些其他必需的工具。

sudo dnf install java-11-openjdk wget vim

第2步-下载Apache Kafka

从其官方下载网站下载Apache Kafka二进制文件。
你也可以选择附近的镜像来下载。

wget http://www-us.apache.org/dist/kafka/2.4.0/kafka_2.13-2.4.0.tgz

然后解压存档文件

tar xzf kafka_2.13-2.4.0.tgz
mv kafka_2.13-2.4.0 /usr/local/kafka

步骤3 -安装Kafka Systemd文件

CentOS 8使用systemd来管理其服务状态。
所以我们需要为Zookeeper和Kafka服务创建systemd文件。
这有助于我们管理Kafka服务的启动/停止。
首先,使用下面的命令为Zookeeper创建systemd文件:

vim /etc/systemd/system/zookeeper.service

添加contnet以下:

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

[Install]
WantedBy=multi-user.target

保存文件并关闭它。
接下来,使用以下命令创建Kafka systemd文件:

vim /etc/systemd/system/kafka.service

添加以下内容。
请确保根据系统上安装的Java设置正确的 JAVA_HOME路径。

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

[Install]
WantedBy=multi-user.target

保存文件并关闭它。
重新加载systemd守护进程使更改生效。

systemctl daemon-reload

步骤4 -启动Kafka服务器

Kafka需要ZooKeeper,所以首先在你的系统上启动一个ZooKeeper服务器。
可以使用Kafka提供的脚本启动单节点ZooKeeper实例。

sudo systemctl start zookeeper

现在启动Kafka服务器并查看运行状态:

sudo systemctl start kafka
sudo systemctl status kafka

现在我们已经成功地在CentOS 8上安装了Kafka。

步骤5 -在Apache Kafka中创建主题(Topics)

Apache Kafka提供了多个shell脚本来处理它。
首先,创建一个名为“ testTopic”的主题,它有一个单独的分区和一个副本:

cd /usr/local/kafka
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic

Created topic testTopic.

replication-factor指明将创建多少个数据副本。
因为我们只运行一个实例,所以保持这个值为1。

partitions设置为我们希望在数据之间分割的代理的数量。
因为我们使用单个代理运行,所以将此值保持为1。

我们可以通过运行与上面相同的命令来创建多个主题。

在Kafka上运行以下命令可以看到创建的主题:

bin/kafka-topics.sh --list --zookeeper localhost:2181

testTopic
KafkaonCentOS8
TutorialKafkaInstallCentOS8

另外,除了手动创建主题,我们还可以配置代理,以便在不存在的主题发布到时自动创建主题。

步骤6 - Apache Kafka的生产者和消费者

“生产者(producer)”是负责把数据放入我们的Kafka的过程。

Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送给Kafka集群。
默认的Kafka将每一行作为单独的消息发送。
让我们运行producer,然后在控制台中输入一些消息发送到服务器。

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

>Welcome to kafka
>This is my first topic
>

现在打开一个新的终端来运行Apache Kafka使用者进程。
Kafka还提供命令行用户从Kafka集群读取数据,并将消息显示到标准输出。

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning

Welcome to kafka
This is my first topic

–from-beginning用于从所选主题的开始读取消息。
我们可以跳过此选项来只读最新的消息。
例如,在单独的终端上运行Kafka生产者和消费者。
只需在那个producer终端上输入一些文本。
它会立即出现在消费者终端上。

总结

我们已经成功地在CentOS 8 Linux机器上安装和配置了Kafka服务。