Storm拥有低延迟、高性能、分布式、可扩展、容错等特性,可以保证消息不丢失,消息处理严格有序。Storm的主要特点如下所示:

  • 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进 行实时处理的复杂性。
  • 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、 Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
  • 容错性。Storm会管理工作进程和节点的故障。
  • 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
  • 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它 会负责从消息源重试消息。
  • 快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。
  • 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。 这让你可以快速进行开发和单元测试。

  Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由Apache ZooKeeper来完成的。

    

  

  图1.1 Storm工作流程

  第一步:客户端提交拓扑到Nimbus。第二步:Nimbus针对该拓扑建立本地的目录根据topology的配置计算task,分配task,在zookeeper上建立assignments节点存储task和supervisor机器节点中woker的对应关系。第三步:在zookeeper上创建taskbeats节点来监控task的心跳,启动topology。第四步:Supervisor去zookeeper上获取分配的tasks,启动多个woker进行,每个woker生成task,一个task一个线程;根据topology信息初始化建立task之间的连接;Task和Task之间是通过ZeroMQ管理的;后整个拓扑运行起来。

  Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。

  可以和Storm相提并论的系统有Esper、Streambase、HStreaming和Yahoo S4。其中和Storm最接近的就是S4。两者最大的区别在于Storm会保证消息得到处理。这些系统中有的拥有内建数据存储层,这是Storm所没有的,如果需要持久化,可以使用一个类似于Cassandra或Riak这样的外部数据库。

Storm_Storm主要特点相关推荐

  1. 跟我学习Storm_Storm基本架构

    Storm集群类似于一个Hadoop集群. 然而你在Hadoop的运行"MapReduce job",在Storm上你运行 "topologies". &quo ...

  2. java操作storm_Storm Trident

    Trident是Storm的延伸.像Storm一样,Trident也是由Twitter开发的.开发Trident的主要原因是在Storm之上提供高级抽象以及有状态流处理和低延迟分布式查询. Tride ...

最新文章

  1. 管理95后员工,管理者必知的4条底层逻辑
  2. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组水平箱图(boxplot)实战
  3. ftp 工具_ftp,ftp工具哪个好用
  4. CF-786B(Legacy) 区间最短路
  5. .NET 指南:实现 Equals 方法
  6. go mongodb排序查询_《MongoDB》day two
  7. wps中图片怎么居中_wps图片怎么添加推动声
  8. vue php 分页组件,基于Vue.js的表格分页组件
  9. python存储json数据_python 存储json数据
  10. 7-42 行编辑器 (10 分)
  11. 二、Vue菜鸟小教程-vue-router的简单入门程序
  12. Thoughtworks QA测试一面凉经
  13. IT运维的365天--007PC端微信图片不能正常接收发送
  14. centos6.5安装openoffice和swftools 错误信息
  15. 卧薪尝胆70天内推入职阿里,进阶学习
  16. DDL、DML、DCL区别
  17. 如何合成gif动态图?教你一招快速合成动态gif图
  18. Linux下编译cscope,Linux cscope命令
  19. 关于大型机与X86服务器的性能和成本对比:答网友
  20. Python 字节串比特串转换以及大小端相关的几个方法

热门文章

  1. PB调用http协议接口(WebAPI)
  2. 计算机学院 储昭坤,关于2016-2017学年先进个人、集体初评结果的公示
  3. taking address of temporary错误
  4. 圣商,牢记使命成就当代圣商
  5. PT2262软件解码程序
  6. 旋转编码器(rotary encoder)旋转方向的判断
  7. 亿可控_第1章_系统分析与设计
  8. content provider nullpoint
  9. 用python证明采样定理_如何理解 Nyquist 采样定理?
  10. Win11系统开机黑屏无法显示桌面怎么解决?