跳至主要內容

Storm

张启忻大约 2 分钟stream实时计算

storm 是什么

storm 是一个分布式实时流处理框架。 storm的特点是

  • 扩展性强,当算力不足时可以水平扩展机器数量来提高算力
  • 可靠性高,保证数据不丢失,数据可以消费一次或者多次
  • 语言无关性好,storm作业可以使用各种语言编写

storm 架构

  • 主从架构 架构简单高效,会存在单主节点问题,可靠性低。 HDFS、YARN、HBase、Spark、Flink、Storm
  • 对称架构 架构复杂低效,没有单点问题,可靠性高。 Zookeeper、Kafka

Storm也是主从架构,主节点名叫 Nimbus,从节点名叫 Supervisor。 Nimbus -- zookeeper -- Supervisor

  • Nimbus: 接收客户端 topo 代码,拆分成多个 task,将映射关系等信息存入 zookeeper,将 task 分配给 Supervisor
  • Supervisor: 从 Nimbus 中接收代码,从 zk 中读取 Nimbus 分配的 task 相关信息,启动工作进程 worker,并监控 worker
  • Worker: 从 zk 上读取 Nimbus 分配的 task 相关信息,启动一个或多个 Executor 线程执行 task
  • zookeeper: Nimbus 高可用、 Nimbus 和 Supervisor 通讯、 Supervisor 和 Worker 通讯

总体来讲无论在吞吐量还是延迟性上flink的性能要高于storm

StormFlink
状态管理无状态有状态
窗口支持事件窗口支持弱,缓存整个窗口数据,窗口结束时一起计算窗口支持较完善,自带一些窗口聚合方法,自动管理窗口状态
消息投递At Most Once
At Least Once
At Most Once
At Least Once
Exactly Once
容错方式ACK机制: 对每个消息进行全链路跟踪,失败或超时这些异常情况会重发Checkpoint机制: 通过分布式一致性快照,对数据流和算子状态进行保存,在出现异常情况时,系统进行回滚
应用状态主要看各自的使用情况,总体而言管理平台比较成熟主要看各自的使用情况,总体而言管理平台比较成熟

有界流和无界流

  • 有界流: (Bounded Stream)有明确的开始和结束标志,数据的流量是固定的有限的。常用场景:批处理、历史数据分析、数据迁移
  • 无界流: (Unbounded Stream)没有明确的开始和结束标志,数据的流量是不固定的无限的。常用场景:实时数据分析、时间处理、在线机器学习