Storm流数据框架------学习笔记

Storm是一个用于实时分析、在线机器学习等领域的流处理框架。它具有整合性、简易API、可扩展性和可靠的消息处理等特性。Storm组件包括Streams、Spouts、Bolts和Topology,其中Spout作为数据源,Bolt执行处理逻辑,Topology定义组件间的流转换,Stream Groupings决定数据传输方式。Storm使用Zookeeper进行分布式协调,确保高可用性。
摘要由CSDN通过智能技术生成

storm:


Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等
Storm具有以下主要特点
整合性
简易的API
可扩展性
可靠的消息处理
支持各种编程语言
快速部署

免费、开源

storm主要包括:Streams、Spouts、Bolts、Topology和Stream Groupings;

stream:Storm将流数据Stream描述成一个无限的Tuple序列,这些Tuple序列会以分布式的方式并行地创建和处理;


每个tuple是一堆值,每个值有一个名字,并且每个值可以是任何类型

Tuple本来应该是一个Key-Value的Map,由于各个组件间传递的tuple的字段名称已经事先定义好了,所以Tuple只需要按序填入各个Value,所以就是一个Value List(值列表)

Spout:Storm认为每个Stream都有一个源头,并把这个源头抽象为Spout;

通常Spout会从外部数据源(队列、数据库等)读取数据,然后封装成Tuple形式,发送到Stream中。Spout是一个主动的角色,在接口内部有个nextTuple函数,Storm框架会不停的调用该函数


Bolt:Storm将Streams的状态转换过程抽象为Bolt。Bolt即可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他Bolt;
Bolt可以执行过滤、函数操作、Join、操作数据库等任何操作

Bolt是一个被动的角色,其接口中有一个execute(Tuple input)方法,在接收到消息之后会调用此函数,用户可以在此方法中执行自己的处理逻辑;


Topology:Storm将Spouts和Bolts组成的网络抽象成Topology,它可以被提交到Storm集群执行。

Topology可视为流转换图,图中节点是一个Spout或Bolt,边则表示Bolt订阅了哪个Stream。当Spout或者Bolt发送元组时,它会把元组发送到每个订阅了该Stream的Bolt上进行处理;

Topology里面的每一个组件都是并行运行的;

在Topology里面可以指定每个组件的并行度, Storm会在集群里面分配那么多的线程来同时计算

在Topology的具体实现上,Storm中的Topology定义仅仅是一些Thrift结构体(二进制高性能的通信中间件),支持各种编程语言进行定义


Stream Groupings:Storm中的Stream Groupings用于告知Topology如何在两个组件间(如Spout和Bolt之间,或者不同的Bolt之间)进行Tuple的传送。每一个Spout和Bolt都可以有多个分布式任务,一个任务在什么时候、以什么方式发送Tuple就是由Stream Groupings来决定的


(1)ShuffleGrouping:随机分组,随机分发Stream中的Tuple,保证每个Bolt的Task接收Tuple数量大致一致
(2)FieldsGrouping:按照字段分组,保证相同字段的Tuple分配到同一个Task中
(3)AllGrouping:广播发送,每一个Task都会收到所有的Tuple
(4)GlobalGrouping:全局分组,所有的Tuple都发送到同一个Task中
(5)NonGrouping:不分组,和ShuffleGrouping类似,当前Task的执行会和它的被订阅者在同一个线程中执行
(6)DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理


节点方式:

Numbus/Supervisor;类似于Master/Slave;

storm用Zookeeper来作为分布式协调组件,负责Nimbus和多个Supervisor之间的所有协调工作。借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定;


Worker进程:

(1)Worker进程:每个worker进程都属于一个特定的Topology,每个Supervisor节点的worker可以有多个,每个worker对Topology中的每个组件(Spout或 Bolt)运行一个或者多个executor线程来提供task的运行服务
(2)Executor:executor是产生于worker进程内部的线程,会执行同一个组件的一个或者多个task。

(3)Task:实际的数据处理由task完成


工作流程:

所有Topology任务的提交必须在Storm客户端节点上进行,提交后,由Nimbus节点分配给其他Supervisor节点进行处理

Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关的信息提交到Zookeeper集群上

Supervisor会去Zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值