您的位置:首页 > 其它

Storm简介

2017-07-13 11:35 211 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: