水源头
水龙头
转接头
处理后的水存放池
Storm编程模型
6)Topology:Storm中运行
的一个实时应用程序的名称
tuple
tuple
Bolt
tuple
5)Stream是指数据流
Bolt
Bolt
tuple
DataSource
Spout
1)文件、数据库、
缓冲队列kafka等
4)tuple是一次消
息传递的基本单元.
DataSource
Spout
tuple
Bolt
2)spout从外部数据源中
读取数据,然后转换为
topology内部的源数据
3)bolt接收数据后,根据
用户需求执行相应的操作
hdfs
Hbase
Mongodb
Redis
Storm核心组件
1)Nimbus:主控节点,用
于接收提交任务、分配集
群任务、集群监控等
Zookeeper
Nimbus
Zookeeper
0)提交Topology
client
Zookeeper
2)Zookeeper:集群中
数据的存储(如心跳信
息、集群状态和配置信
息 ) 、Nimbus 分 配 给
supervisor的任务等
supervisor
worker
worker
supervisor
4)Worker:运行具体
处理组件逻辑的进程
supervisor
supervisor
3)Supervisor: 负 责 接 收
Nimbus分配的任务,管理属
于自己的Worker进程。
worker
worker
executor
executor
Spout
task
task
bolt
task
task
Config conf = new Config();
conf.setNumWorkers(2);
Storm并发度案例
并发度为2+2+6=10
最大并发度为:2+4+6=12
Blue spout
Green bolt
Yellow bolt
线程数
任务数
2
2
2
4
topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2);
topologyBuilder.setBolt("green-bolt", new GreenBolt(),
2).setNumTasks(4).shuffleGrouping("blue-spout");
topologyBuilder.setBolt("yellow-bolt", new YellowBolt(),
6).shuffleGrouping("green-bolt");
StormSubmitter.submitTopology("mytopology",conf,
topologyBuilder.createTopology());
worker
executor
executor
task
task
executor
task
task
executor
executor
task
task
6
6
worker
executor
executor
task
task
executor
task
task
executor
executor
task
task