Storm集成Kakfa

转载:Storm集成Kafka

1. 整合说明

Storm 官方对 Kafka 的整合分为两个版本,官方说明文档分别如下:

这里我服务端安装的 Kafka 版本为 2.2.0(Released Mar 22, 2019) ,按照官方 0.10.x+ 的整合文档进行整合,不适用于 0.8.x 版本的 Kafka。

2. 写入数据到Kafka

2.1 项目结构

2020-10-25-KO28u8

2.2 项目主要依赖

2.3 DataSourceSpout

产生的模拟数据格式如下:

2.4 WritingToKafkaApp

2.5 测试准备工作

进行测试前需要启动 Kakfa:

1. 启动Kakfa

Kafka 的运行依赖于 zookeeper,需要预先启动,可以启动 Kafka 内置的 zookeeper,也可以启动自己安装的:

启动单节点 kafka 用于测试:

2. 创建topic

3. 启动消费者

启动一个消费者用于观察写入情况,启动命令如下:

2.6 测试

可以用直接使用本地模式运行,也可以打包后提交到服务器集群运行。本仓库提供的源码默认采用 maven-shade-plugin 进行打包,打包命令如下:

启动后,消费者监听情况如下:

2020-10-25-vmD4AG

3. 从Kafka中读取数据

3.1 项目结构

2020-10-25-szsS05

3.2 ReadingFromKafkaApp

3.3 LogConsoleBolt

这里从 value 字段中获取 kafka 输出的值数据。

在开发中,我们可以通过继承 RecordTranslator 接口定义了 Kafka 中 Record 与输出流之间的映射关系,可以在构建 KafkaSpoutConfig 的时候通过构造器或者 setRecordTranslator() 方法传入,并最后传递给具体的 KafkaSpout

默认情况下使用内置的 DefaultRecordTranslator,其源码如下,FIELDS 中 定义了 tuple 中所有可用的字段:主题,分区,偏移量,消息键,值。

3.4 启动测试

这里启动一个生产者用于发送测试数据,启动命令如下:

2020-10-25-mVBNoe

本地运行的项目接收到从 Kafka 发送过来的数据:

2020-10-25-yZzeOc

用例源码下载地址:storm-kafka-integration

4. 参考资料

最后更新于

这有帮助吗?