千家信息网

怎么进行Twitter Storm进阶的初步设置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关怎么进行Twitter Storm进阶的初步设置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。本篇Blog是一个简单的Storm入
千家信息网最后更新 2026年11月03日怎么进行Twitter Storm进阶的初步设置

这期内容当中小编将会给大家带来有关怎么进行Twitter Storm进阶的初步设置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

本篇Blog是一个简单的Storm入门例子,目的让读者明白Storm是怎样的运行机制。以及后续会放出的几篇Storm高级特性以及最终将Storm融入Hadoop 2.x的YARN中。目的读者是已经进阶大数据的Hadoop,Spark用户,或者了解Storm想深入理解Storm的读者用户。

项目Pom(Storm jar没有提交到Maven中央仓库,需要在项目中加入下面的仓库地址):

  central Maven Repository Switchboard default http://maven.oschina.net/content/groups/public/  false    clojars https://clojars.org/repo/  false   true      org.yaml snakeyaml 1.13   org.apache.zookeeper zookeeper 3.3.3   org.clojure clojure 1.5.1   storm storm 0.9.0.1   storm libthrift7 0.7.0  

下面是一个Storm的HelloWord的例子,代码有删减,熟悉Storm的读者自然能把代码组织成一个完整的例子。

public static void main(String[] args) { Config conf = new Config(); conf.put(Config.STORM_LOCAL_DIR, "/Volumes/Study/data/storm"); conf.put(Config.STORM_CLUSTER_MODE, "local"); //conf.put("storm.local.mode.zmq", "false"); conf.put("storm.zookeeper.root", "/storm"); conf.put("storm.zookeeper.session.timeout", 50000); conf.put("storm.zookeeper.servers", "nowledgedata-n15"); conf.put("storm.zookeeper.port", 2181); //conf.setDebug(true); //conf.setNumWorkers(2); TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("words", new TestWordSpout(), 2); builder.setBolt("exclaim2", new DefaultStringBolt(), 5) .shuffleGrouping("words"); LocalCluster cluster = new LocalCluster(); cluster.submitTopology("test", conf, builder.createTopology()); }

Config.STORM_LOCAL_DIR是配置一个本地路径,Storm会在这个路径写入一些配置信息和临时数据。

Config.STORM_CLUSTER_MODE是运行模式,local和distributed两个选项,即本地模式和分布式模式。本地模式在运行时时多线程模拟的,开发测试用;分布式模式在分布式集群下是多进程的,真正的分布式。

Storm的Spout和Blot高可用是通过ZooKeeper协调的,storm.zookeeper.root是一个ZooKeeper地址,并且有对应的端口号

Debug是测试模式,有更详细的日志信息。

TestWordSpout是一个Storm自带的例子,用来随机的产生new String[] {"nathan", "mike", "jackson", "golda", "bertels"};列表中的字符串,用来提供数据源。

其中DefaultStringBolt的源码:

OutputCollector collector; public void prepare(Map conf, TopologyContext context, OutputCollector collector) { this.collector = collector; } public void execute(Tuple tuple) { log.info("rev a message: " + tuple.getString(0)); collector.emit(tuple, new Values(tuple.getString(0) + "!!!")); collector.ack(tuple); }

运行日志:

10658 [Thread-29-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10658 [Thread-31-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10758 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: mike 10758 [Thread-33-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 10859 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 10859 [Thread-29-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels 10961 [Thread-31-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 10961 [Thread-33-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson 11061 [Thread-35-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 11062 [Thread-35-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: nathan 11162 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: bertels 11163 [Thread-26-exclaim2] INFO cn.pointways.dstorm.bolt.DefaultStringBolt - rev a message: jackson

数据由一个Storm叫做喷嘴(Spout,也相当一个水龙头,能产生数据的来源端)产生,然后传递给后端一连串的的Blot,最终被转换和消费。而Spout和Blot都是并行的,并行度都可以自己设置(本地运行是靠多线程模拟的)。如:

builder.setSpout("words", new TestWordSpout(), 2); builder.setBolt("exclaim2", new DefaultStringBolt(), 5)

喷嘴TestWordSpout的并行度是2,DefaultStringBolt的并行度是5.

从日志可以看出,数据经过喷嘴到达预先定于的一个Blot,打印了日志。我测试代码设置的并行度是5,日志中统计,确实是5个线程:

Thread-29-exclaim2 Thread-31-exclaim2 Thread-26-exclaim2 Thread-33-exclaim2 Thread-35-exclaim2

关于Storm是是什么?这里有详细的介绍。

借用OSC网友的话说,Hadoop就是商场里自动升降式的电梯,用户需要排队等待,选按楼层,然后到达;而Storm就像是自动扶梯,扶梯预先设置好运行后,来人就立即运走,目的地是明确的。

Storm按我的理解,Storm和Hadoop是完全不同的,设计上也没有半点拟合的部分。Storm更像是我之前介绍过的Spring Integration,是一个数据流系统。它能把数据按照预设定的流程,把数据做各种转换,传递,分解,合并,***数据到达后端存储。只不过Storm是可以分布式,而且分布式的能力也是可以自己设置。

Storm的这种特性很适合大数据类的ETL系统开发。

上述就是小编为大家分享的怎么进行Twitter Storm进阶的初步设置了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

数据 分布式 模式 运行 日志 例子 读者 进阶 代码 喷嘴 用户 目的 线程 测试 仓库 信息 内容 地址 就是 扶梯 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 百单网互联网科技有限公司 南京欣网互联网络科技有限公司 美国互联网科技巨头监管 致骋互联网科技 奇酷互联网络科技公司 亿账通互联网科技 互联网科技视频素材 上海亿帐通互联网科技 互联网科技大会案例 佩信高科技互联网 科技与互联网的利与弊 互联网对科技的发展 重庆互联网医院沙龙医盟信息科技 沐思想互联网科技有限公司 扫呗互联网科技有限公司 银川新华互联网科技学校是国营吗 长沙渺峰互联网科技有限公司 保山浩联互联网科技有限公司 互联网高科技绘画 天下捷融互联网科技 互联网 新科技 国外互联网科技网站 互联网科技有哪些公司 武汉健翔互联网络科技有限公司 哈尔滨屹滨互联网科技有限公司 互联网第三次科技革命特征 美国五大互联网科技公司市值多少 保山浩联互联网科技有限公司 每日互联网科技新闻
0