Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Storm
一种分布式实时计算系统
Bob B.W. 2014/1/25
 一个开源的分布式实时计算系统,可以简单、可靠
的处理大量的数据流。
 使用场景:实时分析,在线机器学习,持续计算,
分布式RPC,ETL等等
 特点:编程模型简单,可扩展,高可靠性,高容错
性,支持多种编程语言,支持本地模式,高效
 ...
 主控节点:Nimbus
 工作节点:Supervisor
物理集群组件
Nimbus
zookeeper
zookeeper
zookeeper
supervisor
supervisor
supervisor
supervisor
su...
整体架构
 一个topology代表一个任务
 Topology构成组件:spout发送流,bolt接收处理流
 Stream:在topology中流动的没有边界的tuple序列
任务系统
外部数
据源
spout
spout
bolt
bolt
...
任务的分布式
Topology
Worker process
Work node
task
task
task
task
task
task
spout
bolt
bolt
parallelism hint = 2
parallelism hi...
 Shuffle Grouping
 Fields Grouping
 All Grouping
 Global Grouping
 Non Grouping
 Direct Grouping
 Local or shuffle ...
创建一个Topology
RandomSentence
Spout
SplitSentence
Bolt
WordCount
Bolt
消息的可靠处理
spout
bolt
bolt
emit(tuple1, mId)
emit(tuple1, tuple2)
ack(tuple1)
ack(tuple2)
acker acker: mId->[taskId, ack-val]...
 任务级失败
• bolt任务失败。此时,acker中所有与此bolt任务关联的消息都会因为超时而失败,对应spout的fail方
法将被调用。
• acker任务失败。在失败之前持有的所有消息都将会因为超时而失败。Spout的fail方法将...
 确保每个tuple只被处理一次
一致性事务
Upcoming SlideShare
Loading in …5
×

Introduction to storm

252 views

Published on

  • Be the first to comment

  • Be the first to like this

Introduction to storm

  1. 1. Storm 一种分布式实时计算系统 Bob B.W. 2014/1/25
  2. 2.  一个开源的分布式实时计算系统,可以简单、可靠 的处理大量的数据流。  使用场景:实时分析,在线机器学习,持续计算, 分布式RPC,ETL等等  特点:编程模型简单,可扩展,高可靠性,高容错 性,支持多种编程语言,支持本地模式,高效  与Hadoop MapReduce比较: mapreduce是一个批处理系统,任务会结束 storm持续处理没有终点的数据流,永远运行 Storm是什么
  3. 3.  主控节点:Nimbus  工作节点:Supervisor 物理集群组件 Nimbus zookeeper zookeeper zookeeper supervisor supervisor supervisor supervisor supervisor
  4. 4. 整体架构
  5. 5.  一个topology代表一个任务  Topology构成组件:spout发送流,bolt接收处理流  Stream:在topology中流动的没有边界的tuple序列 任务系统 外部数 据源 spout spout bolt bolt bolt result output tuple tuple
  6. 6. 任务的分布式 Topology Worker process Work node task task task task task task spout bolt bolt parallelism hint = 2 parallelism hint = 2 number of task = 4 parallelism hint = 6 Number of workers = 2 Worker process Work node task task task task task task
  7. 7.  Shuffle Grouping  Fields Grouping  All Grouping  Global Grouping  Non Grouping  Direct Grouping  Local or shuffle grouping Stream 的分发
  8. 8. 创建一个Topology RandomSentence Spout SplitSentence Bolt WordCount Bolt
  9. 9. 消息的可靠处理 spout bolt bolt emit(tuple1, mId) emit(tuple1, tuple2) ack(tuple1) ack(tuple2) acker acker: mId->[taskId, ack-val] ack-val = tuple1-id ^ ((tuple1-id ^ tuple2-id) ^ tuple2-id) taskId: if ack-val = 0 ack(mId) else fail(mId) 可靠性级别  Config.TOPOLOGY_ACKERS设置为0  不在spout中指定messageID  不设置anchor Tuple tree
  10. 10.  任务级失败 • bolt任务失败。此时,acker中所有与此bolt任务关联的消息都会因为超时而失败,对应spout的fail方 法将被调用。 • acker任务失败。在失败之前持有的所有消息都将会因为超时而失败。Spout的fail方法将被调用。 • Spout任务失败。Spout任务对接的外部设备(如MQ)负责消息的完整性。  任务槽(slot) 故障 • worker失败。每个worker中包含数个bolt(或spout)任务。supervisor负责监控这些任务,当 worker失败后,supervisor会尝试在本机重启它。 • supervisor失败。supervisor是无状态的,因此supervisor的失败不会影响当前正在运行的任务,只要 及时的将它重新启动即可。supervisor不是自举的,需要外部监控来及时重启。 • nimbus失败。nimbus是无状态的,因此nimbus的失败不会影响当前正在运行的任务(nimbus失败时, 无法提交新的任务),只要及时的将它重新启动即可。nimbus不是自举的,需要外部监控来及时重 启。  集群节点(机器)故障 • storm集群中的节点故障。此时nimbus会将此机器上所有正在运行的任务转移到其他可用的机器上运 行。 • zookeeper集群中的节点故障。zookeeper保证少于半数的机器宕机仍可正常运行,及时修复故障机 器即可。 集群容错
  11. 11.  确保每个tuple只被处理一次 一致性事务

×