一种基于Spark流计算框架的消息容错方法及系统技术方案

技术编号:25890116 阅读:22 留言:0更新日期:2020-10-09 23:30
本发明专利技术提供一种基于Spark流计算框架的消息容错方法及系统,方法如下:创建工作流程序,设置元数据检查点任务将加入程序和配置版本标签的流式计算信息保存到存储系统;设置Spark流从消息队列读取消息获取数据集,完成Spark流中数据集转换操作及创建逻辑执行计划;当Spark流中有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签;当系统出现故障时,设置Spark流获取检查点中的程序及配置版本信息,并在程序及配置版本信息发生改变时,启动重做任务,重做检查点,以及在未发生改变时,重启程序;启动新版本程序,通过新版本检查点进行后续数据恢复处理。

【技术实现步骤摘要】
一种基于Spark流计算框架的消息容错方法及系统
本专利技术属于流式计算容错
,具体涉及一种基于Spark流计算框架的消息容错方法及系统。
技术介绍
SparkStreaming是一套框架,是Spark核心API的一个扩展,可以实现高吞吐量的,具备容错机制的实时流数据处理。本专利中,将SparkStreaming简称为Spark流。流式应用程序必须24*7全天候运行,因此必须能够抵抗与应用程序逻辑无关的故障(例如,系统故障,JVM崩溃等)。为此,SparkStreaming需要将足够的信息指向容错存储系统,以便可以从故障中恢复。SparkStreaming提供了检查点机制,用于消息的恢复处理。检查点有两种类型的数据。一是元数据检查点-将定义流计算的信息保存到HDFS等容错存储中。这用于从运行流应用程序的驱动程序的节点的故障中恢复;元数据包括:配置、离散流操作、不完整的批次。二是数据检查点-将生成的数据集保存到可靠的存储中。在一些有状态转换中,这需要跨多个批次合并数据,这是必需的。在此类转换中,生成的数据集依赖于先前批次的数据集,这导致依赖项链的长度随时间不断增加。为了避免恢复时间的这种无限制的增加(与依赖关系链成比例),有状态转换的中间数据集会定期检查点到可靠的存储(例如HDFS),以切断依赖关系链。当系统出现故障,可以通过检查点机制进行恢复,但是当流式程序代码或配置改变,或者更新迭代新功能的时候,先停止旧的SparkStreaming程序,新的程序打包编译后执行运行,会出现两种情况:一是启动报错,反序列化异常。二是启动正常,但是运行的代码仍然是上一次的程序的代码。因为检查点第一次持久化的时候会把整个相关程序包和相关配置等序列化成一个二进制文件,每次重启都会从里面恢复,但是当新的程序打包之后序列化加载的仍然是旧的序列化文件,这就会导致程序报错,或者依旧执行旧代码。从而导致消息重复处理或未处理的错误。此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种基于Spark流计算框架的消息容错方法及系统,是非常有必要的。
技术实现思路
针对现有技术的上述SparkStreaming发生故障后,通过检查点机制恢复时,出现程序报错或依旧执行旧代码的缺陷,本专利技术提供一种基于Spark流计算框架的消息容错方法及系统,以解决上述技术问题。第一方面,本专利技术提供一种基于Spark流计算框架的消息容错方法,包括如下步骤:S1.创建工作流程序,设置元数据检查点任务将加入程序和配置版本标签的流式计算信息保存到存储系统;S2.设置Spark流从消息队列读取消息后进行消息分区处理生成数据集,完成Spark流中数据集转换操作及创建逻辑执行计划;S3.当Spark流中有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签;S4.当系统出现故障时,设置Spark流获取检查点中的程序及配置版本信息,并在程序及配置版本信息发生改变时,启动重做任务,重做检查点,以及在程序及配置版本信息未发生改变时,重启程序;S5.启动新版本程序,通过新版本检查点进行后续数据恢复处理。进一步地,步骤S1具体步骤如下:S11.创建工作流程序;S12.设置流式计算信息中加入程序和配置版本标签;S13.设置元数据检查点任务将流式计算信息保存到存储系统。进一步地,步骤S1中,元数据检查点任务保存的流式计算信息包括创建流应用程序的配置、定义流应用程序的离散流操作集、作业排队但尚未完成的批次。进一步地,步骤S3具体步骤如下:S31.判断Spark流中是否有状态转换,且有数据检查点;若否,返回步骤S2;若是,进入步骤S32;S32.设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签。进一步地,步骤S4具体步骤如下:S41.当系统出现故障,设置Spark流启动对元数据检查点及数据检查点结果的反序列化操作;S42.分别获取两个检查点各自的程序及配置版本信息;S43.判断Spark流中程序和配置版本是否未改变;若是,进入步骤S44;若否,进入步骤S45;S44.重启程序,进行后续处理;结束;S45.启动重做任务,将两个检查点反序列化为内容进行修改,适配新版本要求,同时将修改后数据集或Spark流信息通过新版本检查点机制重做元数据检查点和数据检查点,并将检查点结果保存到存储系统。进一步地,步骤S5具体步骤如下:S51.启动新版本程序;S52.将新版本检查点结果进行反序列化;S53.通过新版本检查点进行后续数据恢复处理。第二方面,本专利技术提供一种基于Spark流计算框架的消息容错系统,包括:元数据检查点版本加入模块,用于创建工作流程序,设置元数据检查点任务将加入程序和配置版本标签的流式计算信息保存到存储系统;Spark流工作模块,用于设置Spark流从消息队列读取消息后进行消息分区处理生成数据集,完成Spark流中数据集转换操作及创建逻辑执行计划;数据检查点版本加入模块,用于当Spark流中有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签;版本判断模块,用于当系统出现故障时,设置Spark流获取检查点中的程序及配置版本信息,并在程序及配置版本信息发生改变时,启动重做任务,重做检查点,以及在程序及配置版本信息未发生改变时,重启程序;新检查点数据恢复模块,用于当程序及配置版本信息发生改变时,重做检查点后,启动新版本程序,通过新版本检查点进行后续数据恢复处理。进一步地,元数据检查点版本加入模块包括:工作流程序创建单元,用于创建工作流程序;第一标签加入单元,用于设置流式计算信息中加入程序和配置版本标签;元数据检查点保存单元,用于设置元数据检查点任务将流式计算信息保存到存储系统;数据检查点版本加入模块包括:数据检查点判断单元,用于判断Spark流中是否有状态转换,且有数据检查点;第二标签加入单元,用于当Spark流中是否有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签。进一步地,版本判断模块包括:第一反序列化单元,用于当系统出现故障,设置Spark流启动对元数据检查点及数据检查点结果的反序列化操作;版本信息获取单元,用于分别获取两个检查点各自的程序及配置版本信息;版本改变判断单元,用于判断Spark流中程序和配置版本是否未改变;重启程序单元,用于当Spark流中程序和配置版本未改变时,重启程序,进行后续处理;重做任务单元,用于启动重做任务,将两个检查点反序列化为内容进行修改,适配新版本要求,同时将修改后数据集或Spark流信息通过新版本文档来自技高网
...

【技术保护点】
1.一种基于Spark流计算框架的消息容错方法,其特征在于,包括如下步骤:/nS1.创建工作流程序,设置元数据检查点任务将加入程序和配置版本标签的流式计算信息保存到存储系统;/nS2.设置Spark流从消息队列读取消息后进行消息分区处理生成数据集,完成Spark流中数据集转换操作及创建逻辑执行计划;/nS3.当Spark流中有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签;/nS4.当系统出现故障时,设置Spark流获取检查点中的程序及配置版本信息,并在程序及配置版本信息发生改变时,启动重做任务,重做检查点,以及在程序及配置版本信息未发生改变时,重启程序;/nS5.启动新版本程序,通过新版本检查点进行后续数据恢复处理。/n

【技术特征摘要】
1.一种基于Spark流计算框架的消息容错方法,其特征在于,包括如下步骤:
S1.创建工作流程序,设置元数据检查点任务将加入程序和配置版本标签的流式计算信息保存到存储系统;
S2.设置Spark流从消息队列读取消息后进行消息分区处理生成数据集,完成Spark流中数据集转换操作及创建逻辑执行计划;
S3.当Spark流中有状态转换,且有数据检查点时,设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签;
S4.当系统出现故障时,设置Spark流获取检查点中的程序及配置版本信息,并在程序及配置版本信息发生改变时,启动重做任务,重做检查点,以及在程序及配置版本信息未发生改变时,重启程序;
S5.启动新版本程序,通过新版本检查点进行后续数据恢复处理。


2.如权利要求1所述的基于Spark流计算框架的消息容错方法,其特征在于,步骤S1具体步骤如下:
S11.创建工作流程序;
S12.设置流式计算信息中加入程序和配置版本标签;
S13.设置元数据检查点任务将流式计算信息保存到存储系统。


3.如权利要求1或2所述的基于Spark流计算框架的消息容错方法,其特征在于,步骤S1中,元数据检查点任务保存的流式计算信息包括创建流应用程序的配置、定义流应用程序的离散流操作集、作业排队但尚未完成的批次。


4.如权利要求1所述的基于Spark流计算框架的消息容错方法,其特征在于,步骤S3具体步骤如下:
S31.判断Spark流中是否有状态转换,且有数据检查点;
若否,返回步骤S2;
若是,进入步骤S32;
S32.设置数据集进行有状态转换处理,并在数据检查点任务中加入程序和配置版本标签。


5.如权利要求1所述的基于Spark流计算框架的消息容错方法,其特征在于,步骤S4具体步骤如下:
S41.当系统出现故障,设置Spark流启动对元数据检查点及数据检查点结果的反序列化操作;
S42.分别获取两个检查点各自的程序及配置版本信息;
S43.判断Spark流中程序和配置版本是否未改变;
若是,进入步骤S44;
若否,进入步骤S45;
S44.重启程序,进行后续处理;结束;
S45.启动重做任务,将两个检查点反序列化为内容进行修改,适配新版本要求,同时将修改后数据集或Spark流信息通过新版本检查点机制重做元数据检查点和数据检查点,并将检查点结果保存到存储系统。


6.如权利要求1所述的基于Spark流计算框架的消息容错方法,其特征在于,步骤S5具体步骤如下:
S51.启动新版本程序;
S52.将新版本检查点结果进行反序列化;
S53.通过新版本检查点进行后续数据恢复处理。


7.一种基于Spark流计算框架的消息容错系统,其特征在于,包括:<...

【专利技术属性】
技术研发人员:魏健赵波
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

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

1