Storm简介

Storm

----------------------------------------

实时计算系统。

使用场景:实时分析,在线机器学习,持续计算。

速度快,每秒每节点处理数据百万tuple级别。

无状态,集群状态和分布式环境信息在zk中保存。

确保每个消息至少被消费一次。

 

 

Storm核心概念

--------------------------------------

1. Tuple 元组,数据结构,有序的元素列表。通常是任意类型的数据,使用逗号分隔,交给storm计算。

2. Stream 无序的tuple集合。

3. Spouts:水龙头, 数据源

4. Bolts:转接头。 逻辑处理单元,spout传数据给bolt,bolt处理后产生新的数据,可以filter、聚合、分组。 流程: 接收数据-->处理-->输出给bolt(可以多个)。

5. Toplogy:拓扑, Spouts和Bolts的连接形成Topology。简单讲Topology是一个有向图,点是计算,边是数据流。

6. Task : spout或bolt的执行。 a task is either the execution of a spout or a bolt. At a given time, each spout and bolt can have multiple instances running in multiple separate threads.

7. Workers:工作节点,Task的执行者。Storm在workers之间均衡分发任务,worker负责监听并执行job。

8. Stream grouping: 控制tuples如何在Topology中进行路由。Storm内置的有四种路由策略:

Shuffle grouping:  tuples在所有workers间随机路由。

Field grouping:将tuples按Filed进行分组,相同的Fileds被分配到同一个worker。

Global grouping:将所有tuples分配到同一个worker。

All grouping: 将一个puple分发给所有workers。

 

 

 Storm组件

------------------------------------------------

a. Nimbus :灵气 master node

Master node is responsible for distributing data among all the worker nodes, assign tasks to worker nodes and monitoring failures.

 

b. Supervisor: 监督人

它拥有多个worker process,负责监督管理worker process来完成Nimbus分配的任务。 A supervisor has multiple worker processes and it governs worker processes to complete the tasks assigned by the nimbus.

 

c. Worker process  

负责执行具体的Topology,它并不自己运行task,而是创建多个executors,让他们去执行。 A worker process will execute tasks related to a specific topology. A worker process will not run a task by itself, instead it creates executors and asks them to perform a particular task. A worker process will have multiple executors.

 

d. Executor  

Worker process 的一个线程,一个Exector只能为一个特定的Spout或Bolt执行一个或多个Task。 An executor is nothing but a single thread spawn by a worker process. An executor runs one or more tasks but only for a specific spout or bolt.

 

e. Task

A task performs actual data processing. So, it is either a spout or a bolt.

 

 

Storm工作流

1. Nimbus 等待新Topology的提交。

2. Topology提交后,Nimbus收集所有可用的tasks,并不组织tasks的顺序。

3. Nimbus将所有tasks平均分配到所有可用的Supervisors。

4. 每隔一段时间,Supervisors会向Nimbus发送心跳包表明它还活着。

5. 当一个Supervisor不再发送心跳包,Nimbus会把tasks发送给其它Supervisors。

6. 当Bimbus死掉,Supervisors会继续执行已分配的任务,不会产生差错。

7. 当所有tasks执行完成,Supervisor会等待新的tasks。

8. 同时,死掉的Nimbus会被监控工具开启。

9. 重启的Nimbus会从上次停止的地方继续工作。Storm担保所有的task至少被执行一次。

10. 一旦所有的Topology执行完成,Nimbus会接收新的Topology,Supervisor会接收新的task。

 

 

 Storm运行模式

------------------------------------

1. Local Mode   在同一个JVM中执行

2. Production Mode  在集群中执行

 

 

参考:

https://www.tutorialspoint.com/apache_storm/index.htm

猜你喜欢

转载自oracle-api.iteye.com/blog/2376532