CN113254106A - 基于Flink的任务执行方法、装置、计算机设备及存储介质 - Google Patents
基于Flink的任务执行方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113254106A CN113254106A CN202110698927.7A CN202110698927A CN113254106A CN 113254106 A CN113254106 A CN 113254106A CN 202110698927 A CN202110698927 A CN 202110698927A CN 113254106 A CN113254106 A CN 113254106A
- Authority
- CN
- China
- Prior art keywords
- flink
- data
- target
- version number
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例属于计算机技术领域,应用于智慧社区领域中,涉及一种基于Flink的任务执行方法、装置、计算机设备及存储介质包括基于版本号将接收到的Flink数据包存储至预先建立的子目录文件夹中;基于接收到的用户任务数据确定目标Flink版本号;基于目标Flink版本号,基于目标Flink版本号确定出目标子目录文件夹,将目标子目录文件夹中的Flink数据包作为目标Flink数据包并加载至内存;获取用户任务数据中的任务分配方式和待处理数据,在向各服务器分配的待处理数据的数据量不均匀时,调用预设的数据分配方式重新向各服务器分配所述待处理数据;运行内存中的目标Flink数据包。Flink数据包可存储于区块链中。本申请能够支持不同版本Flink任务的调用,同时避免Flink版本调用混乱的情况。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及基于Flink的任务执行方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术的高速发展,计算机在改变了人们的生活方式的同时,也已经逐渐应用于各行各业的线上数据处理中。而其中Flink作为实时计算的重要框架,很多公司研发了专门提交Flink任务的服务,但是这样的服务会受到Flink版本的限制,即对同一个服务来说,每次提交的任务的Flink版本需要一致。目前,随着Flink社区的不断更新,Flink出现很多不同的版本。由于每个版本之间有所差异,用户常常会选择不同的任务使用不同的Flink版本。如果设计成服务只能提交一个版本的Flink的话,那么无法满足客户对Flink版本频繁变化的需要;如果使用多个服务,每个服务支持一个Flink版本的话,那么开发运维成本太大;在使用一个服务提交多个Flink版本时,经常会出现调用版本混乱的情况,造成整个服务的扩展性差、稳定性差以及难以迭代,增大了开发和维护成本。同时,还存在执行Flink任务的服务器的数据处理速度慢,效率低的情况。
发明内容
本申请实施例的目的在于提出一种基于Flink的任务执行方法、装置、计算机设备及存储介质,支持不同版本Flink任务的调用,同时避免Flink版本调用混乱的情况。
为了解决上述技术问题,本申请实施例提供一种基于Flink的任务执行方法,采用了如下所述的技术方案:
一种基于Flink的任务执行方法,包括下述步骤:
在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同;
接收用户任务数据,基于所述用户任务数据确定目标Flink版本号;
基于所述目标Flink版本号,对所述父级目录中的子目录文件夹进行查找,获得目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存;
获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器;
运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
进一步的,所述接收用户任务数据,基于所述用户任务数据确定目标Flink版本号的步骤包括:
接收用户任务数据,其中,所述用户任务数据携带有用户名称,根据用户名称在数据库中查找是否存在用户历史日志;
在所述数据库中存在所述用户历史日志时,获取并分析所述用户历史日志,获得初始Flink版本号,并将所述初始Flink版本号发送至用户客户端;
当接收到用户客户端发送的确认信号时,将所述初始Flink版本号作为目标Flink版本号;
当接收到用户客户端发送的修改信号时,获取所述修改信号携带的Flink版本号,将所述修改信号携带的Flink版本号作为目标Flink版本号。
进一步的,所述分析所述用户历史日志,获得初始Flink版本号的步骤包括:
获取每个所述用户历史日志中用户调用的Flink版本号,作为历史Flink版本号;
确定获得的每个所述历史Flink版本号的数量,并将所述历史Flink版本号根据数量进行降序排序,获得所述历史版本号序列表;
将排在第一位的历史Flink版本号作为所述初始Flink版本号,并将所述历史版本号序列表展示在前端页面中,以提供给用户查看。
进一步的,在所述根据用户名称在数据库中查找是否存在用户历史日志的步骤之后,还包括:
在所述数据库中不存在所述用户历史日志时,获取用户任务数据中的任务函数,并调取关联查找表,其中,所述关联查找表中包括函数标签与Flink版本号,所述函数标签与所述Flink版本号具有关联关系;
基于所述关联查找表,分别计算与各Flink版本号相关联的函数标签,与所述任务函数的重叠率,获得函数重叠率;
将函数重叠率最高的Flink版本号作为目标版本号。
进一步的,在所述基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹的步骤之前,还包括:
查找内存中是否存在Flink代码,在内存中存在所述Flink代码时,卸载内存中加载的所述Flink代码。
进一步的,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器的步骤包括:
在数据量分配不均匀时,调取预设的多个随机数列,并获取每条待处理数据携带的用户序列号,将所述用户序列号与任一所述随机数列进行拼接操作,获得目标序列;
将所述目标序列与服务器的总数量进行取余操作,获得目标服务器号,将所述用户的待处理数据基于对应的目标服务器号,分配给所述目标服务器号所关联的服务器,以完成数据分配。
进一步的,所述根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀的步骤包括:
确定向各服务器分配的待处理数据的数据量;
将所述数据量两两做差,获得数量差值;
确定所述数量差值是否大于差值阈值,在所述数量差值大于差值阈值时,确定数据量分配不均匀。
为了解决上述技术问题,本申请实施例还提供一种基于Flink的任务执行装置,采用了如下所述的技术方案:
一种基于Flink的任务执行装置,包括:
建立模块,用于在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同;
接收模块,用于接收用户任务数据,基于所述用户任务数据确定目标Flink版本号;
查找模块,用于基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存;
确定模块,用于获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器;
运行模块,用于运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现上述的基于Flink的任务执行方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述的基于Flink的任务执行方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请通过将不同版本的Flink数据表放置在不同的子目录文件夹中,实现不同版本的Flink数据包之间的相互隔离。通过用户任务数据确定出目标Flink版本号,并通过类加载器来加载目标Flink数据包,实现了对目标版本的Flink数据包的调用。进一步通过对待处理数据的重新分配操作,实现对各服务器分配的数据量适合,便于服务器对数据的快速处理。本申请能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的基于Flink的任务执行方法的一个实施例的流程图;
图3是根据本申请的基于Flink的任务执行装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
附图标记:200、计算机设备;201、存储器;202、处理器;203、网络接口;300、基于Flink的任务执行装置;301、建立模块;302、接收模块;303、查找模块;304、确定模块;305、运行模块。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于Flink的任务执行方法一般由服务器/终端设备执行,相应地,基于Flink的任务执行装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的基于Flink的任务执行方法的一个实施例的流程图。所述的基于Flink的任务执行方法,包括以下步骤:
S1:在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同。
在本实施例中,Flink全称为Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。现有技术会先将所有的代码加载至内存,这时如果有文件名相同但内容不同的代码时,加载以后内存中的代码会出现不同版本的Flink代码会串的情况,很难排查与维护。针对这种同一个服务,提交不同版本Flink任务的情况。本申请将不同版本的Flink代码放在同一父目录的不同子目录下隔离开来,再使用类加载器每次去强制加载,所需要的Flink的版本的代码后再调用提交的代码,来做到多版本的Flink不会相互影响,相互独立的改善方法。例如:Flink父目录下包括Flink1.8子目录,Flink1.9子目录,Flink1.10子目录。Flink1.8子目录的Flink1.8数据包中包括Flink1.8的代码1、Flink1.8的代码2和Flink1.8的代码3。Flink1.9子目录的Flink1.9数据包中包括Flink1.9的代码1、Flink1.9的代码2和Flink1.9的代码3。Flink1.10子目录的Flink1.10数据包中包括Flink1.10的代码1、Flink1.10的代码2和Flink1.10的代码3。
在本实施例中,基于Flink的任务执行方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式接收携带有版本号的Flink数据包。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
S2:接收用户任务数据,基于所述用户任务数据确定目标Flink版本号。
在本实施例中,用户任务数据为Java包,携带有用户名称,作为该Java包的唯一标识。用户任务数据中包括任务分配方式和待处理数据。通过获取用户任务数据携带的用户名称,从而根据用户名称获得目标Flink版本号。
具体的,在步骤S2中,即所述接收用户任务数据,基于所述用户任务数据确定目标Flink版本号的步骤包括:
接收用户任务数据,其中,所述用户任务数据携带有用户名称,根据用户名称在数据库中查找是否存在用户历史日志;
在所述数据库中存在所述用户历史日志时,获取并分析所述用户历史日志,获得初始Flink版本号,并将所述初始Flink版本号发送至用户客户端;
当接收到用户客户端发送的确认信号时,将所述初始Flink版本号作为目标Flink版本号;
当接收到用户客户端发送的修改信号时,获取所述修改信号携带的Flink版本号,将所述修改信号携带的Flink版本号作为目标Flink版本号。
在本实施例中,通过用户名称查找出用户历史日志,用户历史日志中记录着用户的历史java包和该用户的历史任务的执行情况等内容。在数据库中存在用户历史日志时,分析用户历史日志,获得初始Flink版本号,此时可以将该初始Flink版本号直接作为目标Flink版本号,或者,将该初始Flink版本号发送至用户客户端进行确认。
其中,所述分析所述用户历史日志,获得初始Flink版本号的步骤包括:
获取每个所述用户历史日志中用户调用的Flink版本号,作为历史Flink版本号;
确定获得的每个所述历史Flink版本号的数量,并将所述历史Flink版本号根据数量进行降序排序,获得所述历史版本号序列表;
将排在第一位的历史Flink版本号作为所述初始Flink版本号,并将所述历史版本号序列表展示在前端页面中,以提供给用户查看。
在本实施例中,通过将历史版本号序列表展示在前端页面中,以便于用户回忆起曾经使用过的Flink版本号,便于用户对该初始Flink版本号的确认,或者选择其他版本的Flink版本号。
此外,在所述根据用户名称在数据库中查找是否存在用户历史日志的步骤之后,还包括:
在所述数据库中不存在所述用户历史日志时,获取用户任务数据中的任务函数,并调取关联查找表,其中,所述关联查找表中包括函数标签与Flink版本号,所述函数标签与所述Flink版本号具有关联关系;
基于所述关联查找表,分别计算与各Flink版本号相关联的函数标签,与所述任务函数的重叠率,获得函数重叠率;
将函数重叠率最高的Flink版本号作为目标版本号。
在本实施例中,关联查找表中关联的是将函数与对该函数的执行结果表现较佳的Flink版本相关联。进而,在数据中库不存在用户历史日志时,则可以根据用户任务数据中函数确定出与Flink版本关联的表现较佳的Flink版本,作为目标Flink版本号。
S3:基于所述目标Flink版本号,对所述父级目录中的子目录文件夹进行查找,获得目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存。
在本实施例中,在所述父级目录中,查找是否存在名称为所述目标Flink版本号的子目录文件夹,在查找到名称为所述目标Flink版本号的子目录文件夹时,将名称为所述目标Flink版本号的子目录文件夹作为目标子目录文件夹。通过加载一个类加载器,打破双亲委派模型,让其不去默认的目录下面去加载代码,而是直接去指定的子目录文件夹,将所需的子目录文件夹下的Flink数据包加载至内存,以运行所述目标子目录文件夹中的Flink数据包中的代码。因为已经将不同的版本的代码通过目录隔离开了,指定的子目录文件夹就只会有一个版本的Flink数据包。则本申请在同一时间就只存在一个版本的Flink代码即为所需要的Flink版本,避免掉了多个版本同时出现的冲突的问题。同时,提交任务时可以每次指定不同的Flink版本,内存中的代码会切换到对应的版本代码,同样能满足客户不同的任务选择不同的Flink版本去提交的目的,避免冲突增加了系统的稳定性,同时同一个服务又能提交不同版本的任务,降低了维护和开发的成本。通过优化后的任务提交方式,将不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,同时,在提交过程中多个版本的Flink可以提供选择,在同一个服务系统中可以共存,但是却又不会相互干扰,因为已经将不同版本会相互冲突的代码放到了不同的子目录下,加载的时候只会去找这一次提交所需要的代码,来做到多个Flink版本共存且文件名相同但是内容不相同的代码每次都能准确的区分开,并且准确的调用到需要的版本的代码。
S4:获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器。
在本实施例中,先按照用户写好的方式,即用户任务数据中携带的任务分配方式对待处理数据进行分配,确定数据分配是否均匀。在数据量分配均匀时,根据所述任务分配方式运行所述内存中的Flink数据包。在数据分配不均匀时,对待处理数据进行重新分配操作,以保证数据分配均匀,便于数据的快速处理。比如,用户设置的是直接将用户序列号与服务器的总数量取余,最后获得的结果是90条数据全部取余为1,那么则该90条数据全部分配给服务器号为1的服务器来处理,造成了该服务器的负担的同时,其他服务器闲置,造成数据处理速度慢。
具体的,在步骤S4中,即所述根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀的步骤包括:
确定向各服务器分配的待处理数据的数据量;
将所述数据量两两做差,获得数量差值;
确定所述数量差值是否大于差值阈值,在所述数量差值大于差值阈值时,确定数据量分配不均匀。
在本实施例中,根据分配的待处理数据的数据量之间的数量差值和差值阈值的比较,能够快速的确定出数据分配是否均匀,从而提高计算机的处理速度。
此外,在步骤S4中,即在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器的步骤包括:
在数据量分配不均匀时,调取预设的多个随机数列,并获取每条待处理数据携带的用户序列号,将所述用户序列号与任一所述随机数列进行拼接操作,获得目标序列;
将所述目标序列与服务器的总数量进行取余操作,获得目标服务器号,将所述用户的待处理数据基于对应的目标服务器号,分配给所述目标服务器号所关联的服务器,以完成数据分配。
在本实施例中,检测任务代码中的任务分配方法,确定服务中当前版本的Flink即将执行的任务中各服务器的数据量,进而确定数据量分配是否均匀,若数据量分配均匀,则在用户的序列号前加随机数列,再取余,进行分配。本申请中的取余指的是计算目标序列与服务器的总数量之间的余数,例如,目标序列为2014,服务器的总数量为9,则余数为7,则目标服务器号为7。
S5:运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
在本实施例中,运行内存中的目标Flink数据包,即可根据上述的数据分配结果调用各服务器处理数据,在避免Flink版本调用混乱的同时,完成数据的快速处理。
在本实施例的一些可选的实现方式中,在步骤S3,即在所述基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹的步骤之前,上述电子设备还可以执行以下步骤:
查找内存中是否存在Flink代码,在内存中存在所述Flink代码时,卸载内存中加载的所述Flink代码。
在本实施例中,查找内存中是否存在Flink代码,在内存中存在所述Flink代码时,卸载内存中加载的所述Flink代码。本申请将原来的直接将所有代码加载至内存,替换为现在的先需要卸载掉之前已加载的代码避免掉不同版本之间的相互的影响。
本申请通过将不同版本的Flink数据表放置在不同的子目录文件夹中,实现不同版本的Flink数据包之间的相互隔离。通过用户任务数据确定出目标Flink版本号,并通过类加载器来加载目标Flink数据包,实现了对目标版本的Flink数据包的调用。进一步通过对待处理数据的重新分配操作,实现对各服务器分配的数据量适合,便于服务器对数据的快速处理。本申请能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率。
需要强调的是,为进一步保证上述Flink数据包的私密和安全性,上述Flink数据包还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本申请可应用于智慧社区领域中,应用于智慧社区通过Flink进行数据处理的任务中,从而推动智慧城市的建设。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种基于Flink的任务执行装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的基于Flink的任务执行装置300包括:建立模块301、接收模块302、查找模块303、确定模块304以及运行模块305。其中:建立模块301,用于在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同;接收模块302,用于接收用户任务数据,基于所述用户任务数据确定目标Flink版本号;查找模块303,用于基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存;确定模块304,用于获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器;运行模块305,用于运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
在本实施例中,本申请通过将不同版本的Flink数据表放置在不同的子目录文件夹中,实现不同版本的Flink数据包之间的相互隔离。通过用户任务数据确定出目标Flink版本号,并通过类加载器来加载目标Flink数据包,实现了对目标版本的Flink数据包的调用。进一步通过对待处理数据的重新分配操作,实现对各服务器分配的数据量适合,便于服务器对数据的快速处理。本申请能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率
接收模块302包括第一接收子模块、获取子模块、第二接收子模块和第三接收子模块。其中,第一接收子模块用于接收用户任务数据,其中,所述用户任务数据携带有用户名称,根据用户名称在数据库中查找是否存在用户历史日志;获取子模块用于在所述数据库中存在所述用户历史日志时,获取并分析所述用户历史日志,获得初始Flink版本号,并将所述初始Flink版本号发送至用户客户端;第二接收子模块用于当接收到用户客户端发送的确认信号时,将所述初始Flink版本号作为目标Flink版本号;第三接收子模块用于当接收到用户客户端发送的修改信号时,获取所述修改信号携带的Flink版本号,将所述修改信号携带的Flink版本号作为目标Flink版本号。
获取子模块包括获取单元、排序单元和展示单元。其中,获取单元用于获取每个所述用户历史日志中用户调用的Flink版本号,作为历史Flink版本号;排序单元用于确定获得的每个所述历史Flink版本号的数量,并将所述历史Flink版本号根据数量进行降序排序,获得所述历史版本号序列表;展示单元用于将排在第一位的历史Flink版本号作为所述初始Flink版本号,并将所述历史版本号序列表展示在前端页面中,以提供给用户查看。
所述接收模块302还包括调取子模块、计算子模块和版本号确定子模块。其中,调取子模块用于在所述数据库中不存在所述用户历史日志时,获取用户任务数据中的任务函数,并调取关联查找表,其中,所述关联查找表中包括函数标签与Flink版本号,所述函数标签与所述Flink版本号具有关联关系;计算子模块用于基于所述关联查找表,分别计算与各Flink版本号相关联的函数标签,与所述任务函数的重叠率,获得函数重叠率;确定子模块用于将函数重叠率最高的Flink版本号作为目标版本号。
确定模块304包括数据量确定子模块、数量差值计算子模块和数量差值确定子模块。其中,数据量确定子模块用于确定向各服务器分配的待处理数据的数据量;数量差值计算子模块用于将所述数据量两两做差,获得数量差值;数量差值确定子模块用于确定所述数量差值是否大于差值阈值,在所述数量差值大于差值阈值时,确定数据量分配不均匀。
确定模块304还包括拼接子模块和取余子模块。其中,拼接子模块用于在数据量分配不均匀时,调取预设的多个随机数列,并获取每条待处理数据携带的用户序列号,将所述用户序列号与任一所述随机数列进行拼接操作,获得目标序列;取余子模块用于将所述目标序列与服务器的总数量进行取余操作,获得目标服务器号,将所述用户的待处理数据基于对应的目标服务器号,分配给所述目标服务器号所关联的服务器,以完成数据分配。
在本实施例的一些可选的实现方式中,上述装置300还包括:卸载模块,用于查找内存中是否存在Flink代码,在内存中存在所述Flink代码时,卸载内存中加载的所述Flink代码。
本申请通过将不同版本的Flink数据表放置在不同的子目录文件夹中,实现不同版本的Flink数据包之间的相互隔离。通过用户任务数据确定出目标Flink版本号,并通过类加载器来加载目标Flink数据包,实现了对目标版本的Flink数据包的调用。进一步通过对待处理数据的重新分配操作,实现对各服务器分配的数据量适合,便于服务器对数据的快速处理。本申请能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备200包括通过系统总线相互通信连接存储器201、处理器202、网络接口203。需要指出的是,图中仅示出了具有组件201-203的计算机设备200,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器201至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器201可以是所述计算机设备200的内部存储单元,例如该计算机设备200的硬盘或内存。在另一些实施例中,所述存储器201也可以是所述计算机设备200的外部存储设备,例如该计算机设备200上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器201还可以既包括所述计算机设备200的内部存储单元也包括其外部存储设备。本实施例中,所述存储器201通常用于存储安装于所述计算机设备200的操作系统和各类应用软件,例如基于Flink的任务执行方法的计算机可读指令等。此外,所述存储器201还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器202在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器202通常用于控制所述计算机设备200的总体操作。本实施例中,所述处理器202用于运行所述存储器201中存储的计算机可读指令或者处理数据,例如运行所述基于Flink的任务执行方法的计算机可读指令。
所述网络接口203可包括无线网络接口或有线网络接口,该网络接口203通常用于在所述计算机设备200与其他电子设备之间建立通信连接。
在本实施例中,能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于Flink的任务执行方法的步骤。
在本实施例中,能够满足客户对Flink版本频繁变化的需要,避免出现Flink版本调用混乱的情况,不需要开发多套服务提交系统,来支持不同版本的Flink任务,在一套系统中完成不同版本的支持,极大的提升了任务执行的效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种基于Flink的任务执行方法,其特征在于,包括下述步骤:
在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同;
接收用户任务数据,基于所述用户任务数据确定目标Flink版本号;
基于所述目标Flink版本号,对所述父级目录中的子目录文件夹进行查找,获得目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存;
获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器,以完成对待处理数据的分配;
运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
2.根据权利要求1所述的基于Flink的任务执行方法,其特征在于,所述接收用户任务数据,基于所述用户任务数据确定目标Flink版本号的步骤包括:
接收用户任务数据,其中,所述用户任务数据携带有用户名称,根据用户名称在数据库中查找是否存在用户历史日志;
在所述数据库中存在所述用户历史日志时,获取并分析所述用户历史日志,获得初始Flink版本号,并将所述初始Flink版本号发送至用户客户端;
当接收到用户客户端发送的确认信号时,将所述初始Flink版本号作为目标Flink版本号;
当接收到用户客户端发送的修改信号时,获取所述修改信号携带的Flink版本号,将所述修改信号携带的Flink版本号作为目标Flink版本号。
3.根据权利要求2所述的基于Flink的任务执行方法,其特征在于,所述分析所述用户历史日志,获得初始Flink版本号的步骤包括:
获取每个所述用户历史日志中用户调用的Flink版本号,作为历史Flink版本号;
确定获得的每个所述历史Flink版本号的数量,并将所述历史Flink版本号根据数量进行降序排序,获得所述历史版本号序列表;
将排在第一位的历史Flink版本号作为所述初始Flink版本号,并将所述历史版本号序列表展示在前端页面中,以提供给用户查看。
4.根据权利要求2所述的基于Flink的任务执行方法,其特征在于,在所述根据用户名称在数据库中查找是否存在用户历史日志的步骤之后,还包括:
在所述数据库中不存在所述用户历史日志时,获取用户任务数据中的任务函数,并调取关联查找表,其中,所述关联查找表中包括函数标签与Flink版本号,所述函数标签与所述Flink版本号具有关联关系;
基于所述关联查找表,分别计算与各Flink版本号相关联的函数标签,与所述任务函数的重叠率,获得函数重叠率;
将函数重叠率最高的Flink版本号作为目标版本号。
5.根据权利要求1所述的基于Flink的任务执行方法,其特征在于,在所述基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹的步骤之前,还包括:
查找内存中是否存在Flink代码,在内存中存在所述Flink代码时,卸载内存中加载的所述Flink代码。
6.根据权利要求1所述的基于Flink的任务执行方法,其特征在于,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器的步骤包括:
在数据量分配不均匀时,调取预设的多个随机数列,并获取每条待处理数据携带的用户序列号,将所述用户序列号与任一所述随机数列进行拼接操作,获得目标序列;
将所述目标序列与服务器的总数量进行取余操作,获得目标服务器号,将所述用户的待处理数据基于对应的目标服务器号,分配给所述目标服务器号所关联的服务器,以完成数据分配。
7.根据权利要求1所述的基于Flink的任务执行方法,其特征在于,所述根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀的步骤包括:
确定向各服务器分配的待处理数据的数据量;
将所述数据量两两做差,获得数量差值;
确定所述数量差值是否大于差值阈值,在所述数量差值大于差值阈值时,确定数据量分配不均匀。
8.一种基于Flink的任务执行装置,其特征在于,包括:
建立模块,用于在父级目录中建立多个子目录文件夹,并接收携带有版本号的Flink数据包,基于所述版本号将所述Flink数据包存储至对应的子目录文件夹中,其中,所述子目录文件夹的名称与所述版本号相同;
接收模块,用于接收用户任务数据,基于所述用户任务数据确定目标Flink版本号;
查找模块,用于基于所述目标Flink版本号,在所述父级目录中查找到目标子目录文件夹,将所述目标子目录文件夹中的Flink数据包作为目标Flink数据包,并通过类加载器加载所述目标子目录文件夹中的目标Flink数据包至内存;
确定模块,用于获取所述用户任务数据中的任务分配方式和待处理数据,根据所述任务分配方式确定向各服务器分配的待处理数据的数据量是否均匀,在数据量不均匀时,调用预设的多个随机数列,基于所述随机数列重新分配所述待处理数据至各服务器;
运行模块,用于运行所述内存中的目标Flink数据包,以调用各服务器处理所述待处理数据。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的基于Flink的任务执行方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于Flink的任务执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110698927.7A CN113254106B (zh) | 2021-06-23 | 2021-06-23 | 基于Flink的任务执行方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110698927.7A CN113254106B (zh) | 2021-06-23 | 2021-06-23 | 基于Flink的任务执行方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254106A true CN113254106A (zh) | 2021-08-13 |
CN113254106B CN113254106B (zh) | 2022-04-19 |
Family
ID=77189341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110698927.7A Active CN113254106B (zh) | 2021-06-23 | 2021-06-23 | 基于Flink的任务执行方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254106B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893860A (zh) * | 2023-07-20 | 2023-10-17 | 杭州玳数科技有限公司 | 一种将Chunjun同步任务中不同版本数据源进行隔离的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170242889A1 (en) * | 2016-02-24 | 2017-08-24 | Salesforce.Com, Inc. | Cache Based Efficient Access Scheduling for Super Scaled Stream Processing Systems |
CN112379887A (zh) * | 2020-11-30 | 2021-02-19 | 天翼电子商务有限公司 | 一种flink state状态迁移方案 |
CN112506939A (zh) * | 2020-12-08 | 2021-03-16 | 福建省海峡信息技术有限公司 | 一种基于Flink流式引擎的CEP规则更新方法 |
CN112558995A (zh) * | 2020-12-24 | 2021-03-26 | 恩亿科(北京)数据科技有限公司 | 一种基于TBDS Hadoop的Flink集成方法和系统 |
CN112965936A (zh) * | 2021-02-26 | 2021-06-15 | 苏宁金融科技(南京)有限公司 | 一种异构分布式模型的处理方法、装置、设备和存储介质 |
-
2021
- 2021-06-23 CN CN202110698927.7A patent/CN113254106B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170242889A1 (en) * | 2016-02-24 | 2017-08-24 | Salesforce.Com, Inc. | Cache Based Efficient Access Scheduling for Super Scaled Stream Processing Systems |
CN112379887A (zh) * | 2020-11-30 | 2021-02-19 | 天翼电子商务有限公司 | 一种flink state状态迁移方案 |
CN112506939A (zh) * | 2020-12-08 | 2021-03-16 | 福建省海峡信息技术有限公司 | 一种基于Flink流式引擎的CEP规则更新方法 |
CN112558995A (zh) * | 2020-12-24 | 2021-03-26 | 恩亿科(北京)数据科技有限公司 | 一种基于TBDS Hadoop的Flink集成方法和系统 |
CN112965936A (zh) * | 2021-02-26 | 2021-06-15 | 苏宁金融科技(南京)有限公司 | 一种异构分布式模型的处理方法、装置、设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
FRANCESCO VERSACI 等: "Scalable genomics: From raw data to aligned reads on Apache YARN", 《2016 IEEE INTERNATIONAL CONFERENCE ON BIG DATA (BIG DATA)》 * |
汪志峰 等: "异构Flink集群中负载均衡算法研究与实现", 《南京大学学报(自然科学)》 * |
陈敏: "北斗监测接收机海量数据处理与存储架构研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893860A (zh) * | 2023-07-20 | 2023-10-17 | 杭州玳数科技有限公司 | 一种将Chunjun同步任务中不同版本数据源进行隔离的方法 |
CN116893860B (zh) * | 2023-07-20 | 2024-05-10 | 杭州玳数科技有限公司 | 一种将Chunjun同步任务中不同版本数据源进行隔离的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113254106B (zh) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947789B (zh) | 一种多数据库的数据处理的方法、装置、计算机设备及存储介质 | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
CN111800462A (zh) | 微服务实例处理方法、装置、计算机设备及存储介质 | |
CN112380227A (zh) | 基于消息队列的数据同步方法、装置、设备及存储介质 | |
CN112631751A (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN112631924A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN112199442A (zh) | 分布式批量下载文件方法、装置、计算机设备及存储介质 | |
CN113254445A (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN113254106B (zh) | 基于Flink的任务执行方法、装置、计算机设备及存储介质 | |
CN111752944A (zh) | 数据分摊方法、装置、计算机设备及存储介质 | |
CN114281552A (zh) | 一种基于有向无环图的任务调度方法、装置、设备及介质 | |
CN114564294A (zh) | 智能服务编排方法、装置、计算机设备及存储介质 | |
CN112308590A (zh) | 一种参数处理方法、装置以及计算设备、存储介质 | |
CN112860662B (zh) | 自动化生产数据血缘关系建立方法、装置、计算机设备及存储介质 | |
CN114070847B (zh) | 服务器的限流方法、装置、设备及存储介质 | |
WO2024041056A1 (zh) | 储位分配方法和装置、电子设备、计算机可读介质 | |
CN112559866A (zh) | 大学图书阅读推荐方法、装置、设备及存储介质 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
CN112416934A (zh) | hive表增量数据同步方法、装置、计算机设备及存储介质 | |
CN111291045A (zh) | 服务隔离数据传输方法、装置、计算机设备及存储介质 | |
CN115292580A (zh) | 数据查询方法、装置、计算机设备及存储介质 | |
CN114615325A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN114186976A (zh) | 工作流程流转方法、装置、计算机设备及存储介质 | |
CN113626438A (zh) | 一种数据表管理的方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |