共计 3325 个字符,预计需要花费 9 分钟才能阅读完成。
在本指南中,咱们将逐渐演示如何在 Ubuntu 22.04 上装置 Apache Kafka。
在大数据中,数以百万计的数据源生成了大量的数据记录流,这些数据源包含社交媒体平台、企业零碎、挪动应用程序和物联网设施等。如此宏大的数据带来的次要挑战有两个方面:高效的数据收集和剖析。为了克服这些挑战,您须要一个牢靠且强壮的消息传递零碎。
Apache Kafka 由 Apache Foundation 开发,用 Java 和 Scala 编写是开源分布式 pub/sub(公布订阅)事件处理大量数据流平台。它也容许您将音讯从一个点传输到另一点。它与 Zookeeper 同步服务一起工作,并与 Apache Spark 无缝集成,用于剖析和解决大规模数据。
与其余消息传递零碎相比,Apache Kafka 提供了更好的吞吐量、固有的容错能力和复制能力,这使其成为企业音讯解决应用程序的绝佳抉择。包含 Netflix、微软和 AirBnB 等顶级公司都有应用 Apache Kafka 服务。
必备条件
- Pre Installed Ubuntu 22.04
- Sudo User with Admin Rights
- Internet Connectivity
(1) 装置 OpenJDK
因为 Apache Kafka 是用 Java 编写的,所以装置 Java 是一个先决条件,先更新包索引。
$ sudo apt update
接下来,装置 OpenJDK 11,它是 Java 标准版平台的收费开源实现。
$ sudo apt install openjdk-11-jdk -y
接下来,查看 java 版本。
$ java -version
(2) 装置 Apache Kafka
应用如下命令下载 Apache Kafka
$ wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz
解压下载的文件
$ tar xvf kafka_2.13-3.5.1.tgz
解压后,创立了一个 KAFKA_2.12-3.5.0 的目录。将此目录移至 /usr/local 目录,并将其重命名为 kafka。
$ sudo mv kafka_2.13-3.5.1 /usr/local/kafka
(3) 创立 Kafka 和 ZooKeeper Systemd 单元文件
在这一步中,咱们将为 Kafka 和 ZooKeeper 服务创立 systemd 单元文件。这将容许您应用 systemctl 命令轻松地治理服务。
应用 nano 编辑器创立 Zookeeper systemd 文件
$ sudo nano /etc/systemd/system/zookeeper.service
粘贴以下代码行,定义 Zookeeper 的 systemd 服务。
[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
保留并退出
应用 nano 编辑器创立 Zookeeper systemd 文件
$ sudo nano /etc/systemd/system/kafka.service
粘贴以下代码行,定义 kafka 的 systemd 服务。
[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-11-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
保留并退出
(4) 开启 Kafka 和 ZooKeeper Systemd 服务
所有 systemd 文件就位后,将所做的更改告诉 systemd。
$ sudo systemctl daemon-reload
接下来,开启 Kafka 和 Zookeeper 服务
$ sudo systemctl start zookeeper
$ sudo systemctl start kafka
查看 Zookeeper 服务状态
$ sudo systemctl status zookeeper
查看 Apache Kafka 服务状态
$ sudo systemctl status kafka
(5) 创立 Kafka Topic
装置了 Kafka 和所有组件后,咱们将创立一个 Topic 并尝试发送音讯。在 Kafka 中,Topic 是用于组织音讯的根本单元。每个 Topic 在集群中应该有一个惟一的名称。主题容许用户在 Kafka 服务器之间发送和读取数据。
你能够在 Kafka 中创立任意数量的集群。也就是说,当初让咱们在本地主机端口 9092 上创立一个名为 sampleTopic 的 Topic,该 Topic 具备单个复制因子。
$ cd /usr/local/kafka
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic sampleTopic
在运行该命令后,您将失去一个确认,表明主题已胜利创立。
Created topic sampleTopic
As mentioned earlier, you can create as many topics as you can using
the same syntax. To check or list the topics created, run the command:
您能够应用雷同的语法创立尽可能多的主题。须要查看或列出已创立的主题,应用如下命令
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
(6) 发送和接管音讯
在 Kafka 中,生产者是一个跨不同分区将数据写入主题的应用程序。应用程序集成 Kafka 客户端库,向 Apache Kafka 写入音讯。Kafka 客户端库是多种多样的,实用于各种编程语言,包含 Java、Python 等。
当初让咱们运行生成器并在管制台上生成一条音讯。
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic sampleTopic
零碎将提醒您输出一些音讯。在本例中,咱们输出了几行代码。
> Hello World!
> Welcome to Apache Kafka
> This is the` first topic
``
实现后,能够退出或放弃终端运行。要应用这些音讯,请关上一个新终端并运行以下命令
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sampleTopic --from-beginning
您输出的音讯将显示在终端上,如下所示。
我的开源我的项目
- course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 – github 仓库)