数据处理方法和流计算系统技术方案

技术编号:14342271 阅读:103 留言:0更新日期:2017-01-04 14:06
本申请提出一种数据处理方法和流计算系统,该数据处理方法包括数据接收模块接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块;逻辑处理模块根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。该方法能够满足对外服务化的诉求,以及在发生失效转移时避免数据源头重发。

【技术实现步骤摘要】

本申请涉及数据处理
,尤其涉及一种数据处理方法和流计算系统
技术介绍
流计算是指利用分布式的思想和方法,对海量“流”式数据进行实时处理,它源自对海量数据“时效”价值上的挖掘诉求。流计算针对的数据可以称为流数据,流数据是没有边界的、未知的,而计算是事先定义(已知)的,流计算系统按照已定义的计算逻辑来处理流数据。现在最常用的流计算系统是Storm,在实际应用中常常和消息中间件(如Kafka)或存储系统(如HBase)结合,通过拉数据模式来获取数据,其缺点在于和消息中间件紧耦合,难以满足对外服务化的诉求。此外,Storm在失效转移(Failover)时,采用“源头重发”的消息机制,这种方式的缺点是故障恢复代价高,在某些场景下可能会造成雪崩效应,集群规模在水平扩展性上有较多局限。
技术实现思路
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本申请的一个目的在于提出一种数据处理方法,该方法在处理流数据时可以满足对外服务化的诉求,以及在发生失效转移时避免数据源头重发。本申请的另一个目的在于提出一种流计算系统。为达到上述目的,本申请第一方面实施例提出的数据处理方法,包括:数据接收模块接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块;逻辑处理模块根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。本申请第一方面实施例提出的数据处理方法,通过不设置消息中间件,从而满足对外服务化的诉求;通过将数据写入文件系统中,实现数据落地,进而实现数据与后续的流计算分离,落地的数据可以应用到其他系统;通过记录检查点和有效数据,可以在发生失效转移时,恢复相应的有效数据,避免数据源头重发。为达到上述目的,本申请第二方面实施例提出的流计算系统,包括:数据接收模块和逻辑处理模块;所述数据接收模块用于接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块;所述逻辑处理模块用于根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。本申请第二方面实施例提出的流计算系统,通过不设置消息中间件,从而满足对外服务化的诉求;通过将数据写入文件系统中,实现数据落地,进而实现数据与后续的流计算分离,落地的数据可以应用到其他系统;通过记录检查点和有效数据,可以在发生失效转移时,恢复相应的有效数据,避免数据源头重发。本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。附图说明本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1是本申请一实施例提出的数据处理方法的流程示意图;图2是本申请另一实施例提出的数据处理方法的流程示意图;图3是图2对应的流计算系统的结构示意图;图4是本申请实施例中检查点的示意图;图5是本申请另一实施例提出的流计算系统的结果示意图;图6是本申请另一实施例提出的流计算系统的结果示意图。具体实施方式下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。图1是本申请一实施例提出的数据处理方法的流程示意图,该方法可以应用到流计算系统中,用于流数据的处理,该方法包括:S11:数据接收模块接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块。要处理的数据可以是流数据。文件系统可以具体是指分布式文件系统,分布式文件系统(DistributedFileSystem)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。现有技术中,流数据通过消息中间件传输给流计算系统,而本实施例中,没有设置消息中间件,支持两种数据接入方式,一种是推,用户从自己的数据源,通过RestfulAPI把数据推(push)过来,此时逻辑由用户在外部实现;另一种是拉,此时用户只需要在自己的数据源开放拉数据的接口,在本系统的拓扑(topology)中实现拉数据的逻辑即可获取数据。无论哪种方式都不依赖特定的消息中间件,不同用户可以使用不同的数据来源。数据接收模块通过提供RestfulAPI实现对外服务。另外,本实施例通过将数据写入文件系统中,可以实现数据落地,写入文件系统中的数据还可以用于其他系统,例如,写入文件系统的数据作为批量计算的源数据。数据接收模块在将数据写入文件系统后,将数据发送给逻辑处理模块进行具体的流计算。可选的,所述将所述数据写入文件系统中,包括:将所述数据以记录为粒度进行划分,得到至少一条记录,并为每条记录生成版本号,以及将所述记录与所述版本号对应写入文件系统中。可选的,所述发送所述数据给逻辑处理模块,包括:将所述数据以块为粒度进行划分,得到至少一个块,并为每个块生成块标识,以及将所述块与所述块标识对应发送给逻辑处理模块,其中,每个块包括至少一条记录。S12:逻辑处理模块根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。其中,有效数据是指未发生丢失且不重复(简称为不丢不重)的数据。接收情况可以包括:接收到未发生丢失且不重复的数据,发生数据丢失或者发生数据重复。其中,当发生数据丢失时,可以通过补数据保证不丢失,发生数据重复时,通过数据去重保证不重复。可选的,所述根据对数据的接收情况获取有效数据,包括:判断是否发生数据丢失和数据重复中的至少一项;如果未发生数据丢失和数据重复中的任一项,则将接收的未丢失且不重复的数据,确定为有效数据;如果发生数据丢失和数据重复中的至少一项,则对应执行如下项中的至少一项,并将处理后的数据确定为有效数据:如果发生数据丢失,则确定丢失的版本号,并从所述文件系统中补入所述丢失的版本号对应的数据;如果发生数据重复,则去掉重复的数据。可选的,所述记录所述有效数据,包括:将所述有效数据记录在重做日志文件中,所述重做日志文件中还包含所述有效数据对应的重做日志文件元数据;且,所述检查点中包含重做日志文件元数据;所述获取与所述最新的检查点对应的有效数据,包括:根据所述最新的检查点中包含的重做日志文件元数据,从所述重做日志文件中,获取与所述重做日志文件元数据对应的有效数据。具体的,本实施例中可以设置检查点(CheckPoint),检查点中可以记录重做日志文件元数据(RedoLogMeta),以及有效数据可以记录在重做日志文件(RedoLog)中,并与RedoLogMeta对应记录。因此,在发生失效转移(Failover)时,可以本文档来自技高网...
数据处理方法和流计算系统

【技术保护点】
一种数据处理方法,其特征在于,包括:数据接收模块接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块;逻辑处理模块根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。

【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:数据接收模块接收到要处理的数据后,将所述数据写入文件系统中,并在所述数据被写入文件系统后,发送所述数据给逻辑处理模块;逻辑处理模块根据对数据的接收情况获取有效数据,并且,定期对预设的检查点进行更新;以及,在发生失效转移时,确定最新的检查点,获取与所述最新的检查点对应的有效数据,并恢复所述有效数据。2.根据权利要求1所述的方法,其特征在于,所述将所述数据写入文件系统中,包括:将所述数据以记录为粒度进行划分,得到至少一条记录,并为每条记录生成版本号,以及将所述记录与所述版本号对应写入文件系统中。3.根据权利要求2所述的方法,其特征在于,所述发送所述数据给逻辑处理模块,包括:将所述数据以块为粒度进行划分,得到至少一个块,并为每个块生成块标识,以及将所述块与所述块标识对应发送给逻辑处理模块,其中,每个块包括至少一条记录。4.根据权利要求1所述的方法,其特征在于,所述根据对数据的接收情况获取有效数据,包括:判断是否发生数据丢失和数据重复中的至少一项;如果未发生数据丢失和数据重复中的任一项,则将接收的未丢失且不重复的数据,确定为有效数据;如果发生数据丢失和数据重复中的至少一项,则对应执行如下项中的至少一项,并将处理后的数据确定为有效数据:如果发生数据丢失,则确定丢失的版本号,并从所述文件系统中补入所述丢失的版本号对应的数据;如果发生数据重复,则去掉重复的数据。5.根据权利要求1所述的方法,其特征在于,所述逻辑处理模块内部包括父单元和子单元,对应父单元,所述定期对预设的检查点进行更新,包括:定期生成检查点,并判断是否需要对生成的检查点进行持久化;如果确定需要对生成的检查点进行持久化,将预设的检查点更新为需要持久化的检查点。6.根据权利要求5所述的方法,其特征在于,在记录所述有效数据时还记录所述有效数据的版本号,所述版本号包括批编号,所述判断是否需要对生成的检查点进行持久化,
\t包括:获取第一批编号和第二批编号,所述第一批编号是所述父单元自身记录的最新的有效数据的批编号,所述第二批编号是所述子单元记录的最新的有效数据的批编号;如果所述第一批编号小于或等于所述第二批编号,确定需要对生成的检查点进行持久化。7.根据权利要求6所述的方法,其特征在于,当所述第一批编号大于所述第二批编号时,所述方法还包括:所述父单元在恢复自身的有效数据后,继续获取新数据,并将所述新数据发送给所述子单元;所述子单元在恢复自身的有效数据后,对接收的新数据中的重复数据进行去重处理。8.根据权利要求1所述的方法,其特征在于,所述记录所述有效数据,包括:将所述有效数据记录在重做日志文件中,所述重做日志文件中还包含所述有效数据对应的重做日志文件元数据;且,所述检查点中包含重做日志文件元数据;所述获取与所述最新的检查点对应的有效数据,包括:根据所述最新的检查点中包含的重做日志文件元数据,从所述重做日志文件中,获取与所述重做日志文件元数据对应的有效数据。9.一种流计算系统,其特征在于,包...

【专利技术属性】
技术研发人员:李妹芳魏蒲萌段培乐李闪
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1