目录
一. 前言
二. 版本下载
2.1. 版本说明
三. 快速启动
3.1. 下载解压
3.2. 启动服务
3.3. 创建一个主题(Topic)
3.4. 发送消息
3.5. 消费消息
3.6. 使用 Kafka Connect 来导入/导出数据
3.7. 使用 Kafka Stream 来处理数据
3.8. 停止 Kafka
四. 以系统服务方式启动 Kafka
4.1. Linux 系统
4.1.1. 创建服务文件
4.1.2. 启动服务
4.2. Windows 系统
4.2.1. 准备工作
4.2.2. 注册服务
4.2.3. 编辑注册表
4.2.4. 启动并测试
4.3. 常用命令
在前文《Kafka 入门介绍》中,主要介绍了 Kafka 的由来、使用场景、相关的重要术语等,本文就着重介绍下Kafka 的下载、安装和启动,以便为接下使用它做好准备。
登录 Apache kafka 官方下载,https://kafka.apache.org/downloads.html
推荐下载 Scala 2.13 版本的。
比如我们下载的包是这样:kafka_2.13-3.6.1.tgz,2.13 是 Scala 编译器的版本,后面的 3.6.1 才是 Kafka 的版本。
$ tar -xzf kafka_2.13-3.6.1.tgz
$ cd kafka_2.13-3.6.1
注意:你的本地环境必须安装有
Java 8+
。如何配置请参见《JDK 环境变量设置》。
运行 Kafka 需要使用 Zookeeper,所以你需要先启动 Zookeeper,如果你没有 Zookeeper,你可以使用 Kafka 自带打包和配置好的 Zookeeper。
# 注意:Apache Kafka2.8版本之后可以不需要使用ZooKeeper,内测中,文章末尾有体验的安装方式。
$ bin/zookeeper-server-start.sh config/zookeeper.properties
...
打开另一个命令终端启动 Kafka 服务:
$ bin/kafka-server-start.sh config/server.properties &
一旦所有服务成功启动,那 Kafka 已经可以使用了。
创建一个名为 test 的 Topic,只有一个分区和一个备份:
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
创建好之后,可以通过运行以下命令,查看已创建的 Topic 信息:
$ bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
Topic:test PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
或者,除了手工创建 Topic 外,你也可以配置你的 Broker,当发布一个不存在的 Topic 时自动创建Topic,点击这里查看如何配置自动创建topic时设置默认的分区和副本数自动创建 Topic 时设置默认的分区和副本数。
Kafka 提供了一个命令行的工具,可以从输入文件或者命令行中读取消息并发送给 Kafka 集群。每一行是一条消息。
运行 Producer(生产者),然后在控制台输入几条消息到服务器:
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
Kafka 也提供了一个消费消息的命令行工具,将存储的信息输出来,新打开一个命令控制台,输入:
$ bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message
如果你有2台不同的终端上运行上述命令,那么当你在运行生产者时,消费者就能消费到生产者发送的消息。
可以使用
Ctrl-C
停止消费者客户端。
你可能在现有的系统中拥有大量的数据,如关系型数据库或传统的消息传递系统,以及许多已经使用这些系统的应用程序。Kafka Connect 允许你不断地从外部系统提取数据到 Kafka,反之亦然。用 Kafka 整合现有的系统是非常容易的。为了使这个过程更加容易,有数百个这样的连接器现成可用。
查看 Kafka Connect 部分,了解更多关于如何将你的数据持续导入和导出 Kafka。
一旦你的数据存储在 Kafka 中,你就可以用 Kafka Streams 客户端库来处理这些数据,该库适用于 Java/Scala。它允许你实现自己的实时应用程序和微服务,其中输入和/或输出数据存储在Kafka 主题中。Kafka Streams 将在客户端编写和部署标准 Java 和 Scala 应用程序的简单性与Kafka 服务器端集群技术的优势相结合,使这些应用程序具有可扩展性、弹性、容错性和分布式。该库支持精确的一次性处理、有状态操作和聚合、窗口化、连接、基于事件时间的处理等等。
为了给你一个初步的体验,这里是如何实现流行的 WordCount 算法的:
KStream textLines = builder.stream("quickstart-events");
KTable wordCounts = textLines
.flatMapValues(line -> Arrays.asList(line.toLowerCase().split(" ")))
.groupBy((keyIgnored, word) -> word)
.count();
wordCounts.toStream().to("output-topic", Produced.with(Serdes.String(), Serdes.Long()));
Kafka 流演示例子和应用开发教程展示了如何从头到尾编码和运行这样一个流式应用。
现在你已经完成了快速入门,可以随时卸载 Kafka 环境了,或者继续玩下去。
如果你还想删除你的本地 Kafka 环境的数据,包括你创建的消息,运行以下命令:
$ rm -rf /tmp/kafka-logs /tmp/zookeeper
创建 /usr/lib/systemd/system/zookeeper.service 并写入:
[Unit]
Requires=network.target
After=network.target
[Service]
Type=simple
LimitNOFILE=1048576
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=Always
[Install]
WantedBy=multi-user.target
创建 /usr/lib/systemd/system/kafka.service 并写入:
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
LimitNOFILE=1048576
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=Always
[Install]
WantedBy=multi-user.target
注意:示例的 Kafka 安装地址在 /usr/local/kafka。
重载系统服务并启动:
systemctl daemon-reload
systemctl enable zookeeper && systemctl enable kafka
systemctl start zookeeper && systemctl start kafka
systemctl status zookeeper && systemctl status kafka
下载 Kafka:https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
解压 Kafka 至 D:\bigdata\kafka_2.13-3.6.1
下载 instsrv.exe / srvany.exe
将 instsrv.exe / srvany.exe 拷贝至 D:\bigdata\kafka_2.13-3.6.1\bin\windows
以管理员身份打开 cmd:
cd D:\bigdata\kafka_2.13-3.6.1\bin\windows
instsrv KafkaService D:\bigdata\kafka_2.13-3.6.1\bin\windows\srvany.exe
卸载服务:
instsrv KafkaService remove
或
sc delete KafkaService
打开注册表(运行窗口中输入 regedit):
做完以上3步,启动服务即可。
测试 Kafka:
1. 创建 Topic
打开一个命令行窗口,进入到目录 D:\bigdata\kafka_2.13-3.6.1\bin\windows:
cd D:\bigdata\kafka_2.13-3.6.1\bin\windows
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2. 创建生产者 Producer
打开一个命令行窗口,进入到目录 D:\bigdata\kafka_2.13-3.6.1\bin\windows:
cd D:\bigdata\kafka_2.13-3.6.1\bin\windows
kafka-console-producer.bat --broker-list localhost:9092 --topic test
3. 创建消费者
打开一个命令行窗口,进入到目录 D:\bigdata\kafka_2.13-3.6.1\bin\windows:
cd D:\bigdata\kafka_2.13-3.6.1\bin\windows
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
在生产者命令行窗口内随便输入一段字符,然后回车,你应该能看到同样的消息出现在消费者的命令行窗口内,如果在消费者端能看到你推送的消息,那么你已经成功的安装了 Kafka。
1. 列举 Topic:
kafka-topics.bat --list --zookeeper localhost:2181
2. 描述 Topic:
kafka-topics.bat --describe --zookeeper localhost:2181 --topic [Topic Name]
3. 从头消费消息:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic [Topic Name] --from-beginning
4. 删除 Topic:
kafka-run-class.bat kafka.admin.TopicCommand --delete --topic [topic_to_delete] --zookeeper localhost:2181