Storm入门

实时处理系统(类似s4, storm)对比直接用MQ来做好处在哪里?  答:好处是它帮你做了: 1) 集群控制。2) 任务分配。3) 任务分发 4) 监控 等等。 这就是我们为什么用Storm的原因。


 Storm是一个免费开源、分布式、高容错的流式实时计算系统。主要有以下几个特点:

  • 分布式系统:可横向拓展,通过修改拓扑结构,可以很方便的扩展集群的处理能力。

  • 运维简单:Storm维护相对简单,不过依赖于Zookeeper等进行分布式管理。

  • 高度容错:模块都是无状态的,这点对于符合业务场景需要的是非常有用的,随时宕机重启。

  • 无数据丢失:Storm创新性提出的ack消息追踪框架和复杂的事务性处理,能够满足很多级别的数据处理需求。不过,越高的数据处理需求,性能下降越严重。

  • 多语言:为了满足更多的开发者,增加了这部分。


Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。

  • Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。

  • Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。

  • Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。

  • Storm提交运行的程序称为Topology。

  • Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。

  • Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。

下图是一个Topology设计的逻辑图的例子。

各个模块的交互流程如下:

topology03.png?_=5199529


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章