掌桥专利:专业的专利平台
掌桥专利
首页

一种动态改变运行中Flink checkpoint参数的方法及装置

文献发布时间:2023-06-19 19:30:30


一种动态改变运行中Flink checkpoint参数的方法及装置

技术领域

本发明涉及大数据实时计算技术领域,具体为一种动态改变运行中Flinkcheckpoint参数的方法及装置。

背景技术

Flink是一种大数据实时计算引擎,用于实时计算数据,并将计算结果输出到数据库或其他可以展示的介质上。Checkpoint是Flink任务的重要功能,checkpoint的执行周期以及时长,直接影响Flink任务的实时性与稳定性。比如说,一个Flink任务在代码中设置了Checkpoint周期时间为5分钟,那么当这个任务启动以后,会每隔5分钟会执行一次checkpoint,将状态信息保存起来。这个checkpoint时间往往是固化在代码中的,运行时无法更改。

现有技术很难做到更改运行中的Flink任务的checkpoint时间,任务一旦启动,checkpoint的时间就固定下来了。因此,一个Flink任务提交到集群运行以后,要修改checkpoint时间,只能重新修改代码,然后编译打包,重新发布到集群上执行。

发明内容

解决的技术问题

针对现有技术的不足,本发明提供了一种动态改变运行中Flink checkpoint参数的方法及装置,解决了现有技术很难做到更改运行中的Flink任务的checkpoint时间,要修改checkpoint时间,只能重新修改代码,然后编译打包,重新发布到集群上执行的问题。

技术方案

为实现以上目的,本发明通过以下技术方案予以实现:一种动态改变运行中Flinkcheckpoint参数的方法,包括以下操作:

S1:在Flink的JobManager端通过单独的线程启动一个微型的restful接口服务;

S2:通过restful接口接收用户端平台传入的最新checkpoint时间,并保存起来;

S3:通过checkpoint管理器停止现有的checkpoint周期性任务;

S4:设置最新的checkpoint时间,并以新的checkpoint时间启动checkpoint周期性任务;

S5:在restful接口中调用起用户端所开发的实时计算代码逻辑。

优选地,所述restful接口基于HTTP,使用XML格式定义。

优选地,所述flink checkpoint相关的源代码需要根据嵌入的restful接口进行相应的修改。

优选地,Flink的任务中嵌入restful接口时,给请求接口方的Flink分配一个key与secret,接口提供方将其保存在系统中并与请求接口方身份一一对应,请求接口方每次接口的调用都需按要求带上特定身份验证参数,验证通过后才允许启动restful接口服务。

优选地,所述S1)中单独的线程包括将拿到参数中的key,并通过key查找请求方的身份获得身份信息和与子对应的secret,经过算法解密后判断验证是否通过,如验证未通过,则无法启动restful接口服务。

优选地,checkpoint时间修改完成后,restful接口处于休眠状态,可通过单独的线程重复启动restful接口。

本发明还提供一种动态改变运行中Flink checkpoint参数的装置,包括用户端、restful接口和checkpoint管理器,其中:

所述用户端用于运行Flink,在Flink的任务中嵌入restful接口服务;

所述restful接口,可提供用于进行修改checkpoint时间的接口;

所述checkpoint管理器,用于在Flink的JobManager端通过单独的线程,启动一个微型的restful接口服务,同时停止现有的checkpoint周期性任务。

优选地,还包括数据匹配模块和任务执行模块,所述数据匹配模块设置在restful接口内,所述任务执行模块设置在checkpoint管理器内。

优选地,所述数据匹配模块获取Flink执行环境,所述数据匹配模块从restful接口获取待执行命令指示,然后启动restful接口,从源数据库任务配置信息中找到Reader插件的名称,根据所述Reader插件的名称加载对应的Reader插件,所述源数据库任务配置信息包括多个不同的checkpoint间隔时间,可根据更改需求选择不同的Reader插件。

优选地,所述任务执行模块从目的数据库任务配置信息中找到Writer插件名称,根据所述Writer插件名称加载对应的Writer插件,Writer插件是用于将新的checkpoint间隔时间关联到checkpoint管理器,每个新的checkpoint间隔时间对应一个Writer插件,如果需要支持新的checkpoint间隔时间,则需要开发新的Writer插件。

有益效果

本发明具有以下有益效果:本发明可在实现对运行中的flink任务checkpoint时间做动态的修改,以便达到对checkpoint动态调优的目的,通过接口调用的方式传入新的checkpoint时间,可以在运行中的Flink任务动态修改checkpoint时间,并重启checkpoint定时任务,即可生效,此过程不需要修改实时任务的代码,不需要重启Flink任务,操作简单,避免了以往checkpoint调优需要重启任务导致消息积压的问题,并且使得运行中的Flink任务具备与外界动态交互的能力。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

图1为本发明方法流程示意图;

图2为本发明装置流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“开孔”、“上”、“下”、“厚度”、“顶”、“中”、“长度”、“内”、“四周”等指示方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的组件或元件必须具有特定的方位,以特定的方位构造和操作,因此不能理解为对本发明的限制。

请参阅图1-2,本发明实施例提供一种技术方案:一种动态改变运行中Flinkcheckpoint参数的方法,包括以下步骤,如图1所示:

S1:假设任务在启动前设置checkpoint间隔时间为60s,那么一旦任务启动以后,每隔60s做一次checkpoin,需要更改checkpoint间隔时间时,在Flink的JobManager端通过单独的线程启动一个微型的restful接口服务;

S2:通过restful接口接收用户端平台传入的最新checkpoint时间,并保存起来;

S3:通过checkpoint管理器停止现有的checkpoint周期性任务;

S4:设置最新的checkpoint时间,并以新的checkpoint时间启动checkpoint周期性任务,可在实现对运行中的flink任务checkpoint时间做动态的修改,以便达到对checkpoint动态调优的目的;

S5:在restful接口中调用起用户端所开发的实时计算代码逻辑,通过提供单独的内置接口,传入新的checkpoint间隔时间,达到动态修改checkpoint周期的效果。

在本发明的一具体实施方式中,所述restful接口基于HTTP,使用XML格式定义,在restful接口中主要的动作是接收平台传入的最新checkpoint时间,并保存起来,并且停止现有的checkpoint周期性任务,以及设置最新的checkpoint时间,并以新的checkpoint时间启动checkpoint周期性任务。

在本发明的一具体实施方式中,所述flink checkpoint相关的源代码需要根据嵌入的restful接口进行相应的修改,本发明通过接口调用的方式将最新的checkpoint传入到flink任务中,达到热修改的目的,这个restful接口需要单独来开发,flink自身不具有该功能。

在本发明的一具体实施方式中,Flink的任务中嵌入restful接口时,给请求接口方的Flink分配一个key与secret,接口提供方将其保存在系统中并与请求接口方身份一一对应,请求接口方每次接口的调用都需按要求带上特定身份验证参数,验证通过后才允许启动restful接口服务。

在本发明的一具体实施方式中,所述S1)中单独的线程包括将拿到参数中的key,并通过key查找请求方的身份获得身份信息和与子对应的secret,经过算法解密后判断验证是否通过,如验证未通过,则无法启动restful接口服务。

在本发明的一具体实施方式中,checkpoint时间修改完成后,restful接口处于休眠状态,可通过单独的线程重复启动restful接口,无需修改代码,无需重新打包发布。

本发明还提供一种动态改变运行中Flink checkpoint参数的装置,包括用户端、restful接口和checkpoint管理器,所述用户端运行Flink,Flink是一种大数据实时计算引擎,用于实时计算数据,并将计算结果输出到数据库或其他可以展示的介质上,如图2所示;

Checkpoint是Flink任务的重要功能,checkpoint的执行周期以及时长,直接影响Flink任务的实时性与稳定性,在Flink的任务中嵌入restful接口服务,restful是一种接口的风格,可以是http形式的,通过这种方式可以使外界具有与该任务的交互能力,所述restful接口提供用于进行修改checkpoint时间的接口,可以通过接口调用的方式传入新的checkpoint时间,并重启checkpoint定时任务,即可生效,此过程不需要修改实时任务的代码,不需要重启Flink任务,操作简单,避免了以往checkpoint调优需要重启任务导致消息积压的问题。

在本发明的一具体实施方式中,还包括数据匹配模块和任务执行模块,所述数据匹配模块设置在restful接口内,所述任务执行模块设置在checkpoint管理器内。

在本发明的一具体实施方式中,所述数据匹配模块获取Flink执行环境,所述数据匹配模块从restful接口获取待执行命令指示,然后启动restful接口,从源数据库任务配置信息中找到Reader插件的名称,根据所述Reader插件的名称加载对应的Reader插件,所述源数据库任务配置信息包括多个不同的checkpoint间隔时间,可根据更改需求选择不同的Reader插件。

在本发明的一具体实施方式中,所述任务执行模块从目的数据库任务配置信息中找到Writer插件名称,根据所述Writer插件名称加载对应的Writer插件,Writer插件是用于将新的checkpoint间隔时间关联到checkpoint管理器,每个新的checkpoint间隔时间对应一个Writer插件,如果需要支持新的checkpoint间隔时间,则需要开发新的Writer插件。

本发明可在实现对运行中的flink任务checkpoint时间做动态的修改,以便达到对checkpoint动态调优的目的,通过接口调用的方式传入新的checkpoint时间,可以在运行中的Flink任务动态修改checkpoint时间,并重启checkpoint定时任务,即可生效,此过程不需要修改实时任务的代码,不需要重启Flink任务,操作简单,避免了以往checkpoint调优需要重启任务导致消息积压的问题,并且使得运行中的Flink任务具备与外界动态交互的能力。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

技术分类

06120115932506