基于流计算的数据处理方法、装置及电子设备制造方法及图纸

技术编号:28373469 阅读:27 留言:0更新日期:2021-05-08 00:00
本申请公开了一种基于流计算的数据处理方法、装置及电子设备,该方法包括:响应于流计算中至少一个第一算子出现运行错误,确定第一算子的输入数据中未计算完成的第一数据,生成能够标识第一数据的第一标识;获取预先保存的流计算的日志文件,基于日志文件初始化第一算子的数据;构建第一算子与相邻上游算子,以及第一算子与相邻下游算子之间的数据连接;向相邻上游算子发送第一标识,使相邻上游算子至少向第一算子重新发送第一数据,以使第一算子基于第一数据进行计算并更新数据。应用该方法仅需重新初始化出现运行错误的第一算子,就能够实现精确一次级别的数据一致性,能够显著降低故障恢复延迟,提高系统稳定性,改善用户体验。

【技术实现步骤摘要】
基于流计算的数据处理方法、装置及电子设备
本申请涉及流计算
,特别涉及一种基于流计算的数据处理方法、装置及电子设备。
技术介绍
作为流式计算任务的最小执行单位,算子失败是十分常见的,比如设备故障、用户代码抛出错误或者网络故障等等都可能造成算子执行失败。对批处理计算作业来说,通常单个任务失败的处理方式是重启并重新调度失败任务,而不影响其他任务和整体作业的运行,然而这个方式对于流式计算来说并不可用。流式计算任务的算子执行失败恢复机制是从检查点(checkpoint)获取重放日志(Redolog)和重新回放数据两步。对于重启后的新算子,它通过从检查点读取重放日志,但不能独立地重新回放数据,因为重放日志不包含数据的,要重新回放数据只能要求全部上游算子重新计算,因此需追溯到数据源算子。当前,为了保证流式计算作业“精确一次(exactlyonce)”级别的一致性,流计算故障恢复的基本方案是重启流计算中所有的算子,即重置整个执行图(ExecutionGraph)。对于大流量、高并发的流式计算任务,由于单个算子执行失败将重新启动流计算的所有算子,恢复耗时较长,从而导致流计算输出中断。这对实时性和稳定性有高要求的线上任务来说,比如欺诈检测、告警监控,异常检测等,其严重影响用户体验和可用性。
技术实现思路
本申请提供了一种基于流计算的数据处理方法、装置及电子设备,本申请实施例采用的技术方案如下:一种基于流计算的数据处理方法,包括:响应于流计算中至少一个第一算子出现运行错误,确定所述第一算子的输入数据中未计算完成的第一数据,生成能够标识所述第一数据的第一标识;获取预先保存的所述流计算的日志文件,基于所述日志文件初始化所述第一算子的数据;构建所述第一算子与相邻上游算子,以及所述第一算子与相邻下游算子之间的数据连接;向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据。在一些实施例中,所述确定所述第一算子的输入数据中未计算完成的第一数据,生成用于标识所述第一数据的第一标识,包括:确定所述第一算子的第一映射关系,其中,所述第一映射关系包括所述第一算子分别与所述相邻上游算子和所述相邻下游算子的第一关联关系,和/或所述第一算子的输入数据和输出数据的第二关联关系;确定所述第一算子在第一时段的输入数据和输出数据;其中,所述第一时段包括保存所述日志文件至所述第一算子出现运行错误之间的时段;基于所述第一映射关系和所述第一算子在所述第一时段的输出数据,确定所述第一算子在所述第一时段的输入数据中未计算完成的所述第一数据,以及已计算完成的第二数据;生成用于标识所述第一数据的所述第一标识,或生成通过标识所述第二数据以对所述第一数据进行标识的所述第一标识。在一些实施例中,所述确定所述第一算子在第一时段的输入数据和输出数据,包括:获取第二标识,其中,所述第二标识用于标识所述相邻上游算子在所述第一时段输出的第三数据;基于所述第二标识确定所述第一算子在第一时段的输入数据;获取第三标识,其中,所述第三标识用于标识所述相邻下游算子在所述第一时段输入的第四数据;基于所述第三标识确定所述第一算子在第一时段的输出数据。在一些实施例中,所述向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据,包括:向所述相邻上游算子发送所述第一标识,使所述相邻上游算子基于所述第一标识对所述第三数据中包含的所述第一数据和/或所述第二数据进行标识;控制所述相邻上游算子向所述第一算子发送标识后的所述第三数据;控制所述第一算子对所述第二数据进行计算,禁止向所述相邻下游算子输出数据;控制所述第一算子对所述第一数据进行计算,向所述相邻下游算子输出数据。在一些实施例中,所述向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据,包括:向所述相邻上游算子发送所述第一标识,使所述相邻上游算子基于所述第一标识从所述第三数据中提取所述第一数据;控制所述相邻上游算子向所述第一算子重新发送所述第一数据;控制所述第一算子对所述第一数据进行计算,并向所述相邻下游算子输出数据。在一些实施例中,所述确定所述第一算子的第一映射关系,包括:基于所述流计算的逻辑执行图和/或物理执行图确定所述第一算子的第一映射关系。在一些实施例中,所述方法还包括:响应于流计算中至少一个第一算子出现运行错误;切断所述第一算子与所述相邻上游算子的数据连接,以及所述第一算子与所述相邻下游算子的数据连接;和/或清空所述相邻上游算子的数据发送队列和所述相邻下游算子的数据接收队列;和/或将所述相邻上游算子和所述相邻下游算子从第一模式切换至第二模式;响应于所述第一算子计算完成所述第一数据,将所述相邻上游算子、所述第一算子和所述相邻下游算子从所述第二模式切换至所述第一模式。一种基于流计算的数据处理方法,包括:接收第一管理器发送的第一通知,其中,所述第一通知用于通知相邻下游的第一算子出现运行错误;向所述第一管理器反馈用于标识第一时段向所述第一算子发送的第三数据的第二标识,以使所述第一管理器基于所述第二标识确定用于标识第一数据的第一标识;其中,所述第一时段包括保存日志文件至所述第一算子出现运行错误之间的时段;所述第一数据包括所述第三数据中未被所述第一算子计算完成的数据;响应于所述第一管理器基于所述流计算的日志文件初始化所述第一算子的数据,与初始化完成的所述第一算子建立数据连接;接收所述第一管理器发送的所述第一标识,基于所述第一标识至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据。一种基于流计算的数据处理装置,包括:确定模块,用于响应于流计算中至少一个第一算子出现运行错误,确定所述第一算子的输入数据中未计算完成的第一数据,生成能够标识所述第一数据的第一标识;初始化模块,用于获取预先保存的所述流计算的日志文件,基于所述日志文件初始化所述第一算子的数据;第一构建模块,用于构建所述第一算子与相邻上游算子,以及所述第一算子与相邻下游算子之间的数据连接;第一发送模块,用于向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据。一种基于流计算的数据处理装置,包括:接收模块,用于接收第一管理器发送的第一通知,其中,所述第一通知用于通知相邻下游的第一算子出现运行错误;反馈模块,用于向所述第一管理器反馈用于标识第一时段向所述第一算子发送的第三本文档来自技高网...

【技术保护点】
1.一种基于流计算的数据处理方法,包括:/n响应于流计算中至少一个第一算子出现运行错误,确定所述第一算子的输入数据中未计算完成的第一数据,生成能够标识所述第一数据的第一标识;/n获取预先保存的所述流计算的日志文件,基于所述日志文件初始化所述第一算子的数据;/n构建所述第一算子与相邻上游算子,以及所述第一算子与相邻下游算子之间的数据连接;/n向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据。/n

【技术特征摘要】
1.一种基于流计算的数据处理方法,包括:
响应于流计算中至少一个第一算子出现运行错误,确定所述第一算子的输入数据中未计算完成的第一数据,生成能够标识所述第一数据的第一标识;
获取预先保存的所述流计算的日志文件,基于所述日志文件初始化所述第一算子的数据;
构建所述第一算子与相邻上游算子,以及所述第一算子与相邻下游算子之间的数据连接;
向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据。


2.根据权利要求1所述的方法,其中,所述确定所述第一算子的输入数据中未计算完成的第一数据,生成用于标识所述第一数据的第一标识,包括:
确定所述第一算子的第一映射关系,其中,所述第一映射关系包括所述第一算子分别与所述相邻上游算子和所述相邻下游算子的第一关联关系,和/或所述第一算子的输入数据和输出数据的第二关联关系;
确定所述第一算子在第一时段的输入数据和输出数据;其中,所述第一时段包括保存所述日志文件至所述第一算子出现运行错误之间的时段;
基于所述第一映射关系和所述第一算子在所述第一时段的输出数据,确定所述第一算子在所述第一时段的输入数据中未计算完成的所述第一数据,以及已计算完成的第二数据;
生成用于标识所述第一数据的所述第一标识,或生成通过标识所述第二数据以对所述第一数据进行标识的所述第一标识。


3.根据权利要求2所述的方法,其中,所述确定所述第一算子在第一时段的输入数据和输出数据,包括:
获取第二标识,其中,所述第二标识用于标识所述相邻上游算子在所述第一时段输出的第三数据;
基于所述第二标识确定所述第一算子在第一时段的输入数据;
获取第三标识,其中,所述第三标识用于标识所述相邻下游算子在所述第一时段输入的第四数据;
基于所述第三标识确定所述第一算子在第一时段的输出数据。


4.根据权利要求3所述的方法,其中,所述向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据,包括:
向所述相邻上游算子发送所述第一标识,使所述相邻上游算子基于所述第一标识对所述第三数据中包含的所述第一数据和/或所述第二数据进行标识;
控制所述相邻上游算子向所述第一算子发送标识后的所述第三数据;
控制所述第一算子对所述第二数据进行计算,禁止向所述相邻下游算子输出数据;
控制所述第一算子对所述第一数据进行计算,向所述相邻下游算子输出数据。


5.根据权利要求3所述的方法,其中,所述向所述相邻上游算子发送所述第一标识,使所述相邻上游算子至少向所述第一算子重新发送所述第一数据,以使所述第一算子基于所述第一数据进行计算并更新数据,包括:
向所述相邻上游算子发送所述第一标识,使所述相邻上游算子基于所述第一标识从所述第三数据中提取所述第一数据;
控制所述相邻上游算子向所述第一算子重新发送所述第一数据;
控制所述第一算子对所述第一数据进行计算,并向所述相邻下游算子输出数据。

【专利技术属性】
技术研发人员:张勇涛张剑鸣
申请(专利权)人:联想北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1