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运行环境或继续看一看
- 停止生产都和消费者客户端如果你没有没有做,用
ctrl-c
- 命脉kafka broker用
ctrl-c
- 最后停用zookeeper用
ctrl-c
如果你想删除你本地kafka中所有数据,包含任何你创建,可以运行
$ rm -rf /tmp/kafka-logs /tmp/zookeeper
祝贺
你已成功完成快速入门.
学习更多,我们猜测可以查看以下内容
- 为明白kafka更多细节,读文档.你也有你的选择kafka书籍或学术论文.
- 浏览用户案例来学习在社会里其它用户是怎样从kafka身上获得价值的.
- 加入本地kafka会议组并且在Kafka峰会讨论,Kafka社会的主要的研讨会.