一种实时流计算流速感知弹性执行容错系统的制作方法

文档序号:8472852阅读:452来源:国知局
一种实时流计算流速感知弹性执行容错系统的制作方法
【技术领域】
[0001]本发明属于大数据分布式计算领域,更具体地,涉及一种实时流计算流速感知弹性执行容错系统。
【背景技术】
[0002]当前,实时流计算受到了广泛关注。学术界和工业界研发了多个流计算系统:Storm, S4, D-Streams, Puma, Flume, Streambase, Timestream,System S 等。开发者用上述系统提供的API描述处理逻辑构建应用程序。由于此类应用处理的数据量通常超过了单机器的处理能力且需要经过多个阶段计算处理,系统将应用部署到多个机器上分布式执行。流应用有如下典型特征:长时间运行,数据实时产生流入系统,流入率不可知,长期运行造成的错误累积和集群节点错误累积,所以流应用希望系统提供低延迟的处理能力(尽管输入流率会变化和可用计算资源会变化),失效后快速恢复的容错能力。
[0003]流应用中的数据(通常称为元组)在系统中经多阶段处理。每个阶段接收上一阶段的元组输入,此阶段有以下处理行为:转换处理(元组个数保持不变)、衍生出更多元组(元组个数增多)或合并上一阶段的元组(元组个数减少),从而造成各个阶段本身具有不同的流速。当流应用起始输入流速波动时,对各个阶段造成的影响是不同的,每个阶段需要扩展或收缩的算子(即处理单元)数目不尽相同,需要精细化区分控制以使各阶段处理延迟相对稳定。然而,当前的流计算系统精细化控制应用执行方面做得不足。
[0004]流应用通常部署在云平台或者大规模集群中,长时间运行,不可避免的带来容错问题,例如节点失效问题,元组快速处理过程中元组丢失问题等。
[0005]学术界和工业界对上述问题进行了积极探索研宄。流应用节点流速变化且没有超过节点处理能力时,Scott Schneider向Stream S添加了弹性化处理单元。依据节点输入流速的大小,该处理单元可以唤醒或者休眠不同数目的处理线程。Sparrow采用twochoice、懒绑定等技术使任务调度到负载较小的节点上去。当节点输入流速的大小超过了节点处理能力,成为增加了整个处理延迟的瓶颈时,StreamCloud以增加处理子链的方式维持处理的低延迟。TimeStream使用了弹性替代的方法,在维持语义正确不变的情况下将瓶颈节点或者瓶颈子处理拓扑图替换成处理能力更强的节点或者子处理拓扑图。
[0006]至于容错方面,TimeStream系统对每一个被处理的元组进行了跟踪,并阶段性保持处理节点的状态,以便能够失效恢复和元组在相应的处理单元重放处理。MillWheel提供持久化节点状态和管理节点状态的特性,同时运用水位模型标明元组到来的时间界限,并采用处理回复(ack)的方法保证元组的准确一次处理。Storm采用元组在每次处理前后生产两个相同的值进行异或的方式,保证每个元组至少一次处理。Raul Castro Fernandez提出了一种基于处理单元状态管理的方法并融合扩展和容错为一体的策略,当节点成为系统瓶颈时,将其处理状态进行分割、并行化扩展以保持低延迟。阶段性地对处理节点状态对检查点,以便失效后快速恢复。
[0007]但是上述方法存在了以下缺点:不能充分利用整个集群的资源进行负载均衡、延迟保证,缺少协调节点处理速度与节点可用资源的调度策略;不能根据流速变化灵活快速地产生应对集群角度的整体策略(如调整算子数目,增加资源使用量);当节点失效时,节点状态寻回与检测点时间戳之后的元组从原始阶段重放并重新处理需要大量时间。

【发明内容】

[0008]针对现有的技术缺陷,本发明提供了一种融合了流速感知、弹性执行和容错一体化的解决方案一一实时流计算流速感知弹性执行容错系统,旨在保证流应用的稳定性与低延迟,同时兼顾提高集群资源的利用率、流应用容错及快速恢复。
[0009]为实现上述目的,本发明提供了一种实时流计算流速感知弹性执行容错系统,包括部署管理模块、流速感知模块、元组分发管理模块、弹性执行协调模块、状态管理模块、错误检测模块、恢复协调模块、集群管理模块、应用管理模块。
[0010]在本系统中,集群管理模块、应用管理模块、部署管理模块、协调恢复模块、弹性执行协调模块相应进程都运行在管理节点上。由于上述模块资源消耗较少且有的较少用到,所以管理节点不会因此成为瓶颈。而流速感知模块、状态管理模块、错误检测模块部署在所有工作节点上,默认元组分发管理模块同时部署在所有工作节点上,用户可以用另外的消息分发系统如kafka、netty等来代替元组分发管理模块,系统提供相应接口。
[0011]应用管理模块接收用户提交的应用代码,将代码解析成部署管理模块可以识别和分割的格式。部署管理模块对应用管理模块处理后的内容进行相应的识别、分割,根据应用配置向集群管理模块申请工作节点,并向工作节点发送任务代码,工作节点收到任务代码后,启动相应的处理单元。元组分发调整模块根据处理单元间的逻辑关系,设置发送关系,并批量地向持久存储系统发送元组进行备份。当应用运行后,流速感知模块启动,感知工作节点及其上部署的处理单元处理效率、元组分发管理模块中元组停留延迟。流速感知模块感知因为流输入率或可用资源的变化而引起的体现在应用延迟、处理效率等方面的变化,将上述变化信息告知弹性执行协调模块。弹性执行协调模块根据感知信息选择开启更多处理单元还是合并回收部分节点以提高资源利用率。当弹性执行协调模块判断需要开启更多处理单元时,将向部署管理模块请求部署更多处理单元,部署管理模块向集群管理模块请求新节点;当部署完成后,向元组分发管理模块请求调整元组分发关系。元组分发管理模块结合状态管理模块对系统处理状态进行备份以备失效后恢复。状态管理模块阶段性地对处理单元处理状态做检查点(快照),元组分发管理模块成批发送检查点时间戳之后的元组,持久存储系统中保留者随时可供恢复的处理状态和此快照检查点后应该处理的元组。当错误检测模块检测到错误发生后,向恢复协调模块申请恢复,恢复协调模块向状态管理模块申请找回状态,并向部署管理模块请求重新部署处理单元。
[0012]下面就上述模块进行简要说明:
[0013](I)部署管理模块,用于接收应用管理模块处理后的流应用逻辑拓扑图或弹性执行协调模块、恢复协调模块的命令请求将应用部署成并行的多线程组成的执行拓扑图。
[0014](2)流速感知模块,用于感知应用数据输入率、可用资源变化而引起延迟、资源利用率变化,从而结合弹性执行协调模块进行运行时动态调整以保证系统的稳定性、应用的低延迟性。此模块包括节点流速感知子模块和应用级流速感知子模块;其中,所述节点流速感知子模块,用于感知单位时间内通过节点元组数量即处理单元处理元组的处理效率;所述应用级流速感知子模块,用于感知应用中的数据流过处理阶段的流速,此流速可以用元组在元组分发子系统(元组分发管理模块)中停留的时间来进行衡量。
[0015](3)元组分发管理模块,用于根据流速感知信息或弹性执行协调模块的请求调整元组分发,将元组发给下一阶段中会最快处理的处理节点;或当流速稳定时根据已经固定的分发关系,快速地成批地分发元组。同时,成批地将元组发送一份到持久存储器中,以便未来恢复使用。
[0016](4)弹性执行协调模块,用于根据流速信息灵活地开启、关闭处理线程、进程、节点,调整处理单元并行数,以精确控制元组在分发系统中的停留时间和处理节点的处理时延。当收到流速感知模块的感知信息,分析出应用数据输入率变大、延迟变大或节点过于繁忙时,弹性执行协调模块会寻求开启更多的处理单元;当节点由于其他应用输入率变大而使此应用可用资源变少而处理效率变低时,弹性执行协调模块会寻求开启更多的处理单元。当应用数据输入率变小(流速降低)并且节点资源利用率过低时
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1