CN110532044B - 一种大数据批处理方法、装置、电子设备及存储介质 - Google Patents
一种大数据批处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110532044B CN110532044B CN201910790499.3A CN201910790499A CN110532044B CN 110532044 B CN110532044 B CN 110532044B CN 201910790499 A CN201910790499 A CN 201910790499A CN 110532044 B CN110532044 B CN 110532044B
- Authority
- CN
- China
- Prior art keywords
- application
- sub
- calling
- execution
- applications
- 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.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 238000003672 processing method Methods 0.000 title claims description 19
- 238000000034 method Methods 0.000 claims abstract description 112
- 238000012545 processing Methods 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000012805 post-processing Methods 0.000 claims description 12
- 238000011423 initialization method Methods 0.000 claims description 11
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000013468 resource allocation Methods 0.000 claims description 7
- 238000012360 testing method Methods 0.000 abstract description 10
- 238000012423 maintenance Methods 0.000 abstract description 8
- 239000002699 waste material Substances 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 14
- 238000012986 modification Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000010453 quartz Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种大数据批处理方法、装置、电子设备及存储介质,提供了将多个子应用整合调度的方法,用以解决把子应用写在一个主应用里导致的维护测试复杂问题。该方法中,主应用借助调用对象实现对子应用的调用,所以可将资源分配给主应用而不用为每个子应用都分配资源。此外,主应用中调用的子应用包含多个时,各子应用以主应用规定的一种执行方式执行。上述方法中,避免了多个子应用执行时存在的重复资源浪费的问题,并且将多个子应用写在一个主应用中减低了维护测试的复杂度。
Description
技术领域
本发明涉及大数据处理技术领域,尤其涉及一种大数据批处理方法、装置、电子设备及存储介质。
背景技术
大数据批处理应用的实际应用中,存在多个应用间共用资源的情况,造成重复资源浪费。如,Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。实际应用时,多个Spark应用在运行过程中,可能会使用同一接口读取同样的信息,那么同一接口的调用或同样信息的反复读取、缓存、存储都会造成重复资源浪费。
故此,为了减少重复资源浪费,相关技术中将所有应用业务都写在一个大应用中,如将所有Spark应用写在一个总的Spark应用中,但该解决方案存在着维护测试复杂的问题。
发明内容
本发明提供一种大数据批处理方法、装置、电子设备及存储介质,以至少解决相关技术中将多个子应用写在一个主应用中存在的维护测试复杂的问题。
本发明的技术方案如下:
根据本发明实施例的第一方面,提供一种大数据批处理方法,包括:
为主应用分配资源,所述主应用中包括各子应用的调用对象,且子应用与调用对象一一对应,所述子应用为大数据批处理应用;
根据分配的资源,执行所述主应用;
在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程。
可选的,调用的子应用大于1个时,各子应用以主应用规定的一种执行方式执行,所述执行方式包括:并行执行、串行执行、部分第一子应用并行执行且部分第二子应用串行执行。
可选的,所述调用对象中包括子应用标识、子应用的调用接口,所述调用接口中包括子应用的初始化方法、业务逻辑的执行方法,以及子应用结束后的后处理方法;
所述通过调用对象调用子应用,包括:
通过调用对象中的子应用标识确定被调用的子应用;
通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化;
在初始化后,通过各子应用的执行方法,执行各子应用;
在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
可选的,为主应用分配资源之前,所述方法还包括:
接收对主应用中的调用对象的修改指令;
根据所述修改指令修改相应的调用对象。
可选的,为主应用分配资源之前,所述方法还包括:
若主应用和子应用基于Apache Spark框架运行,则将子应用的标识和调用接口分别封装到其对应的工作流节点中;
将所述工作流节点作为子应用的调用对象;
或,
若主应用和子应用基于Apache Flink框架运行,则将子应用的标识和调用接口分别根据Apache Flink框架的接口API格式进行封装;
将封装后的API接口作为子应用的调用对象。
可选的,为主应用分配资源之前,所述方法还包括:
配置至少一种调度周期的代码作业调度器;
确定子应用的调度周期,并将子应用的标识配置到其对应调度周期的代码作业调度器中;
在执行主应用通过调用对象调用子应用的过程中,所述方法还包括:
针对各子应用,根据所述子应用的标识确定对应的所需的代码作业调度器;以及,
根据确定的代码作业调度器的调度周期对所述子应用进行调度。
可选的,为主应用分配资源之前,所述方法还包括:
将获取数据资源的接口封装为统一数据接口;
在执行所述主应用的过程中,所述方法还包括:
若在缓存中未查找到需要访问的指定数据资源时,通过所述统一数据接口获取所述指定数据资源;并,
在确定所述指定数据资源对应的资源引用计数器的值大于第一预设值时,则将获取的所述指定资源存储至缓存中;以及,
针对每个数据资源,若需要访问该数据资源的任一子应用运行结束时,将该数据资源的资源引用计数器的值减小第二预设值;且,当该数据资源的资源引入计数器的值为第三预设值时,释放该数据资源的缓存;
其中,所述第三预设值用于表示需要访问该数据资源的全部子应用运行结束。
可选的,为主应用分配资源之前,所述方法还包括:
为每个数据资源分配唯一标识id;
确定每个唯一标识id的数据资源对应的资源引用计数器的初始值,所述资源引用计数器的初始值为所有需要访问该id的数据资源的子应用的总数。
可选的,在执行所述主应用的过程中,所述方法还包括:
针对主应用,若该主应用中的任一子应用运行结束时,将全局计数器的值减小第四预设值;且当该全局计数器的值为第五预设值时,则中断该主应用执行;其中,
中断该主应用的执行后,重启该主应用再进行结束该主应用的操作。
可选的,为主应用分配资源之前,所述方法还包括:
为每个调用对象分配唯一id;
确定全局计数器的初始值,所述全局计数器的初始值为所有需要运行的调用对象id的总数。
根据本发明实施例的第二方面,提供一种大数据批处理应用的装置,包括:
资源分配模块,被配置为执行为主应用分配资源,所述主应用中包括各子应用的调用对象,且子应用与调用对象一一对应,所述子应用为大数据批处理应用;
主应用执行模块,被配置为执行根据分配的资源,执行所述主应用;
子应用调用模块,被配置为执行在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程。
可选的,调用的子应用大于1个时,各子应用以主应用规定的一种执行方式执行,所述执行方式包括:并行执行、串行执行、部分第一子应用并行执行且部分第二子应用串行执行。
可选的,所述调用对象中包括子应用标识、子应用的调用接口,所述调用接口中包括子应用的初始化方法、业务逻辑的执行方法,以及子应用结束后的后处理方法;
子应用调用模块,被配置为执行:
通过调用对象中的子应用标识确定被调用的子应用;
通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化,并,
在初始化后,通过各子应用的执行方法,执行各子应用,以及,
在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
可选的,所述装置还包括:
指令修改模块,被配置为在为主应用分配资源之前执行接收对主应用中的调用对象的修改指令;
根据所述修改指令修改相应的调用对象。
可选的,所述装置还包括:
子应用的调用对象生成模块,被配置为在为主应用分配资源之前,执行:
若主应用和子应用基于Apache Spark框架运行,则将子应用的标识和调用接口分别封装到其对应的工作流节点中;
将所述工作流节点作为子应用的调用对象;
或,
若主应用和子应用基于Apache Flink框架运行,则将子应用的标识和调用接口分别根据Apache Flink框架的接口API格式进行封装;
将封装后的API接口作为子应用的调用对象。
可选的,所述装置还包括:
代码作业调度器配置模块,被配置为在为主应用分配资源之前,执行:
配置至少一种调度周期的代码作业调度器;
确定子应用的调度周期,并将子应用的标识配置到其对应调度周期的代码作业调度器中;
在执行主应用通过调用对象调用子应用的过程中,所述装置还包括:
针对各子应用,根据所述子应用的标识确定对应的所需的代码作业调度器;以及,
根据确定的代码作业调度器的调度周期对所述子应用进行调度。
可选的,所述装置还包括:
统一数据接口封装模块,被配置为在为主应用分配资源之前,执行将获取数据资源的接口封装为统一数据接口;
在执行所述主应用的过程中,主应用执行模块,被配置为执行:
若在缓存中未查找到需要访问的指定数据资源时,通过所述统一数据接口获取所述指定数据资源;并,
在确定所述指定数据资源对应的资源引用计数器的值大于第一预设值时,则将获取的所述指定资源存储至缓存中;以及,
针对每个数据资源,若需要访问该数据资源的任一子应用运行结束时,将该数据资源的资源引用计数器的值减小第二预设值;且,当该数据资源的资源引入计数器的值为第三预设值时,释放该数据资源的缓存;
其中,所述第三预设值用于表示需要访问该数据资源的全部子应用运行结束。
可选的,所述装置还包括:
数据资源id分配模块,被配置为在为主应用分配资源之前,执行为每个数据资源分配唯一标识id;
资源引用计数器的初始值确定模块,被配置为执行确定每个唯一标识id的数据资源对应的资源引用计数器的初始值,所述资源引用计数器的初始值为所有需要访问该id的数据资源的子应用的总数。
可选的,主应用执行模块,被配置为在执行所述主应用的过程中,执行:
针对主应用,若该主应用中的任一子应用运行结束时,将全局计数器的值减小第四预设值;且当该全局计数器的值为第五预设值时,则中断该主应用执行;其中,
中断该主应用的执行后,重启该主应用再进行结束该主应用的操作。
可选的,所述装置还包括:
调用对象id分配模块,被配置为在为主应用分配资源之前,执行为每个调用对象分配唯一id;
全局计数器的初始值确定模块,被配置为执行确定全局计数器的初始值,所述全局计数器的初始值为所有需要运行的调用对象id的总数。
根据本发明实施例的第三方面,提供一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例提供的任一大数据批处理方法。
根据本发明实施例的第四方面,提供一种存储介质,其中,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行本申请实施例中的任一大数据批处理方法。
根据本发明实施例的第五方面,提供一种程序产品,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本发明实施例中的任一大数据批处理方法。
本发明实施例提供的大数据批处理方法和装置,新建一个主应用用于调用所有子应用,其中,所述子应用是所有需要执行的应用。在为主应用分配资源之前,首先要根据子应用的标识以及子应用的调用接口生成主应用的调用对象,用以实现主应用对于各子应用的调用。其次,将总资源分配给主应用,并且执行主应用。最后,在执行主应用时,借助主应用分配资源之前生成的调用对象实现对于子应用的调用。因此,通过该主应用可以实现多个子应用的全部执行要求,且每个子应用都是基于调用执行的,每个子应用可单独开发维护,主应用只需要维护子应用的统一格式的调用对象即可,故此减少了重复资源的浪费并且维护测试相对简单。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理,并不构成对本发明的不当限定。
图1为本发明一示例性实施方式的一种大数据批处理方法的工作流节点示例图;
图2为本发明一示例性实施方式的一种大数据批处理方法的调用接口示意图;
图3为本发明一示例性实施方式的一种大数据批处理方法的流程图;
图4为本发明一示例性实施方式的一种大数据批处理方法的调用对象的流程图;
图5为本发明一示例性实施方式的一种大数据批处理应用整合调度装置示意图;
图6为本发明一示例性实施方式的电子设备示意图。
具体实施方式
为了使本领域普通人员更好地理解本发明的技术方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的描述在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
相关技术中,在大数据批处理应用下,多个应用运行过程中存在资源重复浪费问题。例如,在多个应用运行过程中,都要读取用户表的数据,这时候,就会消耗两份的用户表数据读取解析使用的IO资源、网络资源、CPU资源。并且,在实际运维过程中,大数据集群上的应用总会有新增、删除或者修改,这时需要重新规划应用所需的命令或脚本。在总资源有限或者固定的时候,还需要重新规划应用的资源分配并细细测试,需要耗费很大的工作量且效果可能不理想。
因此,为解决资源重复浪费问题,将所有应用业务都写在一个大应用中。但是,相关技术中存在着维护测试复杂的问题。此外,由于子应用之间的调度周期不一致,且存在依赖关系,导致代码复杂度很高,以及应用长时间的运行会存在内存溢出问题。
有鉴于此,本发明提供一种大数据批处理方法。该方法中,新建一个主应用用于调用所有子应用,其中,所述子应用是所有需要执行的应用。在为主应用分配资源之前,首先要根据子应用的标识以及子应用的调用接口生成主应用的调用对象,用以实现主应用对于各子应用的调用。其次,将总资源分配给主应用,并且执行主应用。最后,在执行主应用时,借助主应用分配资源之前生成的调用对象实现对于子应用的调用。因此,通过该主应用可以实现多个子应用的全部执行要求,且每个子应用都是基于调用执行的,每个子应用可单独开发维护,主应用只需要维护子应用的统一格式的调用对象即可,故此减少了重复资源的浪费并且维护测试相对简单。例如,可单独测试一个或多个子应用,而无需把主应用下的所有子应用都进行测试。
在为主应用分配资源之前,有多个为支持主应用的执行过程的前序准备工作,即如何开发生成主应用,以下是对于前序准备工作的具体介绍。
需要说明的是,本申请中所述的子应用可以是独立开发的应用(如批处理应用),也可以是流式计算。
一、调用对象的生成
在主应用的执行过程中,通过子应用对应的调用对象实现对于子应用的调用。其中,所述的调用对象包含子应用的标识以及子应用的调用接口,并且生成调用对象有多种不同的实现形式。
例如基于Apache Spark(一个基于内存计算的开源的集群计算系统)框架下,调用对象的生成是将子应用的标识和调用接口分别封装到其子应用对应的工作流节点中,所以用相应的工作流节点作为主应用的调用对象;而基于Apache Flink(一个用于在有界和无界数据之上进行状态计算的分布式处理引擎和框架)框架下运行,调用对象的生成则是将子应用的标识和调用接口分别根据Apache Flink框架的接口API(ApplicationProgramming Interface,应用程序接口)格式进行封装,则以相应封装的API接口作为主应用的调用对象。
参阅图1,为本发明一实施例关于一种大数据批处理方法基于Apache Spark框架下的工作流节点示例图,其中SparkAPP1(子应用1)类中包含SparkSession(SparkSession是Apache Spark 2.0引入的,它为用户提供了一个统一的切入点来使用Spark的各项功能。在Apache Spark1.0为SparkContext)对象和jobConfig(配置类,用于存储应用的配置参数)对象为子应用的标识,其中beforecall(方法名称,表示调用执行前的初始化方法。可以改为其他名称,例如init)方法是实现调用接口前的初始化准备,利用call方法可实现内部调用SparkAPP1类中的runjob(方法名称,表示业务调用执行的方法,可以改为其他名称。例如runBusiness、executeBusiness)方法,其中在SparkAPP1类中若包含SparkSession对象和jobConfig对象就可以实现用runjob方法进行业务逻辑间的调用。
其中,所述调用接口参阅图2,为本发明一实施例关于一种大数据批处理方法的调用接口示例图。调用接口包含子应用的初始方法、业务逻辑的执行方法以及应用结束的后处理方法即资源释放处理方法。
对于调用接口的生成,是将所有子应用的公共类部分抽象出来之后,产生的业务逻辑调用接口。具体实施时,首先根据子应用的公共类设计实现子应用的超类,该超类是封装应用统一的上下文环境,包含以下内容:
(1)、初始化前的一系列初始化动作和子应用结束后的处理,其中初始化动作包括但不限于:统一的脚本入参校验、接收和转换。
(2)、子应用初始化处理,创建SparkSession对象,并依据应用配置hdfs(Hadoop分布式文件系统,Hadoop是一个由Apache基金会所开发的分布式系统基础架构)初始化组件等。
(3)、预留子应用执行方法,例如runJob方法,该执行方法可传入公共参数,在实际子应用中,在该执行方法内部实现业务逻辑的调用。
(4)、子应用结束运行的资源释放处理,其中资源释放处理包括但不限于:关闭子应用以及关闭初始化的数据库连接等资源。
经过以上超类的设计实现后,可以用AbstractJob(自定义的Spark应用的超类名称。可以是其他名称,例如AbstractSpark,SuperSparkJob等)暴露出用于业务逻辑调用的接口,所有主应用和子应用都继承AbstractJob暴露出的接口,其中该接口主要包括应用的命令参数定义方法和应用的业务逻辑调用方法。在所述接口中通过子应用的执行方法runJob方法在业务逻辑接口中实现子应用间业务逻辑的互相调用,其中子应用只要有SparkSession和JobConfig的参数,就可以使用runJob方法。
二、代码作业调度器的配置
针对不同调度周期的整合,可借助代码作业调度器来进行选择。其中,代码作业调度器可选的有调度器java timer(Java提供的轻量级的定时任务调度器)或开源作业调度器quartz(一个完全由Java编写的开源作业调度框架)。
此外,对于代码作业调度器引用的方式也可有不同的实现形式。可选的,直接在子应用的标识中添加所述子应用对应的调度周期,在这种方式下,通过对相应封装的子应用的工作流节点进行更改实现。或者可选的,配置至少一种调度周期的代码作业调度器,并在不同调度周期的代码作业调度器下定义所述调度周期的具体工作对象。例如,实现10分钟和小时任务调度的整合,其中10分钟任务调度的具体作业对象为子应用1、子应用3和子应用5,小时任务调度的具体作业对象为子应用2、子应用4。故此,可以根据实际需要定义不同调度周期的代码作业调度器,那么相同调度周期的子应用可采用同一代码作业调度器进行调度,从而实现同一周期的子应用的整合。
为方便对上述方法进行理解,示例代码如下:
//定义10分钟任务调度的具体作业对象
val jobDetail=JobBuilder.newJob(classOf[SparkApp1]).withIdentity("TenMinutesJob","test").
build()
//定义当前具体作业对象的参数
val jobDataMap=jobDetail.getJobDataMap()
jobDataMap.put("sparkSession",spark)
jobDataMap.put("jobConfig",jobConfig)
//10分钟作业的触发器
val cronTrigger=TriggerBuilder.newTrigger().
withIdentity("minuteCronTrigger","cronTrigger").
withSchedule(CronScheduleBuilder.cronSchedule("0 1/10***?").withMisfireHandlingInstructionFireAndProceed()).
build()
//注册作业和触发器
scheduler.scheduleJob(jobDetail,cronTrigger)
//定义小时任务调度的具体作业对象
val jobDetail2=JobBuilder.newJob(classOf[SparkApp2]).withIdentity("HourJob","test").build()
//定义当前具体作业对象的参数
val jobDataMap2=jobDetail2.getJobDataMap()
jobDataMap2.put("sparkSession",spark)
jobDataMap2.put("jobConfig",jobConfig)
//小时作业的触发器
val cronTrigger2=TriggerBuilder.newTrigger().
withIdentity("hourCronTrigger","cronTrigger").
withSchedule(CronScheduleBuilder.cronSchedule("0 15***?").withMisfireHandlingInstructionFireAndProceed()).
build()
//注册作业和触发器
scheduler.scheduleJob(jobDetail2,cronTrigger2)
//开始调度任务
scheduler.start();
由上述示例可见,通过以上代码作业调度器的引用,可用于在主应用执行过程中对于不同调度周期的子应用的整合。具体实施时,在代码作业调度器中定义所述调度周期所需要执行的具体子应用,从而将同一调度周期的子应用整合起来一起调度。因此,上述方法可降低代码的复杂度。
三、资源引入计数器的配置
资源引入计数器的配置是为了减少对于某数据资源的重复引用,以及及时释放不再进行调用的数据资源的缓存。
具体实施时,为了方便统计数据资源的引用次数,首先将数据资源获取的接口进行统一封装为统一数据接口,也即,各个应用在访问该数据资源时调用统一数据接口进行访问,并且为每个数据资源定义唯一id,方便资源引入计数器统计。此外,确定每个id的数据资源需要被获取的调用对象个数,并将调用对象的个数作为该id对应的资源引入计数器的初始值。
其中,在一个实施例中,各数据资源和其数据接口可以是一一对应关系,以便于通过对应的数据接口实现对该数据资源是否在缓存中的判断。
在一个实施例中,为简化过程,可选的,也可以为特定的数据资源配置一一对应的数据接口。例如,针对各数据资源,若引用该数据资源的应用(包括主应用和子应用)的数量达到一定预设值,则为该数据资源封装数据接口;而若引用该数据资源的应用的数量未达到一定预设值,则可不定义其统一的访问接口。
如表1为一示例,需要说明的是,本申请实施例提供表仅用于示例性说明本申请实施例,并不对本申请实施例进行限定。
表1
数据资源id1 | 数据资源id2 | |
工作流节点1 | 获取 | 获取 |
工作流节点2 | 获取 | 获取 |
工作流节点3 | 不获取 | 获取 |
工作流节点4 | 获取 | 获取 |
资源引入计数器初始值 | 3 | 4 |
从表1可看到,需要获取数据资源id1的调用对象有工作流节点1、工作流节点2以及工作流节点4,所以可得到其对应的资源引入计数器的初始值为3(即引用数据资源id1的工作流节点共有3个)。需要获取数据资源id2的调用对象有工作流节点1、工作流节点2、工作流节点3以及工作流节点4,所以可得到其对应的资源引入计数器的初始值为4(即引用数据资源id2的工作流节点共有4个)。
进一步的,具体实施时,对于资源引入计数器的应用,首先在缓存中查找所需访问的数据资源,若在缓存中并未查到需要的数据资源时,然后用之前为数据资源封装的数据接口获取该数据资源,同时判断该数据资源的资源引入计数器的数值大小,如果该数值大于第一预设值,则表明该数据资源在后面的执行中会被引用多次,为了避免重复获取该数据,将该数据资源缓存下来。其中,第一预设值没有特定含义。此外,可选的,将数据资源缓存时首先考虑直接缓存,如果直接缓存不成功(例如Apache Spark或者Apache Flink框架本身不提供缓存方法路径),还可选择第三方缓存如Alluxio(一个分布式内存文件系统的名称,之前的名称为Tachyon)、Redis(一个开源,内存存储的数据结构服务器)。
此外,针对每个数据资源,如果需要访问该数据资源的任意一个子应用运行结束时,则将该数据资源对应的资源引入计数器的数值减少第二预设值。若判断到该数据资源的资源引用计数器的值为第三预设值即没有子应用需要访问该数据资源时,则将该数据资源的缓存释放。其中不根据第二预设值与第三预设值判定执行所述执行资源引入计数器减少的步骤以及执行判断数据资源的资源引用计数器的值的步骤这两个步骤执行的先后关系,并且第二预设值与第三预设值没有特定的含义,只是用做区分值。
通过该资源引入计数器可以实现对于需要获取的数据资源的实时监控,例如当在缓存中未查找到数据资源1时,通过统一数据接口获取数据资源1,同时判断到该数据资源的资源引入计数器的数值大于第一预设值,则将其缓存下来便于后面的子应用在缓存中获取,从而减少重复获取该数据资源,并且随着引用该数据资源的子应用结束执行,及时将数据资源1从缓存中释放出去,从而避免了因缓存过多而内存不足的问题。
四、全局计数器的配置
与资源引入计数器相同的是,全局计数器的配置是为了及时释放全局的缓存数据资源,从而及时释放内存,防止内存溢出。
具体实施时,为主应用的每个调用对象分配唯一id。统计主应用中需要调用的调用对象id总数作为该全局计数器的初始值。如表2为一示例:
表2
主应用 | |
调用对象id 1 | 需要调用 |
调用对象id 2 | 不需要调用 |
调用对象id 3 | 需要调用 |
调用对象id 4 | 需要调用 |
全局计数器初始值 | 3 |
从表2可看到,主应用中需要调用执行的调用对象有调用对象id1、调用对象id3以及调用对象id4,所以可得到所述主应用的全局计数器的初始值为3(即主应用需要调用的调用对象有3个)。进一步的,具体实施时对于全局计数器的应用,在主应用执行过程中,监控当前运行的子应用的个数。若某个子应用运行结束,则将全局计数器的值减少第四预设值。当判断全局计数器的值为第五预设值时即表明当前没有子应用执行时,则中断该主应用。其中,所述第四预设值与第五预设值没有特定的含义,仅用作区分。此外,为了避免主应用因长时间运行而导致的元数据残留问题,可选择重启该主应用再中断该主应用来解决该问题。
五、各子应用执行顺序的整合
在主应用调用的过程中,难免会存在调用子应用的新增、更正或删除。其中,当对子应用的调用修改时,可直接对主应用涉及的调用对象进行修改,即主应用在执行时可直接根据修改指令对调用对象进行修改。
下面结合代码示例对上述方法进行说明,代码示例如下:
//新增第一个工作流节点:SparkApp1为示例spark应用1,spark为上下文,config为任务参数。
val sparkAppWork1=new BatchJobWork(SparkApp1,spark,config)
//新增第二个工作流节点:SparkApp2为示例spark应用2。
val sparkAppWork2=new BatchJobWork(SparkApp2,spark,config)
//新建一个串行工作流,顺序执行spakrAppWork1和sparkAppWork2,即顺序执行sparkApp1和SparkApp2。
val sparkApp12WorkFlow=aNewSequentialFlow.named("串行执行spark应用12").execute(
sparkAppWork1
).then(
sparkAppWork2
).build()
根据上述代码示例可以得到,新增了两个工作流节点SparkApp1和SparkApp2,然后新建一个串行工作流用以顺序执行工作流节点SparkApp1和工作流节点SparkApp2。进一步的,若新增或删除子应用时,可直接新增或删除子应用对应的工作流节点,例如,若增加子应用3,可在代码示例中新增第三个工作流节点SparkApp3。并且,当更改子应用之间的执行方式时,如将工作流节点SparkApp1和工作流节点SparkApp2之间的执行方式由串行执行修改为并行执行,可将代码示例中新建串行工作流修改为新建并行工作流,从而将工作流节点SparkApp1和工作流节点SparkApp2的执行方式修改为并行执行。
根据以上的前序准备过程,为主应用的执行提供了一系列基础。下面参照图3,为本发明实施例的关于一种大数据批处理方法的流程图,对本发明的具体实施方法进一步的解释,包含以下步骤:
步骤301:为主应用分配资源,所述主应用中包含各子应用的调用对象;且子应用与调用对象一一对应,所述子应用为大数据批处理应用。
其中子应用的调用对象包含子应用的标识以及子应用的调用接口,调用对象可选的有如前文介绍的工作流节点、封装的API接口。
步骤302:根据分配的资源,执行所述主应用。
步骤303:在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程。
其中,调用的子应用大于1个时,各子应用根据所述主应用的调用以主应用规定的一种执行方式执行,所述执行方式包括:并行执行、串行执行、部分第一子应用并行执行且部分第二子应用串行执行。
此外,执行过程中,针对各子应用,根据所述子应用的标识确定对应所需的代码作业调度器;以及,根据确定的代码作业调度器的调度周期对所述子应用进行调度。通过引入该代码作业器可以实现对于不同调度周期的子应用的整合。
此外,为便于对利用调用对象对子应用的调用进一步理解,参阅图4,为本发明实施例的关于一种大数据批处理方法的调用对象的流程图,可以包含以下步骤:
步骤401:通过调用对象中的子应用标识确定被调用的子应用。
步骤402:通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化。
步骤403:在初始化后,通过各子应用的执行方法,执行各子应用。
步骤404:在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
此外,在上述主应用执行过程中,资源引入计数器和全局资源计数器的数值根据数据资源或应用的执行结束而发生相应变化,具体实施方式如前文中所详细介绍的,不在此赘述。
基于相同的发明构思,本发明还提供一种大数据批处理方法的装置。参阅图5,该装置包括:
资源分配模块501,被配置为执行为主应用分配资源,所述主应用中包括各子应用的调用对象,且子应用与调用对象一一对应,所述子应用为大数据批处理应用;
主应用执行模块502,被配置为执行根据分配的资源,执行所述主应用;
子应用调用模块503,被配置为执行在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程。
可选的,调用的子应用大于1个时,各子应用以主应用规定的一种执行方式执行,所述执行方式包括:并行执行、串行执行、部分第一子应用并行执行且部分第二子应用串行执行。
可选的,所述调用对象中包括子应用标识、子应用的调用接口,所述调用接口中包括子应用的初始化方法、业务逻辑的执行方法,以及子应用结束后的后处理方法;
子应用调用模块503,被配置为执行:
通过调用对象中的子应用标识确定被调用的子应用;
通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化,并,
在初始化后,通过各子应用的执行方法,执行各子应用,以及,
在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
可选的,所述装置还包括:
指令修改模块,被配置为在为主应用分配资源之前执行接收对主应用中的调用对象的修改指令;
根据所述修改指令修改相应的调用对象。
可选的,所述装置还包括:
子应用的调用对象生成模块,被配置为在为主应用分配资源之前,执行:
若主应用和子应用基于Apache Spark框架运行,则将子应用的标识和调用接口分别封装到其对应的工作流节点中;
将所述工作流节点作为子应用的调用对象;
或,
若主应用和子应用基于Apache Flink框架运行,则将子应用的标识和调用接口分别根据Apache Flink框架的接口API格式进行封装;
将封装后的API接口作为子应用的调用对象。
可选的,所述装置还包括:
代码作业调度器配置模块,被配置为在为主应用分配资源之前,执行:
配置至少一种调度周期的代码作业调度器;
确定子应用的调度周期,并将子应用的标识配置到其对应调度周期的代码作业调度器中;
在执行主应用通过调用对象调用子应用的过程中,所述装置还包括:
针对各子应用,根据所述子应用的标识确定对应的所需的代码作业调度器;以及,
根据确定的代码作业调度器的调度周期对所述子应用进行调度。
可选的,所述装置还包括:
统一数据接口封装模块,被配置为在为主应用分配资源之前,执行将获取数据资源的接口封装为统一数据接口;
在执行所述主应用的过程中,主应用执行模块502,被配置为执行:
若在缓存中未查找到需要访问的指定数据资源时,通过所述统一数据接口获取所述指定数据资源;并,
在确定所述指定数据资源对应的资源引用计数器的值大于第一预设值时,则将获取的所述指定资源存储至缓存中;以及,
针对每个数据资源,若需要访问该数据资源的任一子应用运行结束时,将该数据资源的资源引用计数器的值减小第二预设值;且,当该数据资源的资源引入计数器的值为第三预设值时,释放该数据资源的缓存;
其中,所述第三预设值用于表示需要访问该数据资源的全部子应用运行结束。
可选的,所述装置还包括:
数据资源id分配模块,被配置为在为主应用分配资源之前,执行为每个数据资源分配唯一标识id;
资源引用计数器的初始值确定模块,被配置为执行确定每个唯一标识id的数据资源对应的资源引用计数器的初始值,所述资源引用计数器的初始值为所有需要访问该id的数据资源的子应用的总数。
可选的,主应用执行模块502,被配置为在执行所述主应用的过程中,执行:
针对主应用,若该主应用中的任一子应用运行结束时,将全局计数器的值减小第四预设值;且当该全局计数器的值为第五预设值时,则中断该主应用执行;其中,
中断该主应用的执行后,重启该主应用再进行结束该主应用的操作。
可选的,所述装置还包括:
调用对象id分配模块,被配置为在为主应用分配资源之前,执行为每个调用对象分配唯一id;
全局计数器的初始值确定模块,被配置为执行确定全局计数器的初始值,所述全局计数器的初始值为所有需要运行的调用对象id的总数。
在介绍了本申请示例性实施方式的一种大数据批处理方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本申请的电子设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的数据处理方法中的步骤。例如,处理器可以执行如图3中所示的步骤301-步骤303或者如图4所示的步骤401-步骤404。
下面参照图6来描述根据本申请的这种实施方式的电子设备130。图6显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的一种大数据批处理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的一种数据处理方法中的步骤,例如,计算机设备可以执行如图3中所示的步骤301-步骤303或者如图4所示的步骤401-步骤404。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于数据处理的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种大数据批处理方法,其特征在于,包括:
为主应用分配资源,所述主应用用于调用所有子应用,包括各子应用的调用对象,且子应用与调用对象一一对应,所述子应用为大数据批处理应用;
根据分配的资源,执行所述主应用;
在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程,其中,根据子应用的标识确定对应的所需的代码作业调度器,以及,根据确定的代码作业调度器对应的子应用的调度周期对所述子应用的调用对象进行调度。
2.根据权利要求1所述的方法,其特征在于,调用的子应用大于1个时,各子应用以主应用规定的一种执行方式执行,所述执行方式包括:并行执行、串行执行、部分第一子应用并行执行且部分第二子应用串行执行。
3.根据权利要求1所述的方法,其特征在于,所述调用对象中包括子应用标识、子应用的调用接口,所述调用接口中包括子应用的初始化方法、业务逻辑的执行方法,以及子应用结束后的后处理方法;
通过调用对象调用子应用,包括:
通过调用对象中的子应用标识确定被调用的子应用;
通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化;
在初始化后,通过各子应用的执行方法,执行各子应用;
在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
4.根据权利要求1所述的方法,其特征在于,为主应用分配资源之前,所述方法还包括:
若主应用和子应用基于Apache Spark框架运行,则将子应用的标识和调用接口分别封装到其对应的工作流节点中;
将所述工作流节点作为子应用的调用对象;
或,
若主应用和子应用基于Apache Flink框架运行,则将子应用的标识和调用接口分别根据Apache Flink框架的接口API格式进行封装;
将封装后的API接口作为子应用的调用对象。
5.根据权利要求1所述的方法,其特征在于,在执行所述主应用的过程中,所述方法还包括:
针对主应用,若该主应用中的任一子应用运行结束后,将全局计数器的值减小第四预设值;且当该全局计数器的值为第五预设值时,则中断该主应用执行;其中,
中断该主应用的执行后,重启该主应用再进行结束该主应用的操作。
6.根据权利要求5所述的方法,其特征在于,为主应用分配资源之前,所述方法还包括:
为每个调用对象分配唯一id;
确定全局计数器的初始值,所述全局计数器的初始值为所有需要运行的调用对象id的总数。
7.一种大数据批处理装置,其特征在于,包括:
资源分配模块,被配置为执行为主应用分配资源,所述主应用用于调用所有子应用,包括各子应用的调用对象,且子应用与调用对象一一对应,所述子应用为大数据批处理应用;
主应用执行模块,被配置为执行根据分配的资源,执行所述主应用;
子应用调用模块,被配置为执行在执行所述主应用的过程中,通过子应用对应的调用对象调用子应用并执行子应用的执行过程,根据子应用的标识确定对应的所需的代码作业调度器,以及,根据确定的代码作业调度器对应的子应用的调度周期对所述子应用的调用对象进行调度。
8.根据权利要求7所述的装置,其特征在于,所述调用对象中包括子应用标识、子应用的调用接口,所述调用接口中包括子应用的初始化方法、业务逻辑的执行方法,以及子应用结束后的后处理方法;
子应用调用模块,被配置为执行:
通过调用对象中的子应用标识确定被调用的子应用;
通过各子应用的调用接口中的初始化方法分别对各子应用进行初始化,并,
在初始化后,通过各子应用的执行方法,执行各子应用,以及,
在确定子应用结束处理后,分别根据子应用的调用接口中的后处理方法执行资源释放处理。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
子应用的调用对象生成模块,被配置为在为主应用分配资源之前,执行:
若主应用和子应用基于Apache Spark框架运行,则将子应用的标识和调用接口分别封装到其对应的工作流节点中;
将所述工作流节点作为子应用的调用对象;
或,
若主应用和子应用基于Apache Flink框架运行,则将子应用的标识和调用接口分别根据Apache Flink框架的接口API格式进行封装;
将封装后的API接口作为子应用的调用对象。
10.根据权利要求7所述的装置,其特征在于,主应用执行模块,被配置为在执行所述主应用的过程中,执行:
针对主应用,若该主应用中的任一子应用运行结束后,将全局计数器的值减小第四预设值;且当该全局计数器的值为第五预设值时,则中断该主应用执行;其中,
中断该主应用的执行后,重启该主应用再进行结束该主应用的操作。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
调用对象id分配模块,被配置为在为主应用分配资源之前,执行为每个调用对象分配唯一id;
全局计数器的初始值确定模块,被配置为执行确定全局计数器的初始值,所述全局计数器的初始值为所有需要运行的调用对象id的总数。
12.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如权利要求1-6中任一项所述的大数据批处理方法。
13.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-6中任一项所述的大数据批处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790499.3A CN110532044B (zh) | 2019-08-26 | 2019-08-26 | 一种大数据批处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790499.3A CN110532044B (zh) | 2019-08-26 | 2019-08-26 | 一种大数据批处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532044A CN110532044A (zh) | 2019-12-03 |
CN110532044B true CN110532044B (zh) | 2023-03-21 |
Family
ID=68664207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910790499.3A Active CN110532044B (zh) | 2019-08-26 | 2019-08-26 | 一种大数据批处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532044B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124618B (zh) * | 2019-12-25 | 2022-08-09 | 南京甄视智能科技有限公司 | 资源部署方法、装置、存储介质及设备 |
CN111198739B (zh) * | 2019-12-30 | 2023-08-15 | 广州市百果园信息技术有限公司 | 一种应用视图的渲染方法、装置、设备和存储介质 |
CN112000353A (zh) * | 2020-08-18 | 2020-11-27 | 北京三快在线科技有限公司 | 应用运行方法、装置及存储介质 |
CN112256416A (zh) * | 2020-10-22 | 2021-01-22 | 上海英方软件股份有限公司 | 一种实现任务复杂调度并同时数据清理的方法及系统 |
CN114237769A (zh) * | 2021-12-14 | 2022-03-25 | 北京人大金仓信息技术股份有限公司 | 一种程序的执行方法、装置、设备及存储介质 |
CN115080156B (zh) * | 2022-08-23 | 2022-11-11 | 卓望数码技术(深圳)有限公司 | 基于流批一体的大数据批量计算的优化计算方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3383000A2 (en) * | 2017-03-31 | 2018-10-03 | Verisign, Inc. | System and method for domain name registration using a cache |
CN109582446A (zh) * | 2018-10-11 | 2019-04-05 | 中国建设银行股份有限公司 | 准实时异步批量处理系统、方法、装置和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100122261A1 (en) * | 2008-11-11 | 2010-05-13 | Cray Inc. | Application level placement scheduler in a multiprocessor computing environment |
US20100122254A1 (en) * | 2008-11-11 | 2010-05-13 | Cray Inc. | Batch and application scheduler interface layer in a multiprocessor computing environment |
EP2768200B8 (en) * | 2013-02-18 | 2019-09-18 | Forcepoint Finland Oy | Receiving data packets |
US10037230B2 (en) * | 2016-07-29 | 2018-07-31 | Hewlett Packard Enterprise Development Lp | Managing data processing resources |
-
2019
- 2019-08-26 CN CN201910790499.3A patent/CN110532044B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3383000A2 (en) * | 2017-03-31 | 2018-10-03 | Verisign, Inc. | System and method for domain name registration using a cache |
CN109582446A (zh) * | 2018-10-11 | 2019-04-05 | 中国建设银行股份有限公司 | 准实时异步批量处理系统、方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110532044A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532044B (zh) | 一种大数据批处理方法、装置、电子设备及存储介质 | |
CN113243005B (zh) | 按需网络代码执行系统中的基于性能的硬件仿真 | |
CN110704186B (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
CN110413346B (zh) | 一种参数更新方法及装置 | |
US9032373B1 (en) | End to end testing automation and parallel test execution | |
CN109992407B (zh) | 一种yarn集群gpu资源调度方法、装置和介质 | |
CN110673853B (zh) | 一种编译方法、装置及系统 | |
CN111897541B (zh) | 一种云环境下自动化部署资源的软件交互平台及方法 | |
US10719360B2 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
Pusztai et al. | A novel middleware for efficiently implementing complex cloud-native slos | |
US11379260B2 (en) | Automated semantic tagging | |
US10803413B1 (en) | Workflow service with translator | |
Imai et al. | Accurate resource prediction for hybrid IaaS clouds using workload-tailored elastic compute units | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN113254174A (zh) | 一种rpa机器人流程自动化实现系统和方法 | |
CN104536819A (zh) | 基于web服务的任务调度方法 | |
CN102420709A (zh) | 一种基于任务框架的调度任务管理方法和设备 | |
CN114265690A (zh) | 实现远程训练的方法及装置 | |
Lv et al. | An attribute-based availability model for large scale IaaS clouds with CARMA | |
US10530892B2 (en) | Processing request for multi-versioned service | |
CN109144676A (zh) | 一种应用程序的自启动检测方法、装置及服务器 | |
EP3553658A1 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
Jammal et al. | Generic input template for cloud simulators: A case study of CloudSim | |
WO2023179387A1 (zh) | 云应用调度方法、装置、电子设备及存储介质 | |
CN111522630A (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 |