Your SlideShare is downloading. ×
Introduction to storm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introduction to storm

37
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
37
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Storm 一种分布式实时计算系统 Bob B.W. 2014/1/25
  • 2.  一个开源的分布式实时计算系统,可以简单、可靠 的处理大量的数据流。  使用场景:实时分析,在线机器学习,持续计算, 分布式RPC,ETL等等  特点:编程模型简单,可扩展,高可靠性,高容错 性,支持多种编程语言,支持本地模式,高效  与Hadoop MapReduce比较: mapreduce是一个批处理系统,任务会结束 storm持续处理没有终点的数据流,永远运行 Storm是什么
  • 3.  主控节点:Nimbus  工作节点:Supervisor 物理集群组件 Nimbus zookeeper zookeeper zookeeper supervisor supervisor supervisor supervisor supervisor
  • 4. 整体架构
  • 5.  一个topology代表一个任务  Topology构成组件:spout发送流,bolt接收处理流  Stream:在topology中流动的没有边界的tuple序列 任务系统 外部数 据源 spout spout bolt bolt bolt result output tuple tuple
  • 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.  Shuffle Grouping  Fields Grouping  All Grouping  Global Grouping  Non Grouping  Direct Grouping  Local or shuffle grouping Stream 的分发
  • 8. 创建一个Topology RandomSentence Spout SplitSentence Bolt WordCount Bolt
  • 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.  任务级失败 • 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.  确保每个tuple只被处理一次 一致性事务