Storm是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务.
类似于Hadoop MR, 用户只需要按照规定的编程规范实现一个任务, 将任务Submit 到Storm, Storm 就可以将任务 7 * 24 小时的调度起来。
Storm 基本概念
Hadoop(MR job) | Storm | 描述 |
---|---|---|
JobTracker | Nimbus | 负责资源分配和任务调度. 接收client 提交的Topology |
TaskTracker | Supervisior | 接收Nimbus 分配的任务,启动和停止属于自己管理的worker 进程 |
Child | Worker | 运行具体处理组件逻辑的进程 |
Job | Topology | 由Spout 和 Bolt 构成, 处理的最小信息单位是一个Tuple |
Mapper/Reducer | Spout/Bolt | Spout 是发出Tuple 的节点。 Bolt 可以随意订阅某个Spout 或 Bolt 发出的Tuple. Spout 和 Bolt 统称为Component |
系统架构图
Components of a Storm cluster
角色之间的关系:
- Storm中节点状态信息保存在Zookeeper里面,Nimbus通过向Zookeeper写状态信息分配任务
- Supervisor通过从Zookeeper订阅相关数据领取任务,根据需要启动/ 关闭worker进程
- 同时Supervisor也定期发送心跳信息到Zookeeper,使得Nimbus可以掌握整个Storm集群的状态,从而可以进行任务调度或负载均衡。