57.storm拓扑结构调整

几个概念

Topology(拓扑):Spout、Bolt组成的一个完整的流程结构;

Stream Grouping:流分组、数据的分发方式;

Spout:直译 水龙头,也就是 消息源 的意思;

Bolt:螺栓、处理器。很形象,水从上面的那个“水龙头”流出来,经过第一个螺栓,经过第二个螺栓,经过第三第四个螺栓...

Worker:工作进程

Executor:执行器、task的线程;

Task:具体执行的任务;

Configuration:配置。

实际操作

回顾

在上上节(55节),本地模式跑起来的,只有一个JVM(虽然分配了两个,cfg.setNumWorkers(2); 但是在本地跑的时候只可能启动一个JVM),那么拓扑的执行情况应该是下面这样的,一个worker下有几个Executor,每个Executor分别对应一个Spout或者Bolt(图片中的bolt和Spout名称和代码不一致,请对号入座):

结构调整

如果我们把带码稍作改动(只需要改Topology)

 1 import backtype.storm.Config;
 2 import backtype.storm.LocalCluster;
 3 import backtype.storm.StormSubmitter;
 4 import backtype.storm.topology.TopologyBuilder;
 5 import bhz.bolt.PrintBolt;
 6 import bhz.bolt.WriteBolt;
 7 import bhz.spout.PWSpout;
 8
 9 public class PWTopology2 {
10
11     public static void main(String[] args) throws Exception {
12
13         Config cfg = new Config();
14         cfg.setNumWorkers(2);//设置使用俩个工作进程
15         cfg.setDebug(false);
16         TopologyBuilder builder = new TopologyBuilder();
17         //设置sqout的并行度和任务数(产生2个执行器和俩个任务)
18         builder.setSpout("spout", new PWSpout(), 2);//.setNumTasks(2);
19         //设置bolt的并行度和任务数:(产生2个执行器和4个任务)
20         builder.setBolt("print-bolt", new PrintBolt(), 2).shuffleGrouping("spout").setNumTasks(4);
21         //设置bolt的并行度和任务数:(产生6个执行器和6个任务)
22         builder.setBolt("write-bolt", new WriteBolt(), 6).shuffleGrouping("print-bolt");
23
24
25         //1 本地模式
26 //        LocalCluster cluster = new LocalCluster();
27 //        cluster.submitTopology("top2", cfg, builder.createTopology());
28 //        Thread.sleep(10000);
29 //        cluster.killTopology("top2");
30 //        cluster.shutdown();
31
32         //2 集群模式
33         StormSubmitter.submitTopology("top2", cfg, builder.createTopology());
34
35     }
36 }

1.谈谈本地为什么会生成那么多文件

如果我们以本地模式启动,那么运行结果将会是这样的,temp文件夹里有6个文件

那么为什么会产生6个文件呢?注意代码的第22行

这里设置6个执行器来执行WriteBolt,默认每个执行器是一个task,也就是有6个task;再来看看WriteBolt是怎么形成文件的:

可以看出,每个线程都会在099_test下形成一个文件。

2.spout部分的拓扑结构调整

假如,我们只修改这一行代码

那么在只有一个JVM的情况下,整体拓扑结构应该类似这样的:

3.如果完全修改成上面的代码,并且可以启动多个JVM的话,呢么拓扑结构应该是下面这样的(图片中的bolt和Spout名称和代码不一致,请对号入座):

针对上面的这种拓扑结构的总结:

时间: 2024-08-25 12:54:11

57.storm拓扑结构调整的相关文章

[转载] 使用 Twitter Storm 处理实时的大数据

转载自http://www.ibm.com/developerworks/cn/opensource/os-twitterstorm/ 流式处理大数据简介 Storm 是一个开源的.大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关.了解 Twitter Storm.它的架构,以及批处理和流式处理解决方案的发展形势. Hadoop(大数据分析领域无可争辩的王者)专注于批处理.这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自高度动态的来源的

【数组】调整数组顺序使奇数位于偶数前面

1. 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分. 1 /** 2 * 调整数组顺序使奇数位于偶数前面 3 * 4 * @author 5 * 6 */ 7 public class Solution { 8 9 public static void order(int[] array) { 10 11 if (null == array || array.length == 0 || array.length ==

Storm 集群

Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt.一个Storm集群就是在一连串的bolt之间转换spout传过来的数据. 1.Storm组件:在Storm集群中.有两类节点:主节点master node和工作节点worker nodes. 主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为工

Storm是什么

Why use Storm? Apache Storm是一个免费的开源的分布式实时计算系统.Storm使得可靠的实时处理无边界的数据量变得很容易,就如同Hadoop做批处理那样.Storm很简单,可以用任意的编程语言. Storm有许多使用案例:实时分析.在线机器学习.持续的计算.分布式RPC.ETL等等.Storm很快速:每个节点每秒钟可以处理一百万个元组.它是可伸缩的.容错的,保证你的数据将会被处理,并且很容易操作. Storm集成了队列和数据库技术.一个Storm拓扑结构以任意复杂的方式消

Apache - Storm

一.Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt.一个Storm集群就是在一连串的bolt之间转换spout传过来的数据. 1.Storm组件 在Storm集群中.有两类节点:主节点master node和工作节点worker nodes.主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为

跟我学习Storm_Storm基本架构

Storm集群类似于一个Hadoop集群. 然而你在Hadoop的运行“MapReduce job”,在Storm上你运行 “topologies”. “job”和“topologies”本身有很大的不同,其中一个关键的区别是,MapReduce的工作最终完成,而topologies处理消息永远保持(或直到你杀了它).Strom集群有主要有两类节点:主节点和工作节点. 主节点上运行一个叫做“Nimbus”的守护进程,也就是类似Hadoop的“JobTracker”. Nimbus 负责在集群分发

【BBST 之伸展树 (Splay Tree)】

最近“hiho一下”出了平衡树专题,这周的Splay一直出现RE,应该删除操作指针没处理好,还没找出原因. 不过其他操作运行正常,尝试用它写了一道之前用set做的平衡树的题http://codeforces.com/problemset/problem/675/D,运行效果居然还挺好的,时间快了大概10%,内存少了大概30%. 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include

Apache-Storm 集群

[[[ storm  ]]] 一.Apache Storm简介   Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt.一个Storm集群就是在一连串的bolt之间转换spout传过来的数据.   1.Storm组件 在Storm集群中.有两类节点:主节点master node和工作节点worker nodes.主节点运行Nimbus守护

java面试题003

各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思想: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止. 2. 排序过程: 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上”漂浮”,如