下载地址:
http://kafka.apache.org/downloads

http://archive.apache.org/dist/kafka/

步骤1:取得KAFKA
下载 最新的Kafka版本并解压缩:

$ tar -xzf kafka_2.13-2.6.0.tgz
$ cd kafka_2.13-2.6.0

步骤2:启动KAFKA环境
注意:您的本地环境必须安装了Java 8+。

运行以下命令以正确的顺序启动所有服务:

# Start the ZooKeeper service
# Note: Soon, ZooKeeper will no longer be required by Apache Kafka.
$ bin/zookeeper-server-start.sh config/zookeeper.properties

打开另一个终端会话并运行:

# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties

成功启动所有服务后,您将运行并可以使用基本的Kafka环境。

步骤3:建立主题来储存您的活动
Kafka是一个分布式事件流平台,可让您跨多台计算机读取、写入、存储和处理 事件(在文档中也称为记录或 消息)。
例如支付交易、移动电话地理位置更新、发货单、物联网设备或医疗设备的传感器测量等等。这些事件被组织并存储在主题中。非常简单,主题类似于文件系统中的文件夹,事件就是该文件夹中的文件。

所以在你写第一个事件之前,你必须先创建一个主题。打开另一个终端会话并运行:

$ bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

Kafka的所有命令行工具都有其他选项:kafka-topics.sh不带任何参数的命令即可显示使用情况信息。例如,它还可以向您显示 详细信息,例如 新主题的分区数:

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092
Topic:quickstart-events  PartitionCount:1    ReplicationFactor:1 Configs:
    Topic: quickstart-events Partition: 0    Leader: 0   Replicas: 0 Isr: 0

步骤4:将一些事件写入主题
Kafka客户端通过网络与Kafka经纪人进行通信,以编写(或读取)事件。一旦收到,经纪人将以持久和容错的方式存储事件,只要您需要甚至永久。

运行控制台生产者客户端,以将一些事件写入您的主题。默认情况下,您输入的每一行都会导致一个单独的事件写入该主题。

$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event

您可以随时停止生产者客户端Ctrl-C。

步骤5:阅读事件
打开另一个终端会话并运行控制台使用者客户端以读取您刚刚创建的事件:

$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

您可以随时停止消费者客户Ctrl-C。

随时尝试:例如,切换回生产者终端(上一步)以编写其他事件,并查看事件如何立即显示在消费者终端中。

因为事件被持久地存储在Kafka中,所以您可以根据需要任意多次地读取它们。您可以通过打开另一个终端会话并再次重新运行上一个命令来轻松地验证这一点。

第6步:使用KAFKA CONNECT将数据作为事件流导入/导出
在诸如关系数据库或传统消息传递系统之类的现有系统中,您可能拥有大量数据,以及已经使用这些系统的许多应用程序。 通过Kafka Connect,您可以将来自外部系统的数据连续地吸收到Kafka中,反之亦然。因此,将现有系统与Kafka集成非常容易。为了使此过程变得更加容易,有数百种此类连接器随时可用。

看一下Kafka Connect部分, 了解更多有关如何连续地将数据导入和导出Kafka的信息。

第7步:使用KAFKA STREAMS处理事件
一旦将数据作为事件存储在Kafka中,就可以使用Java / Scala 的Kafka Streams客户端库处理数据 。它允许您实现关键任务实时应用程序和微服务,其中输入和/或输出数据存储在Kafka主题中。Kafka Streams结合了在客户端编写和部署标准Java和Scala应用程序的简便性以及Kafka服务器端集群技术的优势,使这些应用程序具有高度可伸缩性,弹性,容错性和分布式性。该库支持一次精确处理,有状态操作和聚合,开窗,联接,基于事件时间的处理等等。

为了让您有一个初步的了解,以下是实现流行WordCount算法的方法:

KStream<String, String> textLines = builder.stream("quickstart-events");

KTable<String, Long> 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()));

步骤8:终止KAFKA环境
既然您已开始快速入门,请随时拆除Kafka环境-或继续玩耍。

Ctrl-C如果尚未 停止生产者和消费者客户,请使用。
通过停止Kafka经纪人Ctrl-C。
最后,使用停止ZooKeeper服务器Ctrl-C。
如果您还想删除本地Kafka环境的任何数据,包括您在此过程中创建的所有事件,请运行以下命令:

$ rm -rf /tmp/kafka-logs /tmp/zookeeper