CN114416098A - 实时任务开发方法、平台、电子设备及存储介质 - Google Patents
实时任务开发方法、平台、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114416098A CN114416098A CN202210057037.2A CN202210057037A CN114416098A CN 114416098 A CN114416098 A CN 114416098A CN 202210057037 A CN202210057037 A CN 202210057037A CN 114416098 A CN114416098 A CN 114416098A
- Authority
- CN
- China
- Prior art keywords
- real
- time task
- code
- development
- application
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种实时任务开发方法、平台、电子设备及存储介质,其方法包括:根据实时任务的开发形式,获取实时任务的代码相关文件;将代码相关文件通过指定路径上传至HDFS系统;根据应用部署指令,拼接代码相关文件的执行命令;执行该执行命令,以将应用提交至Flink集群,以使Flink集群通过指定路径到HDFS系统,获取并执行代码相关文件;接收所Flink集群的反馈信息,确定实时任务的执行情况。本申请中开发人员不需要申请堡垒机或VPN权限,不需要操作生产服务器,不需要编写shell命令,统一交给平台处理,即可实现实时任务的快速、高效发布,节省了实时任务的开发和整体运维成本,显著提高了开发人员的工作效率。
Description
技术领域
本申请涉及软件开发技术领域,具体涉及一种实时任务开发方法、平台、电子设备及存储介质。
背景技术
大数据实时任务开发是指提交实时任务到目前最常用的Apache Flink集群系统,包括以sql或jar两种形式,Apache Flink集群系统提供sql和jar提交的功能。
现有技术中的实时任务的发布方法需要到Flink集群的主节点master上,将sql或jar上传到服务器上,然后手动运行shell命令,以提交任务。当实时任务的开发语言为sql,还需要将udf jar同时上传到服务器,附加上udf jar shell命令。
这种提交实时任务的方式面临的问题是需要耗费开发人员大量时间去组装出一个完全正确的shell命令,一旦shell命令拼接错误,需要作出及时调整;另外,当出现发布故障时,需要回滚sql脚本或jar包,这些文件的备份是一个繁琐易出错的工作,人工发布有时会出现忘记备份哪些文件,或备份时间文件太多管理不过来的情况,耗费大量时间成本和人力成本;且checkpoint启动也需要从服务器上找到checkpoint的文件来拼接复杂的shell命令,完全依赖人工操作也容易出现故障。
发明内容
针对上述问题,本申请实施例提供了一种实时任务开发方法、平台、电子设备及存储介质,以克服或部分克服现有技术的不足之处。
第一方面,本申请实施例提供了一种实时任务开发方法,所述方法由实时任务发开平台实现,其中,所述实时任务开发平台通信连接Flink集群和HDFS系统;所述方法包括:
根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;
接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
第二方面,本申请实施例还提供了一种实时任务开发平台,实时任务开发平台至少包括:代码开发和管理单元、应用管理单元、项目管理单元;所述应用管理单元分别连接所述代码开发和管理单元以及所述项目管理单元;
所述实时任务开发平台可通信连接Flink集群和HDFS系统,所述Flink集群与所述HDFS系统通信连接;
其中,所述应用管理单元,用于根据所述实时任务的开发形式,从所述代码开发和管理单元或所述项目管理单元获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
所述应用管理单元,还用于根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;以及用于接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行上述任一的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行上述任一的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请提供了一种基于实时任务开发平台的开发方法,该实时任务开发平台支持脚本编写和发布,且支持编写shell命令,在该平台上,开发人员不需要申请堡垒机或VPN权限,不需要操作生产服务器,不需要编写shell命令,统一交给平台处理,即可实现实时任务的快速、高效发布,使得开发人员只需专注业务逻辑,极大程度上节省了实时任务的开发和整体运维成本,显著提高了开发人员的工作效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1-a示出了根据本申请一个实施例的实时任务开发平台的结构示意图;
图1-b示出了根据本申请另一个实施例的实时任务开发平台的结构示意图;
图1-c示出了根据本申请再一个实施例的实时任务开发平台的结构示意图;
图2示出了根据本申请的另一个实施例的实时任务开发方法的流程示意图;
图3示出了根据本申请的另一个实施例的实时任务开发方法的流程示意图;
图4示出了根据本申请的又一个实施例的实时任务开发方法的流程示意图;
图5示出了根据本申请的又一个实施例的实时任务开发方法的测试过程的流程示意图;
图6为本申请实施例中一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
现有技术中,采用人工方式向Apache Flink集群提交实时任务的需要消耗大量的人力成本和时间成本,且工作繁琐、容易出现错误。
对此,本申请提供了一种实时任务开发方法,该方法由实时任务发开平台实现,其中,实时任务开发平台通信连接Flink集群和HDFS系统。
图1-a示出了根据本申请一个实施例的实时任务开发平台的结构示意图,从图1可以看出,实时任务开发平台100至少包括:代码开发和管理单元110、应用管理单元120、项目管理单元130;应用管理单元120分别连接代码开发和管理单元110和项目管理单元130。
实时任务开发平台100可通信连接Apache Flink集群200,后面简称Flink集群,和HDFS系统300,Flink集群200与HDFS系统300通信连接。
其中,代码开发和管理单元110用于支持代码的开发以及管理工作;应用管理单元120可用于支持应用的创建以及部署等工作;项目管理单元130用于支持项目的建立及管理工作等,在项目管理单元130可用于创建项目,可以在项目里设置CVS地址、分支、module、clone git的用户名与密码等等,从而实现对一个项目的管理。
本申请提供的方法是基于实时任务开发平台实现的,所述方法包括:
应用创建步骤S210:根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统。
大数据实时任务开发,是指提交实时任务到目前最常用的Apache Flink集群系统,包括以sql或jar两种形式。现有技术中,对于实时任务的提交通常采用人工的方式,具体的,需要人工到Flink集群的master节点上,将SQL语句或jar包上传到服务器上,然后手动组装并运行shell命令;若以SQL语言的形式提交实时任务,还需要将其自定义支撑文件包(udf jar),以及自定义支撑文件的执行命令(udf jar shell命令)一同上传服务器。
这种人工的操作非常的耗时耗力,且容易出现错误,如在长期的人工操作过程中,面临的问题是需要耗费开发人员大量时间去组装出一个完全正确的shell命令,shell命令一旦出现拼接错误,需要及时作出调整;当出现发布故障需要脚本回滚时,脚本文件的备份是一个繁琐易出错的工作,文件过多,人工管理困难;checkpoint启动也需要从服务器上找到checkpoint的文件拼接的复杂的shell命令。
针对上述情况,本申请提供了一种实时任务开发平台以及基于该平台的实时任务开发方法,实时任务开发平台能提供一站式开发管理,包括但不限于脚本编写发布,还可以包括测试、上线、回滚、监控、重启和日志查看等等,开发人员不需要申请堡垒机或VPN权限,操作生产服务器,不需要编写shell脚本,统一交给平台处理,开发人员只需专注业务逻辑,节省运维成本,同时该平台还可以对运维权限进行管理,限定发布修改权限,进行角色分组等,方便开发人员使用。
实时任务的开发主要分为三个步骤:实时任务的应用的创建、实时任务的应用的部署,以及实时任务运行的监测。
本申请中,实时任务的应用可以理解为一个任务管理对象,可以配置任务的参数、指定任务是sql还是jar、输入sql或指定项目里的jar、应用支持任务的备份升级等工作。
应用创建步骤S210具体包括:S211:根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;以及S212:将所述代码相关文件通过指定路径上传至所述HDFS系统。
S211:根据所述实时任务的开发形式,获取所述实时任务的代码相关文件时,首先,根据任务的开发形式,获取与任务相关的代码相关文件,在本申请中,实时任务主要有两种开发形式,一种是以Jar包提交的实时任务,另外一种是以SQL语言提交的实时任务。其中,Jar包文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源,如文本、图片等,文件到一个文件,以便开发Java平台应用软件或库。SQL语言,为结构化查询语言(Structured Query Language),简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
根据任务的开发形式,获取与任务相关的代码相关文件,若任务的开发形式为Jar包,则获取含有实时任务开发代码的相关文件,这里称为代码相关文件,即实时任务的Jar包,需要说明的是,代码相关文件中除了含有实时任务的开发代码外,还包括该实时任务的其他必要文件,如实时任务依赖的第三方代码Jar包等。
若任务的开发形式为SQL语言,则同样获取含有实时任务开发代码的相关文件,代码相关文件中除了含有实时任务的开发代码外,还包括该实时任务的其他必要文件,如SQL的自定义支撑函数等。
对于获取的方式,不申请不作限定,本申请提供的实时任务发开平台支撑代码的开发和管理工作,软件工作人员可以直接通过本申请的实时任务开发平台的代码开发和管理单元110输入和管理代码。本申请也支持项目的管理工作,一个实时任务的开发归属于一个项目,因此,本申请的应用管理单元120,可以根据部署的目标应用,到项目管理单元130拉取对应的代码相关文件。
S212:将所述代码相关文件通过指定路径上传至所述HDFS系统。
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。在这里,HDFS可以理解为一个代码存储的地方。
将一个实时任务的代码相关文件存储与HDFS时,Flink集群要运行该实时任务时,可到HDFS中获取相关文件。将所述代码相关文件是通过指定路径上传至所述HDFS系统的,后续Flink集群也是通过该指定路径到到HDFS中获取相关文件。
应用部署步骤S220:S221根据应用部署指令,拼接所述代码相关文件的执行命令;S222执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件。
在完成实时任务的应用的创建工作后,即可执行应用的部署,在应用的部署过程,即是实时任务的发布过程,首先拼接所述代码相关文件的执行命令即shell命令,在现有技术中,shell命令是通过人工手动编写而成的,一个完全正确的shell命令需要耗费开发人员大量时间去组装,若shell命令拼接错误,需要作出及时调整,有时错误比较隐蔽,难以发现,这就为实时任务的开发带来很多麻烦。而在本申请中,支持自动拼接shell命令,以下是一个完整的shell命令样稿(demo),在进行shell命令的拼接时,可应用部署指令,获取到目标应用的相关信息,然后按照下面样稿的格式,完成shell命令的拼接,其中,shell命令样稿为:
在完成shell命令的拼接工作后,执行该命令,即可将实时任务发布到Flink集群,Apache Flink集群是高效和分布式的通用数据处理平台,其声明式的数据分析开源系统,结合了分布式MapReduce类平台的高效,灵活的编程和扩展性,同时在并行数据库发现查询优化方案。Flink集群系统是目前大数据实时任务开发最常用的数据处理平台,在这里FLink集群可以理解为一个运行实时任务,并可以返回运行情况的地方。
FLink集群在接到通过运行shell提交至FLink集群的实时任务后,通过前述的指定路径到HDFS系统中,请求或主动拉取与实时任务对应的代码相关文件,然后对代码相关文件进行解析和运行,得到实时任务的运行结果,并将该结果返回实时任务发开平台。
以及任务运行监测步骤S230:接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
实时任务发开平台根据Flink集群的反馈信息,确定实时任务是否执行成功,若成功,则说明,实时任务发布成功;若失败,则说明实时任务开发中有问题,可以提醒开发人员进一步调试。
从图2所示的实施例可以看出,本申请提供了一种基于实时任务开发平台的开发方法,该实时任务开发平台支持脚本编写和发布,且支持编写shell命令,在该平台上,开发人员不需要申请堡垒机或VPN权限,不需要操作生产服务器,不需要编写shell命令,统一交给平台处理,即可实现实时任务的快速、高效发布,使得开发人员只需专注业务逻辑,极大程度上节省了实时任务的开发和整体运维成本,显著提高了开发人员的工作效率。
在本申请的一些实施了中,在上述方法中,在所述拼接所述代码相关文件的执行命令之前,还包括:备份所述应用的配置参数。
当实时任务发布出现故障时,就需要回滚,sql脚本和jar脚本的回滚,都需要实时任务的应用的配置参数,对于配置参数文件的备份是一个繁琐易出错的工作,人工进行备份,经常会出现在发布之前忘记备份哪些文件,或备份时间文件太多管理不过来的情况,因此不仅耗费大量时间,还经常出现错误。
对此,本申请提供的实时任务开发平台支持自动备份功能,具体在,接到应用部署指令后,在拼接shell命令之前,将该应用的配置参数全部备份,尤其是正对正在运行的应用来说,对其配置参数进行全部备份是非常必要的。
以下针对实时任务的开发形式不同,介绍了不同的处理流程。针对开发形式为Jar包的,请参考图1-b,在本申请的一些实施例中,所述实时任务发开平台100还通信连接代码管理平台400;所述根据所述实时任务的开发形式,获取所述实时任务的代码相关文件,包括:确定在所述实时任务发开平台上,与所述实时任务的应用关联的第一目标项目;对所述第一目标项目进行解析,确定在所述代码管理平台上,与所述第一目标项目关联的的第二目标项目;根据第二目标项目,到所述代码管理平台拉取与所述实时任务对应的第一代码;对所述第一代码进行编译,形成所述实时任务的代码相关文件。
也就是说,在进行实时任务的开发时,若开发形式为Jar包形式,则可首先在实时任务发开平台100,具体为项目管理单元130上创建(build)一个项目,该项目与实时任务的应用是关联的,同时,可以在第三方代码管理平台400上,如GIT平台,建立一个项目,该项目与项目管理单元130上创建的项目具有关联关系,开发人员是在第三方代码管理平台400进行实时任务的开发工作,这时若要进行实时任务的创建,则首先根据实时任务的应用,确定与其在在所述实时任务发开平台上,与所述实时任务的应用关联的第一目标项目;对所述第一目标项目进行解析,确定在所述代码管理平台上,与所述第一目标项目关联的的第二目标项目;根据第二目标项目,到所述代码管理平台拉取与所述实时任务对应的第一代码;对所述第一代码进行编译,形成所述实时任务的代码相关文件。
对于Jar包来说,其代码是需要编译的,在有技术中,这个过程也是人工进行的,而在本申请中,支持代码的自动编译,实时任务发开平台100在获取到实时任务的第一代码后,将其编译为jar包的形式。
图3示出了根据本申请的另一个实施例的实时任务开发方法的流程示意图,从图3可以看出,本实施例包括:
A1、创建实时任务的管理项目:
A11、build第一项目,该第一项目与实时任务关联,设置第一项目的CVS地址、分支、module、clone git的用户名与密码等配置参数。
A12、在GIT平台上,创建第二项目,该第二项目与第一项目关联,开发人员可在GIT平台的第二项目进行代码编写工作。
A2、创建实时任务的应用:
A21、确定与实时任务的应用关联第一项目,确定与第一项目关联的第二项目,从GIT平台上的第二项目中,拉取实时任务的开发代码。
A22、对拉取的代码进行编译和打包,形成实时任务的Flink Jar文件。
A23、将实时任务的Flink Jar文件上传至HDFS系统。
A3、部署实施任务的应用:
A31:备份实施任务的应用的配置参数。
A32:拼接Shell命令。
A33:执行Shell命令,将实时任务提交至Flink集群,以使Flink集群到HDFS系统拉取实时任务的Flink Jar文件,并进行运行,以及返回运行情况信息。
A4、接收Flink集群返回的运行成功的信息;还可以启动监控任务,对实时任务的运行以及Flink集群的运行情况进行监控。
在本申请的一些实施例中,在上述方法中,所述实时任务的开发形式为SQL语言;所述根据所述实时任务的开发形式,获取所述实时任务的代码相关文件,包括:提供前端界面,并通过所述前端界面接收所述代码相关文件,其中,所述代码相关文件包括:SQL语言代码,以及SQL自定义支持文件。
也就是说,如果实时任务的开发形式为SQL语言,则开发人员可以直接实时任务开发平台上编写SQL语句,具体的,可以在代码开发和管理单元上进行编写。需要说明的是,SQL语言是不需要编译的,直接形成代码相关文件flink run flink-sql-submit.jar-ftest.sql;其中的flink-sql-submit.jar是专用来解析sql提交任务的jar。
但是通常需要SQL自定义支持文件,即udf(user defined functions)用户自定义函数。譬如一个简单的场景select a from table1;a字段是的内容是复杂的json字符串,”{\“name\”:\”小明\”,\”age\”:18}”需要获取name与agesql无法支持,需要写个json.jar里面有个getJsonValue的函数,sql可以写为select getJsonValue(a,”name”),getJsonValue(a,”age”)from table1;shell命令增加-C json.jar即可。
图4示出了根据本申请的又一个实施例的实时任务开发方法的流程示意图,从图4可以看出,本实施例包括:
B1、创建实时任务的应用:
B11、获取开发人员在平台编写的SQL语句,以及SQL自定义支持文件;
B12、将SQL语句,以及SQL自定义支持文件上传至HDFS系统。
B2、部署实施任务的应用:
B31:备份实施任务的应用的配置参数。
B32:拼接Shell命令。
B33:执行Shell命令,将实时任务提交至Flink集群,以使Flink集群到HDFS系统拉取实时任务的相关文件,并进行运行,以及返回运行情况信息。
B4、接收Flink集群返回的运行成功的信息,还可以启动监控任务,对实时任务的运行以及Flink集群的运行情况进行监控。
在本申请的一些实施例中,所述实时任务开发平台还通信连接KAFKA系统;所述方法还包括:将目标mock数据提交至KAFKA系统,以使Flink集群消费KAFKA系统上的目标mock数据,产生实时任务的运行结果,并将实时任务的运行结果返回至KAFKA系统;从KAFKA系统获取实时任务的运行结果,并根据assert参数确定对实时任务的测试结果。
请参考图1-c,实时任务开发平台100还可以包括任务测试单元140,并可同信连接KAFKA系统500,在实时任务已经发布到Flink集群上时,对实时任务的测试可参考图5中的流程:
首先,创建测试用例,测试用例的创建离不开数据的支撑,首先获取mock数据,本申请对mock数据的来源不作限制,数据来源可以具有多样性,如输入所有的mock行数据;以文件形式上传;可以摘取生产一天的数据,相关信息做安全处理,修改相关信息;参照格式,自动批量随机生成,设置行数等等。
在获取mock数据时,可以选择一个主题(topic),使得数据更加具有针对性。
然后,基于这些mock数据可以创建测试用例,在创建测试用例时,对于上述的mock数据进行再一次的遴选,并基于选择出来的mock数据进行测试用例的创建。
测试用例的创建可以是人工编写,本申请的实时任务开发平台也支持测试用例的自动化智能扩展,如根据测试用例中各元素的格式、各元素的属性,生成测试用例模板,然后将mock数据自动填充到测试用例模板中,从而形成更多的测试用例。
创建测试用例的assert参数,该assert参数是人工设置的一个预期的参数,如assert参数为1,则表示测试用例运行成功,如为0,则表示测试用例运行失败。
进行完上述的测试准备工作后,可以开始测试用例的运行,首先要将选择出的mock数据上传至KAFKA,以使Flink集群能够消费mock数据;在flink集群运行的实时任务开始消费KAFKA上的mock数据,即将其作为任务输入,flink集群在得到实时任务的结果后,会输出结果到KAFKA系统,实时任务开发平台在一段时间后开始从KAFKA获取输出结果,并与assert参数做比较,以验证结果,若从KAFKA获取的输出结果满足设置的assert参数,则说明实时任务开发成功;否则,说明存在问题。
需要说明的是,如果实时任务还未发布到Flink集群,在测试前,需要将实时任务发布的Flink集群,具体方法可参照前述方法,不再赘述。
在本申请的一些实施例中,本申请提供的实时任务开发平台不仅能提供脚本编写发布和测试;还能够提供上线、回滚、监控、重启、日志查看等等一站式开发管理工作,不再一一列举。
在本申请的一些实施例中,所述方法还包括:按照预设时间周期,到所述Flink集群获取所述Flink集群的运行情况,和/或所述实时任务的执行情况,以对所述Flink集群的运行情况和/或所述实时任务的执行情况进行监测。
实时任务的执行情况,主要指实时任务是否正常运行;Flink集群的运行情况,主要是Flink集群的内存占用情况,本申请支持实时监控实时任务的执行情况和/或Flink集群的运行情况,以便开发人员根据不同的情况,对实时任务的部署及时做出调整,如可以启动定时任务实现上述目的。
图6是本申请的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成实时任务开发平台装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;
接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
上述如本申请图1所示实施例揭示的实时任务开发平台装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1中实时任务开发平台装置执行的方法,并实现实时任务开发平台装置在图1所示实施例的功能,本申请实施例在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中实时任务开发平台装置执行的方法,并具体用于执行:
根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;
接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种实时任务开发方法,其特征在于,所述方法由实时任务发开平台实现,其中,所述实时任务开发平台通信连接Flink集群和HDFS系统;
所述方法包括:
根据所述实时任务的开发形式,获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;
接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
2.根据权利要求1所述的方法,其特征在于,在所述拼接所述代码相关文件的执行命令之前,还包括:
备份所述应用的配置参数。
3.根据权利要求1所述的方法,其特征在于,所述实时任务的开发形式为Jar包;所述实时任务发开平台还通信连接代码管理平台;
所述根据所述实时任务的开发形式,获取所述实时任务的代码相关文件,包括:
确定在所述实时任务发开平台上,与所述实时任务的应用关联的第一目标项目;
对所述第一目标项目进行解析,确定在所述代码管理平台上,与所述第一目标项目关联的第二目标项目;
根据第二目标项目,到所述代码管理平台拉取与所述实时任务对应的第一代码;
对所述第一代码进行编译,形成所述实时任务的代码相关文件。
4.根据权利要求1所述的方法,其特征在于,所述实时任务的开发形式为SQL语言;
所述根据所述实时任务的开发形式,获取所述实时任务的代码相关文件,包括:
提供前端界面,并通过所述前端界面接收所述代码相关文件,其中,所述代码相关文件包括:SQL语言代码,以及SQL自定义支持文件。
5.根据权利要求1所述的方法,其特征在于,所述实时任务开发平台还可通信连接KAFKA系统;
所述方法还包括:
将目标mock数据提交至KAFKA系统,以使Flink集群消费KAFKA系统上的目标mock数据,产生实时任务的运行结果,并将实时任务的运行结果返回至KAFKA系统;
从KAFKA系统获取实时任务的运行结果,并根据assert参数确定对实时任务的测试结果。
6.根据权利要求1~5中任一项所述的方法,其特征在于,所述方法还包括:按照预设时间周期,到所述Flink集群获取所述Flink集群的运行情况,和/或所述实时任务的执行情况,以对所述Flink集群的运行情况和/或所述实时任务的执行情况进行监测。
7.一种实时任务开发平台,其特征在于,实时任务开发平台至少包括:代码开发和管理单元、应用管理单元、项目管理单元;所述应用管理单元分别连接所述代码开发和管理单元,以及所述项目管理单元;
所述实时任务开发平台可通信连接Flink集群和HDFS系统,所述Flink集群与所述HDFS系统通信连接;
其中,所述应用管理单元,用于根据所述实时任务的开发形式,从所述代码开发和管理单元或所述项目管理单元获取所述实时任务的代码相关文件;将所述代码相关文件通过指定路径上传至所述HDFS系统;
所述应用管理单元,还用于根据应用部署指令,拼接所述代码相关文件的执行命令;执行所述执行命令,以将所述应用提交至Flink集群,以使所述Flink集群通过所述指定路径到所述HDFS系统,获取并执行所述代码相关文件;以及用于接收所述Flink集群的反馈信息,确定所述实时任务的执行情况。
8.根据权利要求7所述的平台,其特征在于,所述实时任务开发平台还包括任务测试单元,所述实时任务开发平台还可通信连接KAFKA系统;
所述KAFKA系统,用于接收所述任务测试单元提交的目标mock数据,以使所述Flink集群消费所述KAFKA系统上的所述目标mock数据,产生实时任务的运行结果,并接收所述Flink集群返回的实时任务的运行结果;
所述任务测试单元,用于从所述KAFKA系统获取实时任务的运行结果,并根据assert参数确定对实时任务的测试结果。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行所述权利要求1~6所述方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述权利要求1~6所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210057037.2A CN114416098A (zh) | 2022-01-18 | 2022-01-18 | 实时任务开发方法、平台、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210057037.2A CN114416098A (zh) | 2022-01-18 | 2022-01-18 | 实时任务开发方法、平台、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416098A true CN114416098A (zh) | 2022-04-29 |
Family
ID=81272453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210057037.2A Pending CN114416098A (zh) | 2022-01-18 | 2022-01-18 | 实时任务开发方法、平台、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416098A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756586A (zh) * | 2022-11-25 | 2023-03-07 | 中电金信软件有限公司 | Flink作业的执行方法、装置、计算机设备和存储介质 |
CN116450668A (zh) * | 2023-04-20 | 2023-07-18 | 广州飞狮数字科技有限公司 | 一种实时计算任务开发方法及系统 |
-
2022
- 2022-01-18 CN CN202210057037.2A patent/CN114416098A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756586A (zh) * | 2022-11-25 | 2023-03-07 | 中电金信软件有限公司 | Flink作业的执行方法、装置、计算机设备和存储介质 |
CN115756586B (zh) * | 2022-11-25 | 2024-01-19 | 中电金信软件有限公司 | Flink作业的执行方法、装置、计算机设备和存储介质 |
CN116450668A (zh) * | 2023-04-20 | 2023-07-18 | 广州飞狮数字科技有限公司 | 一种实时计算任务开发方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399083B (zh) | 一种系统部署方法、装置、电子设备和存储介质 | |
CN109885316B (zh) | 基于kubernetes的hdfs-hbase部署方法及装置 | |
US9274811B1 (en) | System and method for cloud provisioning and application deployment | |
US8166458B2 (en) | Method and system for automated distributed software testing | |
CN114416098A (zh) | 实时任务开发方法、平台、电子设备及存储介质 | |
CN110825420A (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
CN110515795B (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
CN112835924A (zh) | 实时计算任务处理方法、装置、设备及存储介质 | |
CN111930465A (zh) | 一种基于Kubernetes的达梦主从集群部署方法和装置 | |
US9542173B2 (en) | Dependency handling for software extensions | |
US20070234328A1 (en) | File handling for test environments | |
US20200371902A1 (en) | Systems and methods for software regression detection | |
US10620854B1 (en) | Validating data for deployment | |
CN112346818A (zh) | 一种容器应用部署方法、装置、电子设备和存储介质 | |
CN116049207A (zh) | 应用程序sql脚本处理方法、装置、处理器及电子设备 | |
CN113535141A (zh) | 数据库操作代码的生成方法及装置 | |
US20200409669A1 (en) | Technique for transforming a standard messaging component to a customized component | |
CN115220863A (zh) | 容器应用的运维方法、装置、计算机设备和存储介质 | |
CN114064503A (zh) | 一种ui自动化测试方法、装置、电子设备及存储介质 | |
CN114443239B (zh) | 一种注入容器的方法及装置 | |
CN116954699A (zh) | 前端工程的依赖检测处理方法及装置 | |
JP2022531736A (ja) | Dbmsにおけるサービス管理 | |
CN115309421A (zh) | 单点系统的静态变量同步方法、装置、设备及存储介质 | |
CN113918162A (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 |