storm实时分布式流计算系统——介绍

介绍

storm 是一款实时 分布式 流计算开源框架,在一个多节点集群上,每秒可以轻松处理上百万条消息。扩展性好,容错性好,稳定性好,可以支持很多编程语言。hadoo框架也是个高并发处理框架,但是是批处理,就是数据来了,攒满多少,一起处理,而storm是流处理,数据来了就处理,就像水流一样,源源不断。

分布式 和 集群是有区别的。分布式集群就是有若干个分布式系统。

稳定性:Nimbus进程和Supervisor进程是快速失败的,无状态的,出了故障或者停止了,只要重启成功,那么还是会正常运行,就好像什么也没有发生,所以稳定性好。

可靠性:保证数据至少被执行一次。

易用性:容易上手;

完整性:数据不会丢失,采用事务机制,保证数据完整性。

扩展性:当某一级单元处理不够快时,直接配置并发数,即可。

                                                                      storm体系结构图

Storm中核心概念:

Topology:拓扑,是程序上的拓扑,拓扑包含若干个节点,每个节点都有一个独立的功能,可以将一个任务划分为若干部分,然后将这些部分交给拓扑中的节点处理。

Nimbus:主节点,负责分配任务、调度 和监控集群。

Supervisor:工作节点,接收Nimbus分配的任务,控制和管理自己的Worker进程。

Worker:工作进程,Worker进程就可以运行一个Topology,可以理解为Topology级别。

Executor:Woker进程的线程,Executor运行一个Topology节点,可以理解为Topology节点级别。

Task:任务,storm最小的处理单位,是个名词,不是某个动作,是Topology节点具体要做的工作,可以理解为包含了若干个(或者说源源不断的)Tuple,是个抽象的概念,不像Tuple是个具体的数据结构。任务只能处理某一类Tuple。

Spout:Topology中的数据源节点,这个节点负责去从Topol外获取数据,然后源源不断地交给Topology中的Bolt节点去处理。

Bolt:Topology中处理数据的节点,从Spout节点或者Bolt节点获取数据,然后处理。

Tuple:Topology内节点之间传递的基本数据单元。

Stream:流,源源不断的Tuple就形成了流。可以理解为:Stream>Task>Tuple。

Stream分组:数据分组的方式,Storm自带的有:shuffle分组、Fields分组、All分组、Global分组、None分组、Direct分组 和 Local or Shuffle分组。

Storm内置的7中分组方法:

shuffe分组:数据被随机分配,可以保证同一级的Bolt节点有相同数量的数据处理。

Fields分组:根据Tuple中的一个或多个Field来分组,相同的Field就分到同一个Task中。

All分组:每一个Tuple都被分到所有的Task中。

Global分组:整个Stream都会选择一个目的Task,然后全部分发给这个Task,通常是具有最新ID的Task。

None分组:不设置分组方式,目前等同于随机分组。

Direct分组:输出数据的Spout或者Bolt 自定义 要将Tuple输出给哪个Bolt。

Local or Shuffle分组:如果目标Bolt的一个或者多个Task与当前产生数据的Task在同一个Woker进程中,那么就直接通过Woker内部通信,否则用shuffle分组。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值