Storm是一个开源的,分布的,可靠的,容错的数据流处理系统。
Storm有很多使用场景:如实时分析,在线 机器学习 ,持续计算,分布式RPC,ETL等等。
Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用。
Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt, bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。
主节点运行Nimbus守护进程,这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。 Supervisor守护进程作为拓扑的一部分运行在工作节点上。 一个Storm拓扑结构在不同的机器上运行着众多的工作节点。 每个工作节点都是topology中一个子集的实现。 而Nimbus和Supervisor之间的协调则通过 Zookeeper 系统或者集群。
Topology: Storm中运行的一个实时应用程序的名称。(拓扑)
Spout: 在一个topology中获取源数据流的组件, 通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。参见Spout示意图。
Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。参见Bolt示意图
Tuple:消息发送的最下单元,是一个Tuple对象,对象有个List。
Zookeeper是完成Supervisor和Nimbus之间协调的服务。 而应用程序实现实时的逻辑则被封装进Storm中的“topology”。
topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。
Spout从来源处读取数据并放入topology。
Spout分成可靠和不可靠两种
当Storm接收失败时,可靠的Spout会对tuple(元组,数据项组成的列表)进行重发;
而不可靠的Spout不会考虑接收成功与否只发射一次。
Topology中所有的处理都由Bolt完成。 Bolt从Spout中接收数据并进行处理, 如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。
三。任务分配:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2916124/ ,如需转载,请注明出处,否则将追究法律责任。