Storm1.2.2整合Kafka2.1.1编程

本文介绍了如何在Storm 1.2.2环境下整合Kafka 2.1.1,通过创建一个简单的读取Kafka消息的Demo,详细讲解了从环境配置、运行框架搭建到编程实现的步骤。关键步骤包括设置TopologyBuilder、编写KafkaSpoutConfig、上传topology到storm集群以及将项目打包为jar并放入storm的exlib目录。注意,由于在集群中运行,配置文件需在main方法中读取解析,而不能在spout或bolt中直接读取。
摘要由CSDN通过智能技术生成

前言

Storm到1版本后发送了很大的变化,很多api都有很多改变。然而网络上的多数教程都是旧版本的api。
导致了这一部分的编程花了我非常非常多的时间阅读官方文档的github上的程序。
而且某些错误是真的难debug。

本文只写一个简单的读取kafka消息的demo
因为编程是简单的,麻烦的是编程之外的细节。
至于编程的问题可以参考官方在github上的example
在storm目录里面也能找到example

环境

Ubuntu18.04
Storm1.2.2
Kafka2.1.1
Zookeeper3.4.13

运行框架

开启zookeeper
开启kafka的broker
开启storm nimbus
开启storm supervisor
开启storm ui

导包

网络环境好可以用maven
但其实所要的jar包基本都放在lib目录下了。
另外需要载下strom-kafka-client.jar和strom-starter.jar
可以去maven官网下

编程

首先声明一个TopologyBuilder

TopologyBuilder tp = new TopologyBuilder();

设置spout和bolt

topologybuilder.setSpout("kafka_spout", new KafkaSpout<>(KafkaSpoutConfig.builder("127.0.0.1:9092", "test").build()), 1);
topologybuilder.setBolt("bolt", new myBolt()).shuffleGrouping("kafka_spout");

如果向更加详细的设置spout
写一个方法生成KafkaSpoutConfig

private static KafkaSpoutConfig<String,String> newKafkaSpoutConfig(String topic) {
		ByTopicRecordTranslator<String, String> trans = new ByTopicRecordTranslator<>(
	            (r) -> new Values(r.topic(), r.partition(), r.offset(), r.key(), r.value()),
	            new Fields("topic", "partition", "offset", "key", "value"), "stream1");
		//bootstrapServer 以及topic
        return KafkaSpoutConfig.builder(IPUtil.getUbuntu1()+":9092", topic)
                .setProp(ConsumerConfig.GROUP_ID_CONFIG, "kafkaSpoutTestGroup_" + System.nanoTim
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值