一个实时流处理框架

1、什么storm??

Storm是一个实时的分布式高可靠性可维护性以及具备高容错异步流式计算框架;它是逐条处理数据的;它的架构主要有NimbusSupervisorworker;编程模型:DAGspoutBolt;高可靠性体现在异常处理和消息的可靠性保障机制;可维护性体现在:提供UI界面图形化监控端口;它是一个基于内存的处理框架;

Storm的计算模型:

spout--数据源,拓扑中数据的来源。一般会从指定外部的数据源读取元组发送到拓扑中;一个spout可以发送多个数据流spout中最核心的方法时next Tuple,该方法会被storm线程不断调用、主动从数据源拉取数据,再通过emit方法将数据生成元组发送给之后的Bolt计算。

Blot--数据流处理组件,拓扑中数据处理均由Bolt完成。对于简单的任务或者数据流转换,单个bolt可以简单实现,复杂的场景往往需要多个bolt分多个步骤完成;一个Bolt可以发送多个数据流bolt中最核心的方法时execute方法,该方法负责接收到一个元组数据、真正实现核心的业务逻辑

Storm grouping--数据流分组(数据分发策略),有shuffle grouping随机分组,field grouping按字段分组,all grouping广播发送,global grouping全局分组,nonegrouping不分组,direct grouping指向型分组,local or shuffle grouping本地或随机分组,customgrouping自定义分组。

2、了解storm的架构吗??

主要是NimbusSupervisorWorkerzookeeperNimbus主要作用是--资源调度任务分配接收jarSupervisor--接收nimbus分配的任务,启动、停止自己管理的worker进程worker--运行具体处理运算组件的进程,启动executor一般默认一个executor负责一个task任务worker的任务类型有spout任务bolt任务zookeeper负责管理集群;

具体的任务提交流程如下:

 

1. 了解storm的机制??

我看过他的通信机制和容错机制:

通信机制主要有这几个方面:ZeroMQ开源的消息传递框架Netty基于NIO的网络框架,更加高效worker内部实现了“队列”的功能,可以理解为一种事件监听或者消息处理机制,也就是队列当中一边由生产者放入消息数据,另一边消费者并行取出消息数据处理。

容错机制主要体现在这几方面:nimbus服务器上,配置集群防止服务器挂掉,非nimbus服务器发生故障时,该节点上的所有任务都会超时,nimbus会将这些task任务重新分配到其他服务器上运行

进程挂掉时:worker进程挂掉后,supervisor会重新启动这个进程,如果一直启动失败,无法向nimbus发送心跳,nimbus会将该worker重新分配到其他服务器上;

Supervisor挂掉:无状态(所有的状态信息都存放在zookeeper中来管理),快速失败;

Nimbus挂掉:无状态(所有的状态信息都存放在zookeeper中来管理),快速失败;

消息的完整性:从spout中发出的tuple,以及基于它所产生tuple构成一棵tuple树,当其发送完成,并且树当中每一条消息都被正确处理,就标明spout发送消息被“完整处理”,即消息的完整性。实现机制--acker负责跟踪每个spout发出的tupleDAG

posted @ 2020-01-10 16:37  数据阮小白  阅读(555)  评论(0编辑  收藏  举报