如何在Ubuntu 18.04和16.04上安装Apache Kafka

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

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

步骤1 -安装Java

Apache Kafka需要Java来运行。
我们必须在系统上安装java。
执行下面的命令在你的系统上安装默认的OpenJDK。

sudo apt update
sudo apt install default-jdk

第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文件

接下来,为Zookeeper和Kafka服务创建systemd文件。
这将有助于使用systemctl命令管理Kafka服务的启动/停止。
首先,使用下面的命令为Zookeeper创建systemd单元文件:

vim /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/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/java-1.11.0-openjdk-amd64"
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

全部完成。
卡夫卡安装已经成功完成。
本教程的这一部分将使用Kafka服务器。

第五步-在Kafka中创建一个主题topic

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
theitroadTutorial1
theitroadTutorial2

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

第6步-发送消息给Kafka

“生产者”是负责把数据放入我们的Kafka的过程。
Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送给Kafka集群。
默认的Kafka将每一行作为单独的消息发送。
让我们运行生成器,然后在控制台中输入一些消息发送到服务器。

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

>Welcome to kafka
>This is my first topic
>

我们可以退出此命令,也可以继续运行此终端以进行进一步测试。
现在,下一步为Kafka使用者进程打开一个新的终端。

步骤7 -使用Kafka消费者

Kafka还有一个命令行用户,用于从Kafka集群读取数据并将消息显示到标准输出。

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

Welcome to kafka
This is my first topic

现在,如果我们仍然在另一个终端上运行Kafka producer(步骤# 6)。
只需在那个producer终端上输入一些文本。
在消费者终端马上就能呈现。

总结

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