5、Storm集成Kafka
1、pom文件依赖
<!--storm相关jar -->
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>${storm.version}</version>
<!--排除相关依赖 -->
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>ring-cors</artifactId>
<groupId>ring-cors</groupId>
</exclusion>
</exclusions>
<!--<scope>provided</scope>--><!--注意本地调试和集群部署-->
</dependency>
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-kafka-client</artifactId>
<version>1.2.2</version>
<!--<scope>provided</scope>--><!--注意本地调试和集群部署-->
</dependency>
<!--注:老版本使用的storm-kafka依赖已经被废弃,建议在以后使用storm-kafka-client依赖进行开发,老版本的storm-kafka依赖为:-->
<!-- <dependency> -->
<!-- <groupId>org.apache.storm</groupId> -->
<!-- <artifactId>storm-kafka</artifactId> -->
<!-- <version>1.2.2</version> -->
<!-- </dependency> -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.1.0</version>
</dependency>
2、Topology
@Component
public class KafkaStormSpoutWordCountTopology {
public static void main(String[] args) {
KafkaSpoutConfig.Builder<String,String> builder =
KafkaSpoutConfig.builder(
"192.168.8.101:9092,192.168.8.102:9092,192.168.8.103:9092",
"yun01");
builder.setGroupId("test_storm_wc");
KafkaSpoutConfig<String, String> kafkaSpoutConfig= builder.build();
TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("WordCountKafkaSpout",
new KafkaSpout<String,String>(kafkaSpoutConfig),
1);
topologyBuilder.setBolt("ReadKafkaSpoutBolt",
new ReadKafkaSpoutBolt()).shuffleGrouping("WordCountKafkaSpout");
Config config = new Config();
System.out.println("准备启动kafkaStromTopo");
LocalCluster cluster= new LocalCluster();
cluster.submitTopology("kafkaStromTopo", config, topologyBuilder.createTopology());
// //启动topology的配置信息
// Config conf = new Config();
// //TOPOLOGY_DEBUG(setDebug),当他被设置成true的话,storm会记录下每个组件所发射的每条消息
// //这在本地环境调试topology很有用。但是在线上这么做的话,会影响性能
// conf.setDebug(false);
//
// //storm的运行模式有两种:本地模式和分布式模式
// if(args != null || args.length>0){
// conf.setNumWorkers(3);
// //向集群提交topology
// try {
// StormSubmitter.submitTopologyWithProgressBar(args[0],conf,topologyBuilder.createTopology());
// } catch (AlreadyAliveException e) {
// e.printStackTrace();
// } catch (InvalidTopologyException e) {
// e.printStackTrace();
// } catch (AuthorizationException e) {
// e.printStackTrace();
// }
// }
// else{
//
//
// conf.setMaxTaskParallelism(3);
//
// LocalCluster cluster = new LocalCluster();
// cluster.submitTopology("word-count",conf,builder.createTopology());
// }
}
3、Bolt, 设计拓扑请跟根据自己的业务
public class ReadKafkaSpoutBolt extends BaseBasicBolt {
@Override
public void execute(Tuple input, BasicOutputCollector basicOutputCollector) {
System.out.println(input.getValues().get(4)+"消息接受bolt");
/*
input 获取到的值
0索引代表kafka的topic
1索引代表kafka的分区
2索引代表kafka的偏移量
3索引代表kafka的key值
4索引代表kafka的value值
*/
}
@Override
public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
}
}
5、Storm集成Kafka的更多相关文章
- Storm集成Kafka应用的开发
我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果 ...
- storm集成kafka的应用,从kafka读取,写入kafka
storm集成kafka的应用,从kafka读取,写入kafka by 小闪电 0前言 storm的主要作用是进行流式的实时计算,对于一直产生的数据流处理是非常迅速的,然而大部分数据并不是均匀的数据流 ...
- storm集成kafka
kafkautil: import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.produce ...
- Storm集成Kafka的Trident实现
原本打算将storm直接与flume直连,发现相应组件支持比较弱,topology任务对应的supervisor也不一定在哪个节点上,只能采用统一的分布式消息服务Kafka. 原本打算将结构设 ...
- Storm 学习之路(九)—— Storm集成Kafka
一.整合说明 Storm官方对Kafka的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对0.8.x版本的Kafka提供整合支持: Storm ...
- Storm 系列(九)—— Storm 集成 Kafka
一.整合说明 Storm 官方对 Kafka 的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对 0.8.x 版本的 Kafka 提供整合支持: ...
- Storm集成Kafka编程模型
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3974417.html 本文主要介绍如何在Storm编程实现与Kafka的集成 一.实现模型 数据流程: ...
- Storm应用系列之——集成Kafka
本文系原创系列,转载请注明. 原帖地址:http://blog.csdn.net/xeseo 前言 在前面Storm系列之——基本概念一文中,提到过Storm的Spout应该是源源不断的取数据,不能间 ...
- spark streaming集成kafka
Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Clouder ...
随机推荐
- NSTextField/NSTextView中显示超链接以及NSMutableAttributedString用法
扩展NSAttributedString 简单的实现方法是为NSAttributedString 添加一个category. 然后为此category添加额外的方法. 具体实现如下: [代码]c#/c ...
- XenServer多网卡绑定
xenserver通过 XenCenter可以绑定网卡,支持Active-Active和Active-Standby的模式,但是通过Xencenter只能绑定两块网卡为一组.更多的比如3块一组.4块一 ...
- python learning day01
python简介 一.python的由来: python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...
- iostat查看io情况
查看TPS和吞吐量信息[root@controller ~]#iostat -d -k 1 10Device: tps kB_read/s kB_wrtn/s k ...
- jmeter 之调试
目前知道的调试方法有两种:debug sample .http mirror server debug sample debug sample 的用户界面如下: 如果选择ture则表示打印对应的数据 ...
- MongoDB - Indexes
#explain command pp db[:zips].find(:state => 'MD').explain #List all indexes: db[:zips].indexes.e ...
- FreeSwitch 终端命令详细介绍
FreeSwitch版本:1.6.9 以下为部分终端命令 alias 语法: alias [add|stickyadd] <alias> <command> | del [&l ...
- input type = file 在部分安卓手机上无法调起摄像头和相册
移动端H5web 用input type = file 在部分安卓手机上无法调起摄像头拍照,有的也无法访问相册而是直接访问了文档,解决办法是: 加上 accept = "image/*&qu ...
- JAVA时间Date工具类
package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...
- Adaboost总结
一.简介 Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类.为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到 ...