zhenlanghuo's Blog

Storm总结

2017/04/10

核心概念

组件 概念
Topology 一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业。与作业不同的是,Topology会一直运行直到显式地杀死它
Nimbus 负责资源分配和任务调度,类似Hadoop的JobTracker
Supervisor 负责接收Nimbus分配的任务,启动和停止属于自己管理的Worker进程,类似Hadoop的TaskTracker
Worker 运行具体处理组件逻辑的进程
Executor Storm 0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task
Task 每一个Spout/Bolt具体要做的工作,也是各节点之间进行分组的单位
Spout 在Topology中产生源数据流的组件。通常Spout获取数据源的数据(如Kafka、MQ等读取数据),然后调用nextTuple函数,发射数据供Bolt消费
Bolt 在Topology中接受Spout的数据然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt在接收到消息后会调用execute函数,用户可以在其中执行自己想要的操作
Tuple 消息传递的基本单元
Stream 源源不断传递的Tuple组成了Stream
Steam分组 即消息的分区(partition)方法。Strom提供若干种实用的分组方式,包括 Shuffle、Fields、All、Global、None、Direct和Local or Shuffle等。

特性

  • 易用性:开发非常迅速,容易上手。只要遵守Topology、Spout和Bolt的编程规范即可开发出扩展性极好的应用。对于底层RPC、Worker之间冗余以及数据分流之类的操作,开发者完全不用考虑。
  • 容错性:Storm的守护进程(Nimbus、 Supervisor等)都是无状态的,状态保存在ZooKeeper中,可以随意重启。当Worker失效或机器出现故障时,Storm自动分配新的Worker替换失效的Worker。
  • 扩展性:当某一级处理单元速度不顾,可以直接配置并发数,即可线性地扩展性能
  • 完整性:采用Acker机制,保证数据不丢失;采用事务机制, 保证数据准确性。
CATALOG
  1. 1. 核心概念
  2. 2. 特性