Storm             张侃          数据部BI        2012/8/13
目录•   流式计算•   Storm构架•   Storm核心概念•   实时计算搜索关键词TOPN的例子
什么是流式计算  计算由数据流推动;计算任务的持续性;公交车PK大火车
Storm结构• Nimbus和Supervisor通过一个 Zookeeper 集群进行联系  ,所有的状态信息保存在Zookeeper或者本地磁盘。这意  味着你能kill -9 Nimbus或者Supervisors,然后它们能像  什么...
Why Storm is important• Extremely broad set of use cases(适用广  泛)  storm可以流式地处理消息,更新数据库,  持续的并行的读,处理,写数据流• Scalable(可扩展性)  ...
Why Storm is important• Guarantees no data loss(保证数据无丢失  )  storm可以保证每条消息都被处理,这是  storm与其他系统(比如S4)最直接的区别。• Extremely robus...
Why Storm is important• Fault-tolerant(容错)  运算过程中如果出错,storm会从新指派任  务,除非你杀掉它,运算会一直进行。• Programming language agnostic(编程语  言...
Storm核心概念•   Topologies•   Streams•   Spouts•   Bolts•   Stream groupings•   Reliability•   Tasks•   Workers
Storm核心概念• Topologies 实时应用的逻辑是被打包到一个Storm topology 里的。一个Storm topology和一个MapReduce job类似。一个关键的不同点是MapReduce job终 究是会完成的,而t...
Storm核心概念• Streams stream是Storm的核心抽象概念。一个stream是一个tuples序列,这 些tuples被处理和创造与并行分布式的方式。Streams由schema定义 ,这个schema命名stream的tup...
Storm核心概念• Spouts spout是topology数据流的源头。一般来说spouts会从外部 源读取tuples,并发射它们进入topology.• Bolts topologies的所有处理流程都是在bolts完成的。Bolts...
Storm核心概念• Stream groupings stream grouping定义了数据流如何划分在不同的bolt任务间。 Shuffle grouping:tuples随机分发给bolt的tasks,这样每个bolt 确保 得到均等数...
Storm核心概念• Reliability  Storm保证每个spout的tuple会被topology完全处  理。它通过跟踪tuples树来实现,每个spout tuple  都会触发一个树形结构,判断什么时候tuples树  成功完成...
Storm核心概念• Tasks 每个spout或bolt执行很多tasks在集群上。每个task对应一 个执行中的线程,stream groupings定义了如何发送从一 组tasks发送tuples到另一组tasks。你通过 Topolog...
实时计算搜索关键词TOPN         spout    task               emit log                                Split log,           task   bolt...
Topology代码构建整个topology的流程,定义spout和bolt,bolt和bolt之间数据流的传递方式,每个component的并行数
SplitLog代码非Java语言的调用方式:Java通过执行shell命令的方式起子进程执行Python,需要声明输出域
KeywordCount代码输出域每个tuple有两个值:keyword,count
KeywordTopN
目前应用• 移动日志实时PV
参考文档• Storm git wiki  https://github.com/nathanmarz/storm/wiki• My blog  http://www.coderzhang.com/blog/category/  big-dat...
Q&A      • 谢谢 
Upcoming SlideShare
Loading in...5
×

Storm

750

Published on

storm介绍,实例分析

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
750
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
34
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Storm

  1. 1. Storm 张侃 数据部BI 2012/8/13
  2. 2. 目录• 流式计算• Storm构架• Storm核心概念• 实时计算搜索关键词TOPN的例子
  3. 3. 什么是流式计算 计算由数据流推动;计算任务的持续性;公交车PK大火车
  4. 4. Storm结构• Nimbus和Supervisor通过一个 Zookeeper 集群进行联系 ,所有的状态信息保存在Zookeeper或者本地磁盘。这意 味着你能kill -9 Nimbus或者Supervisors,然后它们能像 什么也没发生一样再次启动起来。这个设计保证了Storm 集群令人难以置信的稳定。
  5. 5. Why Storm is important• Extremely broad set of use cases(适用广 泛) storm可以流式地处理消息,更新数据库, 持续的并行的读,处理,写数据流• Scalable(可扩展性) storm可以处理海量数据,你所需要的只是 添加机器和增加并行配置。
  6. 6. Why Storm is important• Guarantees no data loss(保证数据无丢失 ) storm可以保证每条消息都被处理,这是 storm与其他系统(比如S4)最直接的区别。• Extremely robust(非常健壮) 尽量减少用户管理storm集群的痛苦,是 storm项目的目标之一。
  7. 7. Why Storm is important• Fault-tolerant(容错) 运算过程中如果出错,storm会从新指派任 务,除非你杀掉它,运算会一直进行。• Programming language agnostic(编程语 言无关) storm topology和运算能用任何语言编写。
  8. 8. Storm核心概念• Topologies• Streams• Spouts• Bolts• Stream groupings• Reliability• Tasks• Workers
  9. 9. Storm核心概念• Topologies 实时应用的逻辑是被打包到一个Storm topology 里的。一个Storm topology和一个MapReduce job类似。一个关键的不同点是MapReduce job终 究是会完成的,而topology会永远运行下去(直 到你杀掉它)。topology是一个用stream groupings联系以来的spouts和bolts图谱。
  10. 10. Storm核心概念• Streams stream是Storm的核心抽象概念。一个stream是一个tuples序列,这 些tuples被处理和创造与并行分布式的方式。Streams由schema定义 ,这个schema命名stream的tuples的域。默认的,tuples可以包括 integers,longs,shorts,bytes,strings,doubles,floats, booleans和byte arrays。为了自定义类型可以原生的在tuples里使用 ,你可以定义你自己的序列化器。
  11. 11. Storm核心概念• Spouts spout是topology数据流的源头。一般来说spouts会从外部 源读取tuples,并发射它们进入topology.• Bolts topologies的所有处理流程都是在bolts完成的。Bolts可以 做任何事情,比如过滤,函数实现,聚合,关联,数据库 交互等等。
  12. 12. Storm核心概念• Stream groupings stream grouping定义了数据流如何划分在不同的bolt任务间。 Shuffle grouping:tuples随机分发给bolt的tasks,这样每个bolt 确保 得到均等数量的tuples。 Fields grouping: 数据流通过grouping里的特定域来划分。 Global grouping: 整个数据流进入一个单一的bolt task。
  13. 13. Storm核心概念• Reliability Storm保证每个spout的tuple会被topology完全处 理。它通过跟踪tuples树来实现,每个spout tuple 都会触发一个树形结构,判断什么时候tuples树 成功完成。每个topology有一个“消息超时”概念。 如果Storm失败于检测一个spout tuple在超时时间 内已经完成,然后它会标记这个tuple失败并稍后 重试。
  14. 14. Storm核心概念• Tasks 每个spout或bolt执行很多tasks在集群上。每个task对应一 个执行中的线程,stream groupings定义了如何发送从一 组tasks发送tuples到另一组tasks。你通过 TopologyBuilder的 setSpout and setBolt方法设置每个 spout或者bolt的并行数。• Workers Topologies执行一个或者多个worker进程。每个worker进 程是一个物理的JVM,执行topology所有tasks的一个子集 。例如,如果topology的合计并行数是300,分配了50个 workers,每个work将会执行6个tasks(在worker线程内 )。Storm会尝试平均的传播所有的workers。
  15. 15. 实时计算搜索关键词TOPN spout task emit log Split log, task bolt task shuffleGrouping Count keywords, task bolt task fieldsGrouping topn keywords, bolt task globalGrouping
  16. 16. Topology代码构建整个topology的流程,定义spout和bolt,bolt和bolt之间数据流的传递方式,每个component的并行数
  17. 17. SplitLog代码非Java语言的调用方式:Java通过执行shell命令的方式起子进程执行Python,需要声明输出域
  18. 18. KeywordCount代码输出域每个tuple有两个值:keyword,count
  19. 19. KeywordTopN
  20. 20. 目前应用• 移动日志实时PV
  21. 21. 参考文档• Storm git wiki https://github.com/nathanmarz/storm/wiki• My blog http://www.coderzhang.com/blog/category/ big-data/storm/
  22. 22. Q&A • 谢谢 
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×