3.4.5 Storm 系统
Storm是Twitter支持开发的一款分布式的、开源的、实时的、主从式的大数据流式计算系统,使用的协议为EclipsePublicLicense1.0,其核心部分使用高效流式计算的函数式语言Clojure编写,极大地提高了系统性能。但为了方便用户使用,支持用户使用任意编程语言进行项目的开发。
- 任务拓扑
任务拓扑(Task Topology)是 Storm 的逻辑单元,一个实时应用的计算任务将被打包为任务拓扑后发布,任务拓扑一旦提交将会一直运行,除非显式地去中止。一个任务拓扑是由一系列 Spout 和 Bolt 构成的有向无环图,通过数据流(stream)实现 Spout 和 Bolt之间的关联,如图3-11左图所示。其中,Spout负责从外部数据源不间断地读取数据,并以元组(Tuple)的形式发送给相应的Bolt。Bolt负责对接收到的数据流进行计算,实现过滤、聚合、查询等具体功能,可以级联,也可以向外发送数据流。
数据流是Storm对数据的抽象,它是时间上无穷的元组序列。如图3-11右图所示,数据流通过流分组(streamgrouping)所提供的不同策略实现在任务拓扑中的流动。此外,为了确保消息能且仅能被计算1次,Storm还提供了事务任务拓扑。
- 总体架构
如图3-12所示,Storm采用主从系统架构,在一个Storm系统中有两类节点(一个主节点Nimbus、多个从节点Supervisor)及3种运行环境(Master、Cluster和Slaves)。
人工智能与大数据技术导论
82