APACHE KAFKA快速入门

kafka快速入门

1. 获得Kafka

下载最新版本,解压

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

2. 启动Kafka环境

运行下边命令为了启动按顺序正确服务.

# 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. 创建一个topic并存储你的事件

Kafka是一个分布事件流平台,你可以写,读,存储,处理事件(在文档中也叫记录或消费)跨很多服务器.

例如事件是支持交易,手机更新地址位置,商品订单,IoT设置传感器测量,或是医疗设备等等.这些事件组织存储在topics. 非常类型于文件在文件系统中,事件是文件夹中文件.

所以当你 写第一事件之前,需要创建一个topic.打开另外终端运行:

$ 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. 写事件到指定topic

Kafka client与Kafka brokers 读(或写)通信通过网络.一旦接收,brokers将要存储事件,持久的和容错方式只要你需要 - 甚至永远.

运行控制台生产客户端来写一些事件到你的topic.默认,你输入的每行会导致单独的事件写入到topic.

$ 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. 读事件

打开终端运行消费客户端来读事件从你刚刚创建的topic中

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

随便实验:例如,切换到你的生产者客户端来写一些事件,在你的消费客户端马上就是看到结果.

由于事件是永久存储在kafka上的,他们可以被很多消费者读很多次只要你想要这样做.你可以非常容易的验证通过打开另一个终端再重新运行上一个命令.

6. 用Kafka 连接器导入/导出你的数据做为事件流

可能有很多数据存储在你的系统中,像关系型数据库或传统消费系统,非常多应用已经使用这些系统.Kafka Connect允许你持续收集詝数据从额外系统到Kafka,返过来操作也可以.用kafka非常容易集成已存在的系统.甚至事处理更容易,有数百个联接器是可用的.

查看kafka连接器章节来学习更多 怎样持续导入/导出你的数据导入或导出kafka.

7. 用kafka流处理你的事件

一旦你的数据以事件方式存储在kafka,你可以处理数据用Java/Scala kafka streams客户端库.它允许你实现核心任务实时应用和微服务,在这里输入,输出数据被存储在kafka topic中.kafka stream结合最简单的写和部署标准Java或Scala应用在客户端,得益于服务端群集技术可以使这些应用高可用,可伸缩,容错性好,和分布式.库支持精准一次处理,状态操作和聚合,分窗,join,基于事件时间的处理,等等.

让你先看下,这里怎样实现workCount算法

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()));

Kafka streams例子和app开发教程演示了代码 和运行流应用从开始到结束

8. 结束kafka环境

现在你可以结束快速入门了, 关闭kafka运行环境或继续看一看

  1. 停止生产都和消费者客户端如果你没有没有做,用ctrl-c
  2. 命脉kafka broker用ctrl-c
  3. 最后停用zookeeper用ctrl-c

如果你想删除你本地kafka中所有数据,包含任何你创建,可以运行

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

祝贺

你已成功完成快速入门.

学习更多,我们猜测可以查看以下内容

  • 为明白kafka更多细节,读文档.你也有你的选择kafka书籍或学术论文.
  • 浏览用户案例来学习在社会里其它用户是怎样从kafka身上获得价值的.
  • 加入本地kafka会议组并且在Kafka峰会讨论,Kafka社会的主要的研讨会.
上一篇:Kafka基本概念


下一篇:kafka 学习笔记1