一、目标
  • 分清流式计算和批量计算各自的适用场景
  • 使用storm开发流式计算程序
  • 知道流式计算中时效性和正确性的取舍

二、storm是什么?

开源的、分布式、流式计算系统


三、分布式起源
  • 数据量大+增长太快–>分布式
  • 把一个任务拆解给多个计算机去执行,对外只提供一个接口
  • google发表了三篇论文:Google File System、Big Table、MapReduce,大神被启发开发出了Hadoop,Hadoop成为分布式的代表,形成Hadoop生态系统。

四、批量计算与流式计算的对比

这里写图片描述

流式计算+批量计算的API:推特的summing bird、谷歌的CloudDataFlow,接口均开源。


五、storm组件

这里写图片描述

主从结构:简单、高效,但主节点存在单点问题

对称结构:复杂、效率较低,但无单点问题,更加可靠

  • Nimbus:主节点、只负责整体分配工作、不具体干活、老板
  • Superior:从节点、直接管理干活的Worker、小组经理
  • Worker:真正干活(Task)的进程

六、Storm作业提交流程

1.用户编写Storm Topolgy
2.使用Client提交Topology给Nimbus
3.Nimbus指派Tast给Supervisor
4.Supervisor为Task启动Worker
5.Worker执行Task

作业=Topology=拓扑
这里写图片描述


七、并发机制
  • Task数量 :逻辑数量
  • Worker数量 :进程数
  • Executor数量:线程数
八、grouping分组方式

这里写图片描述


九、数据可靠性

分布式计算经常需要保证任意的worker挂掉之后,数据依然能够正确的处理。

故障处理:

Nimbus故障,换台机器重启即可
Superior挂掉,迁移其上Worker即可
Worker挂掉,迁移走数据能正确处理吗?

Spout数据保障:

如何保证数据正确的恢复?
如何保证数据不被重复计算?

  • 不丢:Acker机制保证数据如果未成功处理,可以及时发现并通知Spout重发
  • 不重:使用msgID去重

参考

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐