一种基于Flink流式计算引擎实现海量数据近实时处理的方法与流程

文档序号:33479472发布日期:2023-03-15 11:38阅读:102来源:国知局
一种基于Flink流式计算引擎实现海量数据近实时处理的方法与流程
一种基于flink流式计算引擎实现海量数据近实时处理的方法
技术领域
1.本发明属于大数据技术领域,具体涉及一种基于flink流式计算引擎实现海量数据近实时处理的方法。


背景技术:

2.大数据的数据处理主要分为离线数据处理和实时数据处理。离线数据处理一般都是采用t+1的处理方式,即每天零时处理前一天的数据,因而不能够满足数据实效性。实时数据处理需要在数据流中实时对数据进行加工处理,然后输出到目标系统,但是面对超大数据量的时候,高并发结果输出对目标系统压力太大,不仅增加下游业务系统的查询数据的压力,也对下游系统有较高的要求。
3.因此,本发明提供了一种基于flink流式计算引擎实现海量数据近实时处理的方法,解决现有离线数据处理的实效性差、以及实时数据处理的高并发写入影响下游查询性能的技术问题。


技术实现要素:

4.本发明要解决的技术问题是:提供一种基于flink流式计算引擎实现海量数据近实时处理的方法,以解决上述技术问题。
5.为实现上述目的,本发明采用的技术方案如下:一种基于flink流式计算引擎实现海量数据近实时处理的方法,包括以下步骤:步骤1、设置实时流数据的时效性间隔时间、分布式快照的保存点地址、以及实时流数据输出的下游储存系统;步骤2、基于flink流式计算引擎,读取分布式快照的保存点,在下游储存系统中构建自定义程序;步骤3、通过数据源连接器接入实时流数据,将实时流数据反序列化为jsonnode对象再进行hash分区,采用udf函数对各hash分区内的jsonnode对象进行处理,并将处理结果写入至集群的分布式系统状态;步骤4、在调度系统中启动自定义的定时任务,定期通过flink流式计算引擎的保存点,将分布式系统状态中的处理结果保存至分布式文件系统,再通过时效性间隔时间和自定义程序,将处理结果输出至下游存储系统中。
6.进一步地,所述步骤2包括:步骤21、根据flink流式计算引擎中状态模块的状态处理接口,主函数中加载分布式快照的保存点地址,并读取所述保存点的内容,形成一个键控状态流;步骤22、加载键控状态读取函数,使用open函数中初始化键控状态流的状态、使用readkey函数中读取键控状态流中的状态数据;步骤23、将键控状态流反序列化到下游储存系统中。
7.进一步地,所述键控状态流的状态包括状态的名字和类型。
8.进一步地,所述步骤3中,基于数据流中的schema 信息,将所述实时流数据反序列化为jsonnode对象。
9.进一步地,所述步骤3中,基于key值对所述jsonnode对象进行hash分区,每个分区中jsonnode对象的key值相同。
10.进一步地,所述udf函数的数据处理包括但不限于求和、求累计数量、求均值。
11.进一步地,所述处理结果写入集群的分布式系统状态的逻辑包括:采用udf函数的open函数初始化分布式状态;采用udf函数的process方法将处理结果写入分布式状态,所述分布式状态包括状态的名称和类型。
12.进一步地,所述分布式快照的保存点地址为分布式文件系统的地址。
13.进一步地,所述实时流数据为json格式的数据。
14.与现有技术相比,本发明具有以下有益效果:本发明基于内存的分布式状态和内存的计算,适用于超大数据量的实时处理;本发明通过自定义的数据实效性,具有更高的自由度;本发明对下游系统存储介质没有强依赖,预先可配置,具有更灵活的用户使用需求;本发明的设计高度抽象灵活,适用于多种数据处理场景,具有广泛的适用范围。
附图说明
15.图1为本发明的方法流程图。
具体实施方式
16.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.术语解释:flink是一个分布式系统;hadoop是一个由apache基金会所开发的分布式系统基础架构;readkey为flink框架中读取分布式状态的一个内置的方法,可以读取保存在分布式状态的数据;udf函数即为flink提供的用户自定义的接口;open函数是flink算子自带的初始化函数,用于用户初始化flink算子;process方法是flink算提供的处理接口,用于用户实现自己的逻辑处理。
18.schema是数据库对象的集合。
19.如图1所示,本发明提供的一种基于flink流式计算引擎实现海量数据近实时处理的方法,包括以下步骤:步骤1、设置实时流数据的参数:设置实时流数据的时效性间隔时间、分布式快照的保存点(savepoint)地址、以及实时流数据输出的下游储存系统;步骤2、构建自定义程序:基于flink流式计算引擎,读取分布式快照的保存点(savepoint),在下游储存系统中构建自定义程序;
步骤3、通过数据源连接器(source connector)接入实时流数据(source),将实时流数据反序列化为jsonnode对象再进行hash分区,采用udf函数对各hash分区内的jsonnode对象进行处理,并将处理结果写入至集群的分布式系统状态(分布式state);步骤4、在调度系统中启动自定义的定时任务,定期通过flink流式计算引擎的保存点(savepoint),将分布式系统状态中的处理结果保存至hadoop分布式文件系统,再通过时效性间隔时间和自定义程序,将处理结果输出至下游存储系统中。
20.本发明基于内存的分布式状态和内存的计算,适用于超大数据量的实时处理;本发明通过自定义的数据实效性,具有更高的自由度;本发明对下游系统存储介质没有强依赖,预先可配置,具有更灵活的用户使用需求;本发明的设计高度抽象灵活,适用于多种数据处理场景,具有广泛的适用范围。
21.在所述步骤1中,所述实时流数据的时效性间隔时间可设定为10秒、20秒、30秒、1分钟或10分钟等,所述分布式快照的保存点地址为hadoop分布式文件系统的地址。
22.在所述步骤3中,所述实时流数据为json格式的数据。
23.在部分实施例中,所述步骤2包括:步骤21、根据flink流式计算引擎中状态模块(state模块)的状态进程接口(state process api),主函数(main函数)中加载分布式快照的保存点(savepoint)地址,并读取所述保存点(savepoint)的内容,形成一个键控状态流(keyed state流);步骤22、加载键控状态读取函数(keyedstatereadefunction.),使用open函数中初始化键控状态流(keyed state流)的状态(state)、使用readkey函数中读取键控状态流中的状态(state)数据;步骤23、将键控状态流反序列化到下游储存系统中。所述键控状态流的状态包括状态的名字和类型。
24.在部分实施例中,基于数据流中的schema 信息,将所述实时流数据反序列化为jsonnode对象。
25.在部分实施例中,基于key值对所述jsonnode对象进行hash分区,每个分区中jsonnode对象的key值相同。
26.在部分实施例中,所述udf函数的数据处理包括但不限于求和、求累计数量、求均值。
27.在部分实施例中,所述处理结果写入集群的分布式系统状态的逻辑包括:采用udf函数的open函数初始化分布式状态(分布式state);采用udf函数的process方法将处理结果写入分布式状态,所述分布式状态(分布式state)包括状态(state)的名称和类型。
28.最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1