CN112540858B - 任务处理方法、服务器、客户端及系统 - Google Patents
任务处理方法、服务器、客户端及系统 Download PDFInfo
- Publication number
- CN112540858B CN112540858B CN201910901181.8A CN201910901181A CN112540858B CN 112540858 B CN112540858 B CN 112540858B CN 201910901181 A CN201910901181 A CN 201910901181A CN 112540858 B CN112540858 B CN 112540858B
- Authority
- CN
- China
- Prior art keywords
- task
- server
- request command
- client
- driver
- 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
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 86
- 238000012545 processing Methods 0.000 claims abstract description 81
- 230000008569 process Effects 0.000 claims abstract description 35
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- 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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种任务处理方法、服务器、客户端及系统,该方法包括:服务器接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址;所述服务器根据所述访问地址,获取预先存储的所述目标任务的业务逻辑代码;所述服务器根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务;所述服务器通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。本申请实施例可以提高Spark任务的提交的效率。
Description
技术领域
本申请实施例涉及通信技术,尤其涉及一种任务处理方法、服务器、客户端及系统。
背景技术
Spark是一款基于内存迭代的开源大数据计算引擎,它通过数据共享抽象弹性分布式数据集(resilient distributed datasets,RDDs),来支持各种各样的数据处理工作,例如:批处理、流处理,结构化查询语言(structured query language,SQL)查询,机器学习和图计算等。由于Spark具有速度快,吞吐高,分布式扩展等特点,因此,Spark成为当前最流行的大数据计算引擎,在各行业的大数据系统中被广泛使用。
Spark一般是部署在使用YARN管理资源的服务器集群上的,有YARN-Cluster和YARN-Client两种提交Spark任务的模式。在YARN-Cluster模式下,用户可以通过服务器集群外的客户端服务器进行某一应用的Spark任务的提交,被提交的Spark任务可以在该服务器集群上运行和计算。在采用该方式提交Spark任务时,为了使客户端可以及时的获取到任务的执行结果,客户端服务器上会生成一个与服务器集群保持心跳连接的进程,直到Spark任务处理结束后才会退出。另外,服务器集群在执行客户端提交的针对同一应用的每个任务时,均会为该任务启动一个该任务所属的应用的驱动。
由于客户端侧与服务器集群保持心跳连接的进程,在客户端服务器侧会占用较大的内存(例如占用约1GB+的内存),以及,部分中央处理器(central processing unit,CPU)资源,导致客户端侧的资源开销较大。另外,服务器集群为每个任务启动一个应用的驱动的方式,导致任务的提交效率低、且服务器集群的开销较大。因此,上述提交Spark任务的方式不适合频繁提交Spark任务(例如小于5分钟的调度周期的任务),也不适合并行提交多个Spark任务,导致Spark任务的提交效率较低。
发明内容
本申请实施例提供一种任务处理方法、服务器、客户端及系统,用于解决现有的提交Spark任务的方式导致提交效率较低的技术问题。
第一方面,本申请实施例提供一种任务处理方法,在该方法中,服务器可以接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,其中,所述第一任务请求命令请求处理所述应用的目标任务。所述目标任务例如可以是Spark任务、或Flink任务、或Hadoop任务等。
服务器在接收到该第一任务请求命令后,可以该第一任务请求命令中所携带的目标任务的业务逻辑代码的访问地址,获取预先存储的所述目标任务的业务逻辑代码,并根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务。例如,所述服务器根据所述目标任务的业务逻辑代码,通过所述驱动将所述目标任务拆分成多个子任务;所述服务器通过所述驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。最后,服务器可以通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。
通过上述方法,只需要启动一次应用的驱动,后续客户端可以直接通过远程调用端口,采用远程调用的方式向运行该应用的驱动的服务器提交任务,无需再在每次执行任务时,执行启动该应用的驱动的操作。当应用于提交Spark任务时,在相同的时间周期内,相比现有的Spark任务的提交方法,可以提交更多的Spark任务。因此,可以提高目标任务的提交的效率,也可以更高频度更多并发的提交Spark任务,有效的减轻了整个Spark任务处理周期中提交环节的瓶颈。其次,因无需为每个任务都启动一个驱动,可以降低服务器集群的开销。另外,客户端采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务的方式,无需再在客户端侧保留与服务器集群保持心跳连接的进程,可以降低客户端侧的资源开销。
作为一种可能的实现方式,所述服务器在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,还可以接收所述客户端通过所述驱动的任务提交接口提交的第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。然后,所述服务器可以根据所述第二任务请求命令,启动所述驱动,并将所述驱动的任务服务接口与所述远程调用端口绑定。在该实现方式下,所述服务器可以通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。通过该方式,可以启动该应用的驱动,以及,将硬件的远程调用端口与驱动的软件接口绑定的操作,使客户端可以通过该远程调用端口,采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务。
作为一种可能的实现方式,所述服务器在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,还可以接收来自所述客户端的存储请求,其中,所述存储请求用于请求存储所述目标任务的业务逻辑代码。然后,所述服务器可以根据所述存储请求,存储所述目标任务的业务逻辑代码。通过该方式,无需再在提交第一任务请求命令时,携带该目标任务的业务逻辑代码,提高了任务提交的效率。另外,相对存储在客户端的传统方式,将目标任务的业务逻辑代码存储在服务器集群有更好的灵活性和拓展性。
作为一种可能的实现方式,所述目标任务的业务逻辑代码存储在服务器可以访问到的文件系统或数据库中,这样,所述服务器在接收到请求处理该目标任务的第一任务请求命令时,可以通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。通过该方式,无需再在提交第一任务请求命令时,携带该目标任务的业务逻辑代码,提高了任务提交的效率。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。通过这种方式,可以提高任务处理的灵活性和拓展性。
第二方面,本申请实施例提供一种任务处理方法,在该方法中,客户端可以通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令,其中,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。所述目标任务例如可以为Spark任务、或Flink任务、或Hadoop任务等。然后,所述客户端接收所述服务器通过所述远程调用端口返回的所述目标任务的处理结果。
作为一种可能的实现方式,所述客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,还可以通过任务提交接口向所述服务器提交第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。
作为一种可能的实现方式,所述客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,还可以向所述服务器发送存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
上述第二方面和第二方面的各可能的实施方式所提供的任务处理方法,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不加赘述。
第三方面,本申请实施例提供一种服务器,所述服务器包括:接收模块、处理模块和发送模块。其中,
接收模块,用于接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。所述目标任务例如可以为Spark任务、或Flink任务、或Hadoop任务等。
处理模块,用于根据所述访问地址,获取预先存储的所述目标任务的业务逻辑代码,并根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务。例如,所述处理模块根据所述目标任务的业务逻辑代码,通过所述驱动将所述目标任务拆分成多个子任务,并控制所述发送模块通过所述驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。
发送模块,用于通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。
作为一种可能的实现方式,所述接收模块,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收所述客户端通过所述驱动的任务提交接口提交的第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。所述处理模块,还用于根据所述第二任务请求命令,启动所述驱动,并将所述驱动的任务服务接口与所述远程调用端口绑定。在该实现方式下,所述接收模块,具体用于通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。
作为一种可能的实现方式,所述接收模块,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收来自所述客户端的存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。所述处理模块,还用于根据所述存储请求,存储所述目标任务的业务逻辑代码。
作为一种可能的实现方式,所述目标任务的业务逻辑代码存储在文件系统或数据库中。则在该实现方式下,所述处理模块,具体用于通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
上述第三方面和第三方面的各可能的实施方式所提供的服务器,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不加赘述。
第四方面,本申请实施例提供一种客户端,所述客户端包括:发送模块和接收模块。其中,
发送模块,用于通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。所述目标任务例如可以为Spark任务、或Flink任务、或Hadoop任务等。
接收模块,用于接收所述服务器通过所述远程调用端口返回的所述目标任务的处理结果。
作为一种可能的实现方式,所述发送模块,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,通过任务提交接口向所述服务器提交第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。
作为一种可能的实现方式,所述发送模块,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,向所述服务器发送存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
上述第四方面和第四方面的各可能的实施方式所提供的客户端,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不加赘述。
第五方面,本申请实施例提供一种通信装置,所述通信装置包括:处理器、存储器;
其中,存储器用于存储计算机可执行程序代码,程序代码包括指令;当处理器执行指令时,指令使所述通信装置执行如第一方面至第二方面任一可能的实施方式所提供的方法。
第六方面,本申请实施例提供一种通信装置,包括用于执行以上第一方面至第一方面任一各可能的实施方式所提供的方法的单元、模块或电路。该通信装置可以为服务器,也可以为应用于服务器的一个模块,例如,可以为应用于服务器的芯片。
第七方面,本申请实施例提供一种通信装置,包括用于执行以上第二方面至第二方面任一各可能的实施方式所提供的方法的单元、模块或电路。该通信装置可以为客户端,也可以为应用于客户端的一个模块,例如,可以为应用于客户端的芯片。
第八方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面至第二方面各种可能的实施方式中的方法。
第九方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面至第二方面的各种可能的实施方式中的方法。
第十方面,本申请实施例提供一种通信装置,所述通信装置上存储有计算机程序,在所述计算机程序被所述通信装置执行时,实现上述第一方面至第二方面的各种可能的实施方式中的方法。这里所说的通信装置例如可以为芯片。
第十一方面,本申请实施例提供一种任务处理系统,所述任务处理系统包括:服务器和客户端。该服务器用于执行上述第一方面至第一方面的各种可能的实施方式的方法,该客户端用于执行上述第二方面至第二方面的各种可能的实施方式的方法。
第十二方面,本申请实施例提供了一种芯片,所述芯片与存储器相连,用于读取并执行所述存储器中存储的软件程序,以实现第一方面至第二方面中任一方面或任一方面的任意一种可能的实施方式提供的方法。
第十三方面,本申请实施例提供了一种芯片,所述芯片包含处理器和存储器,所述处理器用于读取所述存储器中存储的软件程序,以实现第一方面至第二方面中任一方面或任一方面的任意一种可能的实施方式提供的方法。
本申请实施例提供的任务处理方法、服务器、客户端及系统,只需要启动一次应用的驱动,后续客户端可以直接通过远程调用端口,采用远程调用的方式向运行该应用的驱动的服务器提交任务,无需再在每次执行任务时,执行启动该应用的驱动的操作。当应用于提交Spark任务时,在相同的时间周期内,相比现有的Spark任务的提交方法,可以提交更多的Spark任务。因此,可以提高目标任务的提交的效率,也可以更高频度更多并发的提交Spark任务,有效的减轻了整个Spark任务处理周期中提交环节的瓶颈。其次,因无需为每个任务都启动一个驱动,可以降低服务器集群的开销。另外,客户端采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务的方式,无需再在客户端侧保留与服务器集群保持心跳连接的进程,可以降低客户端侧的资源开销。
附图说明
图1为一种Spark的基本架构示意图;
图2为一种Spark任务处理方法的应用场景图;
图3为一种Spark的运行架构示意图;
图4为本申请实施例提供的一种任务处理流程的应用场景图;
图5为本申请实施例提供的一种任务处理方法的流程示意图;
图6为本申请实施例提供的一种服务器的结构示意图;
图7为本申请实施例提供的一种客户端的结构示意图;
图8为本申请实施例提供的一种通信装置的结构示意图。
具体实施方式
图1为一种Spark的基本架构示意图。如图1所示,Spark的基本架构可以包括如下组件:Spark内核、Spark SQL、Spark流(Spark Streaming)、机器学习库(machine learninglibrary,MLlib)、GraphX。
Spark内核(core):包含Spark的基本功能,例如任务调度、内存管理、容错机制等。Spark内核内部定义了RDDs,可以提供应用程序接口(application programminginterface,API)创建和操作RDDs,并为其他组件提供底层服务。其他Spark的库都是构建在RDD和Spark内核之上的。
Spark SQL:是Spark中处理结构化数据的库,提供通过Apache Hive(Hive是基于hadoop的一个数据仓库工具,可以将结构化数据文件映射为一张数据库表,并提供类SQL查询功能)的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API,以使用户可以在Spark环境下用SQL语言处理数据。
Spark Streaming:Spark中用来处理流数据的组件,可以对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据。
机器学习库(machine learning library,MLlib):Spark中用来进行机器学习和数学建模的算法库,算法被实现为对RDD的Spark操作。这个算法库可以包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的算法。
GraphX:Spark中用来进行图计算(例如社交媒体关系等)的库函数,包括控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。
图2为一种Spark任务处理方法的应用场景图。如图2所示,服务器集群是将多个服务器(例如上千台服务器)集中起来一起进行同一种服务的集群。服务器集群中的每个服务器可以看作是集群中的一个节点,各节点之间通信连接。YARN是一种新的Hadoop资源管理器,是一个通用资源管理系统,可以为上层应用提供统一的资源管理和调度。它的引入为服务器集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。Spark一般是部署在使用YARN管理资源的服务器集群上的。本申请实施例中后续内容,若无特殊说明,均以使用YARN管理资源的服务器集群为例进行说明。图3为一种Spark的运行架构示意图。如图3所示,当Spark部署在服务器集群上时,Spark的运行架构可以包括:资源管理器(resourcemanager,RM)、应用管理器(application master,AM)、节点管理器(node manager,NM)、容器(Container)、执行器(Executor)。
RM:为服务器集群中的主节点,负责整个服务器集群的资源管理和分配。
AM:用户提交的每个任务均包括一个AM,该AM用于运行该任务所属的应用的驱动(driver),该驱动用于运行应用(Application)的main()函数,实现如下功能:(1)与RM协商以处理任务的资源;(2)将接收到的任务拆分成多个子任务;(3)与NM通信以启动/停止容器,以使容器上的执行器可以运行/终止分配的子任务;(4)监控所有子任务的运行状态,并在某一子任务运行失败时重新为子任务申请资源以重启该子任务。
NM:每个节点上的资源和任务管理器,可以向RM汇报本节点上的资源使用情况和各个Container的运行状态,以及,接收并处理来自AM的Container启动/停止等各种请求。
Container:Container是服务器集群中的资源抽象。它封装了一个节点上的多维度资源,例如内存、CPU、磁盘、网络等。当AM向RM申请执行任务的资源时,RM为AM分配的资源可以用Container表示。RM可以为任务分配至少一个Container,且该任务只能使用该Container中描述的资源。
Executor:是容器上运行的一个进程,用于执行子任务。
服务器集群中有YARN-Cluster和YARN-Client两种提交Spark任务的模式。继续参照图3,以YARN-Cluster模式(即Spark on YARN-Cluster)为例,当用户通过服务器集群外的客户端进行某一应用的Spark任务的提交时,可以采用如下方式提交Spark任务。
步骤1、用户使用客户端服务器(简称:客户端)通过应用的驱动的任务提交接口(例如Spark Submit接口),向RM提交任务请求命令。
客户端可以执行能够提交Spark任务的命令,生成任务请求命令提交给RM,该任务请求命令用于请求处理该Spark任务。其中,该任务请求命令可以包括该Spark任务所属的应用信息,以及,该任务的业务逻辑代码(或者说使用业务逻辑代码生成的程序执行指令,本申请实施例对此不进行限定和区分)。该业务逻辑代码包括:启动该任务所属的应用的驱动的逻辑代码,以及,执行该任务的业务逻辑代码。
应理解,这里所说的能够提交Spark任务的命令例如可以是下述任一命令:spark-class命令,或者,间接调用spark-class命令的其他Spark自带命令,例如spark-submit、spark-beeline、spark-sql、sparkR、spark-shell等。这里所说的应用信息例如可以包括下述至少一项:Spark任务所属的应用的名称,执行该任务所需要申请的资源,以及该应用的参数和配置信息等。
步骤2、RM在接收到该任务请求命令后,为该应用分配第一个容器AM,并将启动该任务所属的应用的驱动的逻辑代码为启动AM的主类执行,以在该容器上启动该应用的Driver。
步骤3、在该应用的Driver启动完成后,AM向RM申请执行该任务的资源。RM分配Container给AM。AM与RM分配的Container所属的NM通信,以在该Container上启动Executor。Executor启动后,可以向该应用的Driver注册并申请子任务。
步骤4、Driver可以根据执行该任务的业务逻辑代码,将该任务拆分成至少一个子任务(Task),然后将子任务分配给Executor执行。
步骤5、Executor执行子任务,并向Driver汇报子任务的运行状况和结果。Driver在获取该任务所有的子任务的执行结果后,可以向客户端返回任务的执行结果。
应理解,上述所说的Spark任务可以是任一任务类型的Spark任务,例如,Sparkstreaming任务、Spark SQL任务等。
在采用上述方式提交Spark任务时,用户在通过客户端提交待处理的任务时,会在客户端服务器上生成一个进程(例如Java进程)。该进程用于与服务器集群保持心跳连接,以使客户端可以及时的获取到任务的执行结果。该进程直到Spark任务处理结束后才会退出。另外,服务器集群在执行客户端提交的针对同一应用的每个任务时,均会为该任务启动一个该任务所属的应用的驱动。
由于客户端侧与服务器集群保持心跳连接的进程,在客户端服务器侧会占用较大的内存(例如占用约1GB+的内存),以及,部分中央处理器(central processing unit,CPU)资源,导致客户端侧的资源开销较大。另外,因驱动启动耗时较长,导致任务的提交效率低,且针对每个任务启动一个应用的驱动的方式导致服务器集群的开销较大。因此,上述提交Spark任务的方式不适合频繁提交Spark任务(例如小于5分钟的调度周期的任务),也不适合并行提交多个Spark任务,导致Spark任务的提交效率较低。
考虑到上述问题,本申请实施例提供了一种任务处理方法,可以提高Spark任务的提交效率,另外,可以在降低资源开销的情况下,实现更高频度和更多并发的提交Spark任务,进而可以提高服务器集群的资源的利用率。应理解,本申请实施例提供的方法包括但不限于上述在YARN-Cluster模式下提交Spark任务的场景,也可以适用于其他提交Spark任务的场景(例如在YARN-Client模式下提交Spark任务),也可以适用于其他使用客户端向服务端提交任务的场景,例如:大数据相关的Hadoop/Hive/Spark/HBase集群,机器学习的集群,关系型数据库Mysql集群,其它自研的分布式集群系统等。也就是说,本申请实施例所涉及的目标任务包括但不限于Spark任务,还可以其他使用客户端向服务端提交任务的场景中所涉及的任务,例如,Flink任务或Hadoop任务等,对此不再赘述。
下面以YARN-Cluster模式下提交Spark任务为例,结合具体地实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或者相似的概念或者过程可能在某些实施例不再赘述。
图4为本申请实施例提供的一种任务处理流程的应用场景图。如图4所示,在本申请实施例中,对提交目标任务(即待执行的任务)的方式做如下改动:
改动1:用户在将需要执行的目标任务的业务逻辑代码写好后,可以通过客户端服务器(简称:客户端)发送至服务器集群进行存储,不再存储在客户端。这样,用户后续在向服务器集群提交该目标任务时,无需再在任务请求命令中携带该目标任务的业务逻辑代码,仅携带该目标任务的业务逻辑代码的访问地址即可。相对存储在客户端的传统方式,将目标任务的业务逻辑代码存储在服务器集群有更好的灵活性和拓展性。
应理解,这里所说的业务逻辑代码,也可以称为使用业务逻辑代码生成的程序执行指令,或者,包括该程序指令的脚本,或者,包括该程序指令的jar文件,或者,包括该程序指令的SQL语句等,本申请实施例对此不进行区分。需要说明的是,本申请实施例涉及的目标任务的业务逻辑代码不再包括启动该任务所属的应用的驱动的逻辑代码,仅包括执行该任务的业务逻辑代码。
例如,用户可以通过客户端向服务器集群中的服务器发送存储请求,该存储请求用于请求存储目标任务的业务逻辑代码。相应地,服务器接收到该存储请求后,可以根据该存储请求,存储目标任务的业务逻辑代码。这里所说的服务器可以是服务器集群中的任一服务器。
应理解,上述目标任务的业务逻辑代码可以存储至服务器集群中服务器(例如运行有该目标任务所属的应用的驱动的服务器)能够访问的地方,或者说,上述目标任务的业务逻辑代码可以存储至该目标任务所属的应用的驱动能够访问的地方。示例性的,目标任务的业务逻辑代码可以存储在服务器集群中的文件系统或数据库中,服务器集群中的服务器可以通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。这里所说的文件系统例如可以是Hadoop分布式文件系统(Hadoop distributed file system,HDFS)。
改动2:用户在第一次通过客户端向服务器集群中的服务器提交应用的任务请求命令时,可以通过现有的驱动的任务提交接口(例如Spark Submit接口)提交该任务请求命令。与现有技术相比,该任务请求命令仅用于请求启动该应用的驱动,不再用于提交该应用的任务。因此,RM在接收到该任务请求命令后,为该应用分配第一个容器AM后,运行该AM的服务器根据该任务请求命令,可以执行启动该应用的驱动,并将该驱动的任务服务接口与该服务器的远程调用端口绑定的操作。
应理解,上述所说的远程调用端口为运行该驱动的服务器上的端口。该远程调用端口例如可以是远程方法调用(remote method invocation,RMI)端口。具体实现时,该远程调用端口可以由用户自定义,例如10000端口。上述所说的任务服务接口可以为应用的驱动的一个接口,用于从远程调用端口接收客户端提交的任务请求命令、查询任务进度,以及,通过远程调用端口向客户端返回任务的执行结果。以Spark任务为例,在本申请实施例中,任务服务接口从远程调用端口接收客户端提交的任务请求命令后,可以调用开源Spark的任务处理接口,以使驱动按照现有的方式,对任务执行资源申请、任务拆分,并将拆分的子任务分发到各个执行器上执行等。
本领域技术人员可以理解的是,远程调用端口、任务服务接口仅是一种示意,本申请实施例对上述端口和接口的命名并不进行限定,只要是能实现上述功能即可。
作为一种可能的实现方式,用户可以开发一个程序作为启动AM的主类,该程序中可以实现如下功能:(1)启动该应用的驱动,(2)注册远程调用端口,并将该应用的驱动中用于处理目标任务的任务服务接口绑定到这个远程调用端口上。例如,以RMI端口为例,供客户端调用的RMI端口可以如下所示:
rmi://[sparkDriverHost]:10000/TaskService
这样,运行该AM的服务器在接收到上述任务请求命令后,可以通过执行上述程序,实现启动该应用的驱动,并将该驱动的任务服务接口与该服务器的远程调用端口绑定的操作。
通过上述启动该应用的驱动,以及,将硬件的远程调用端口与驱动的软件接口绑定的操作,使客户端可以通过该远程调用端口,采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务。为了与后续采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务的任务请求命令进行区分,将采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务的任务请求命令称为第一任务请求命令,将上述请求启动该应用的驱动的任务请求命令可以称为第二任务请求命令。
下面对如何采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务进行说明。具体地:
图5为本申请实施例提供的一种任务处理方法的流程示意图。如图5所示,该方法包括:
S101、客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令。
相应地,服务器接收该第一任务请求命令。其中,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。该访问地址例如可以为存储该目标任务的业务逻辑代码的访问路径。
例如,所述服务器通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。或者说,服务器上运行的驱动,通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交的所述第一任务请求命令。
作为一种可能的实现方式,上述第一任务请求命令还可以携带有执行目标任务所需的参数值。以目标任务为Spark任务为例,这里所说的参数值例如可以是执行该Spark任务所需使用的变量参数。示例性的,以执行x+y=z的spark任务为例,则用户可以预先在服务器集群上存储执行x+y=z的业务逻辑代码。在用户通过第一任务请求命令请求执行该任务时,可以将x的取值与y的取值携带在第一任务请求命令中,以使服务器可以基于该x的取值与y的取值,执行该x+y=z的业务逻辑代码。通过这种方式,可以提高Spark任务处理的灵活性和拓展性。
S102、服务器根据该访问地址,获取预先存储的目标任务的业务逻辑代码。
示例性的,以目标任务的业务逻辑代码存储在服务器集群中的文件系统或数据库为例,服务器可以根据该访问地址,通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。
S103、服务器根据目标任务的业务逻辑代码,通过驱动处理所述目标任务。
以所述目标任务的逻辑代码以jar文件形式存储在HDFS上为例,则服务器可以通过其上运行的驱动,从HDFS上读取该访问地址上的jar文件,并通过java反射的方式,去执行jar内的class。其中,class内是需要执行的目标任务的业务逻辑代码,无需在提交任务请求命令时携带目标任务的业务逻辑代码。
本实施例不限定上述服务器根据目标任务的业务逻辑代码,通过驱动处理目标任务的方式。例如,服务器可以采用图3所示的方式,通过驱动处理目标任务。即,服务器可以基于目标任务的业务逻辑代码,通过驱动将目标任务拆分成多个子任务。然后,服务器可以通过驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。应理解,这里所说的多个执行器可以是RM根据第一任务请求命令分配的多个Container上运行的执行器。也就是说,在本实施例中,对于目标任务的处理可以采用现有的处理方式,对此不再赘述。
S104、服务器通过远程调用端口向客户端返回目标任务的处理结果。
相应地,客户端接收该目标任务的处理结果。
本申请实施例中,通过上述启动该应用的驱动,以及,将硬件的远程调用端口与驱动的软件接口绑定的操作,只需要启动一次应用的驱动,后续客户端可以直接通过远程调用端口,采用远程调用的方式向运行该应用的驱动的服务器提交Spark任务,无需再在每次执行Spark任务时,执行启动该应用的驱动的操作。在相同的时间周期内,相比现有的Spark任务的提交方法,采用本申请实施例的方法,可以提交更多的Spark任务。因此,可以提高目标任务的提交的效率,也可以更高频度更多并发的提交Spark任务,有效的减轻了整个Spark任务处理周期中提交环节的瓶颈。其次,因无需为每个任务都启动一个驱动,因此,可以降低服务器集群的开销。另外,客户端采用远程调用的方式向运行该应用的驱动的服务器提交待处理的目标任务的方式,无需再在客户端侧保留与服务器集群保持心跳连接的进程,因此,可以降低客户端侧的资源开销。
图6为本申请实施例提供的一种服务器的结构示意图。如图6所示,该服务器可以包括:接收模块61、处理模块62和发送模块63。其中,
接收模块61,用于接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。所述目标任务例如可以为Spark任务、或Flink任务、或Hadoop任务等。
处理模块62,用于根据所述访问地址,获取预先存储的所述目标任务的业务逻辑代码,并根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务。例如,所述处理模块62根据所述目标任务的业务逻辑代码,通过所述驱动将所述目标任务拆分成多个子任务,并控制所述发送模块63通过所述驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。
发送模块63,用于通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。
作为一种可能的实现方式,所述接收模块61,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收所述客户端通过所述驱动的任务提交接口提交的第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。所述处理模块62,还用于根据所述第二任务请求命令,启动所述驱动,并将所述驱动的任务服务接口与所述远程调用端口绑定。在该实现方式下,所述接收模块61,具体用于通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。
作为一种可能的实现方式,所述接收模块61,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收来自所述客户端的存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。所述处理模块62,还用于根据所述存储请求,存储所述目标任务的业务逻辑代码。
作为一种可能的实现方式,所述目标任务的业务逻辑代码存储在文件系统或数据库中。则在该实现方式下,所述处理模块62,具体用于通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
本申请实施例提供的服务器,可以执行上述方法实施例中服务器的动作,其实现原理和技术效果类似,在此不再赘述。
图7为本申请实施例提供的一种客户端的结构示意图。如图7所示,该客户端可以包括:发送模块71和接收模块72。其中,
发送模块71,用于通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址。所述目标任务例如可以为Spark任务、或Flink任务、或Hadoop任务等。
接收模块72,用于接收所述服务器通过所述远程调用端口返回的所述目标任务的处理结果。
作为一种可能的实现方式,所述发送模块71,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,通过任务提交接口向所述服务器提交第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。
作为一种可能的实现方式,所述发送模块71,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,向所述服务器发送存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。
作为一种可能的实现方式,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
本申请实施例提供的客户端,可以执行上述方法实施例中客户端的动作,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,应理解以上接收单元实际实现时可以为接收器、发送单元实际实现时可以为发送器。而处理单元可以以软件通过处理元件调用的形式实现;也可以以硬件的形式实现。例如,处理单元可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
图8为本申请实施例提供的一种通信装置的结构示意图。如图8所示,该通信装置可以包括:处理器81(例如CPU)、存储器82;存储器82可能包含高速随机存取存储器(random-access memory,RAM),也可能还包括非易失性存储器(non-volatile memory,NVM),例如至少一个磁盘存储器,存储器82中可以存储各种指令,以用于完成各种处理功能以及实现本申请的方法步骤。可选的,本申请涉及的通信装置还可以包括:电源83、通信总线84以及通信端口85。通信总线84用于实现元件之间的通信连接。上述通信端口85用于实现通信装置与其他外设之间进行连接通信。
在本申请实施例中,上述存储器82用于存储计算机可执行程序代码,程序代码包括指令;当处理器81执行指令时,指令使通信装置的处理器81执行上述方法实施例中服务器的动作,其实现原理和技术效果类似,在此不再赘述。
或者,当处理器81执行指令时,指令使通信装置的处理器81执行上述方法实施例中客户端的动作,其实现原理和技术效果类似,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
Claims (27)
1.一种任务处理方法,其特征在于,包括:
服务器接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址,所述远程调用端口为运行所述应用的驱动的服务器上的端口;所述驱动用于实现处理任务的资源的协商;将接收到的任务拆分成多个子任务;启动或停止容器,以使容器上的执行器运行或终止分配的子任务;监控所有子任务的运行状态,并在某一子任务运行失败时重新为子任务申请资源以重启该子任务;所述服务器根据所述访问地址,获取预先存储的所述目标任务的业务逻辑代码;
所述服务器根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务;
所述服务器通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。
2.根据权利要求1所述的方法,其特征在于,所述服务器接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,还包括:
所述服务器接收所述客户端通过所述驱动的任务提交接口提交的第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动;
所述服务器根据所述第二任务请求命令,启动所述驱动,并将所述驱动的任务服务接口与所述远程调用端口绑定。
3.根据权利要求2所述的方法,其特征在于,所述服务器接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,包括:
所述服务器通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述服务器接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,所述方法还包括:
所述服务器接收来自所述客户端的存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码;
所述服务器根据所述存储请求,存储所述目标任务的业务逻辑代码。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述目标任务的业务逻辑代码存储在文件系统或数据库中,所述服务器通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述服务器根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务,包括:
所述服务器根据所述目标任务的业务逻辑代码,通过所述驱动将所述目标任务拆分成多个子任务;
所述服务器通过所述驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述目标任务为Spark任务、或Flink任务、或Hadoop任务。
9.一种任务处理方法,其特征在于,包括:
客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址,所述远程调用端口为运行所述应用的驱动的服务器上的端口;所述驱动用于实现处理任务的资源的协商;将接收到的任务拆分成多个子任务;启动或停止容器,以使容器上的执行器运行或终止分配的子任务;监控所有子任务的运行状态,并在某一子任务运行失败时重新为子任务申请资源以重启该子任务;
所述客户端接收所述服务器通过所述远程调用端口返回的所述目标任务的处理结果。
10.根据权利要求9所述的方法,其特征在于,所述客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,还包括:
所述客户端通过任务提交接口向所述服务器提交第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。
11.根据权利要求9或10所述的方法,其特征在于,所述客户端通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,所述方法还包括:
所述客户端向所述服务器发送存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。
12.根据权利要求9或10所述的方法,其特征在于,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
13.根据权利要求9或10所述的方法,其特征在于,所述目标任务为Spark任务、或Flink任务、或Hadoop任务。
14.一种服务器,其特征在于,所述服务器包括:
接收模块,用于接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址,所述远程调用端口为运行所述应用的驱动的服务器上的端口;所述驱动用于实现处理任务的资源的协商;将接收到的任务拆分成多个子任务;启动或停止容器,以使容器上的执行器运行或终止分配的子任务;监控所有子任务的运行状态,并在某一子任务运行失败时重新为子任务申请资源以重启该子任务;
处理模块,用于根据所述访问地址,获取预先存储的所述目标任务的业务逻辑代码,并根据所述目标任务的业务逻辑代码,通过所述驱动处理所述目标任务;
发送模块,用于通过所述远程调用端口向所述客户端返回所述目标任务的处理结果。
15.根据权利要求14所述的服务器,其特征在于:
所述接收模块,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收所述客户端通过所述驱动的任务提交接口提交的第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动;
所述处理模块,还用于根据所述第二任务请求命令,启动所述驱动,并将所述驱动的任务服务接口与所述远程调用端口绑定。
16.根据权利要求15所述的服务器,其特征在于,所述接收模块,具体用于通过所述任务服务接口,接收所述客户端通过所述远程调用端口提交给所述驱动的所述第一任务请求命令。
17.根据权利要求14-16任一项所述的服务器,其特征在于:
所述接收模块,还用于在接收客户端通过远程调用端口提交给应用的驱动的第一任务请求命令之前,接收来自所述客户端的存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码;
所述处理模块,还用于根据所述存储请求,存储所述目标任务的业务逻辑代码。
18.根据权利要求14-16任一项所述的服务器,其特征在于,所述目标任务的业务逻辑代码存储在文件系统或数据库中;
所述处理模块,具体用于通过访问所述文件系统或所述数据库获取所述目标任务的逻辑代码。
19.根据权利要求14-16任一项所述的服务器,其特征在于:
所述处理模块,具体用于根据所述目标任务的业务逻辑代码,通过所述驱动将所述目标任务拆分成多个子任务,并控制所述发送模块通过所述驱动将拆分后的多个子任务发送给多个执行器,以使所述执行器执行所述子任务。
20.根据权利要求14-16任一项所述的服务器,其特征在于,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
21.根据权利要求14-16任一项所述的服务器,其特征在于,所述目标任务为Spark任务、或Flink任务、或Hadoop任务。
22.一种客户端,其特征在于,所述客户端包括:
发送模块,用于通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令,所述第一任务请求命令请求处理所述应用的目标任务,所述第一任务请求命令携带有所述目标任务的业务逻辑代码的访问地址,所述远程调用端口为运行所述应用的驱动的服务器上的端口;所述驱动用于实现处理任务的资源的协商;将接收到的任务拆分成多个子任务;启动或停止容器,以使容器上的执行器运行或终止分配的子任务;监控所有子任务的运行状态,并在某一子任务运行失败时重新为子任务申请资源以重启该子任务;
接收模块,用于接收所述服务器通过所述远程调用端口返回的所述目标任务的处理结果。
23.根据权利要求22所述的客户端,其特征在于:
所述发送模块,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,通过任务提交接口向所述服务器提交第二任务请求命令,所述第二任务请求命令用于请求启动所述驱动。
24.根据权利要求22或23所述的客户端,其特征在于:
所述发送模块,还用于在通过远程调用端口向服务器发送提交给应用的驱动的第一任务请求命令之前,向所述服务器发送存储请求,所述存储请求用于请求存储所述目标任务的业务逻辑代码。
25.根据权利要求22或23所述的客户端,其特征在于,所述第一任务请求命令还携带有执行所述目标任务所需的参数值。
26.根据权利要求22或23所述的客户端,其特征在于,所述目标任务为Spark任务、或Flink任务、或Hadoop任务。
27.一种任务处理系统,其特征在于,所述系统包括如权利要求14-21任一项所述的服务器,以及,如权利要求22-26任一项所述的客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910901181.8A CN112540858B (zh) | 2019-09-23 | 2019-09-23 | 任务处理方法、服务器、客户端及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910901181.8A CN112540858B (zh) | 2019-09-23 | 2019-09-23 | 任务处理方法、服务器、客户端及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540858A CN112540858A (zh) | 2021-03-23 |
CN112540858B true CN112540858B (zh) | 2023-10-27 |
Family
ID=75013219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910901181.8A Active CN112540858B (zh) | 2019-09-23 | 2019-09-23 | 任务处理方法、服务器、客户端及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540858B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115640102B (zh) * | 2022-11-16 | 2023-03-31 | 武汉大学 | 基于分布式任务的可重复执行式计算方法、系统和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139129A (ja) * | 1992-10-30 | 1994-05-20 | Hitachi Ltd | 情報処理システム |
CN102137079A (zh) * | 2010-06-21 | 2011-07-27 | 华为技术有限公司 | 一种远程过程调用的业务开发方法及装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN107645508A (zh) * | 2017-10-16 | 2018-01-30 | 深圳市买买提乐购金融服务有限公司 | 一种数据处理系统、方法、客户端及服务器 |
CN107977260A (zh) * | 2017-11-23 | 2018-05-01 | 北京神州泰岳软件股份有限公司 | 任务提交方法及装置 |
CN108280023A (zh) * | 2017-01-04 | 2018-07-13 | 中兴通讯股份有限公司 | 任务执行方法、装置和服务器 |
CN108322530A (zh) * | 2018-01-29 | 2018-07-24 | 广东欧珀移动通信有限公司 | 上下文环境信息的传递方法、装置、服务网关及存储介质 |
CN109347947A (zh) * | 2018-10-15 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种负载均衡的方法、域名服务器及集群nas服务器 |
CN109815025A (zh) * | 2018-12-17 | 2019-05-28 | 顺丰科技有限公司 | 业务模型调用方法、装置及存储介质 |
CN110225099A (zh) * | 2019-05-20 | 2019-09-10 | 中国平安财产保险股份有限公司 | 一种数据处理方法、前端客户端、后端服务器及存储介质 |
CN110262881A (zh) * | 2019-06-12 | 2019-09-20 | 深圳前海微众银行股份有限公司 | 一种Spark作业的提交方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10140151B2 (en) * | 2017-04-19 | 2018-11-27 | International Business Machines Corporation | Leveraging directed acyclic graph (DAG) information to group tasks for execution |
-
2019
- 2019-09-23 CN CN201910901181.8A patent/CN112540858B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139129A (ja) * | 1992-10-30 | 1994-05-20 | Hitachi Ltd | 情報処理システム |
CN102137079A (zh) * | 2010-06-21 | 2011-07-27 | 华为技术有限公司 | 一种远程过程调用的业务开发方法及装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN108280023A (zh) * | 2017-01-04 | 2018-07-13 | 中兴通讯股份有限公司 | 任务执行方法、装置和服务器 |
CN107645508A (zh) * | 2017-10-16 | 2018-01-30 | 深圳市买买提乐购金融服务有限公司 | 一种数据处理系统、方法、客户端及服务器 |
CN107977260A (zh) * | 2017-11-23 | 2018-05-01 | 北京神州泰岳软件股份有限公司 | 任务提交方法及装置 |
CN108322530A (zh) * | 2018-01-29 | 2018-07-24 | 广东欧珀移动通信有限公司 | 上下文环境信息的传递方法、装置、服务网关及存储介质 |
CN109347947A (zh) * | 2018-10-15 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种负载均衡的方法、域名服务器及集群nas服务器 |
CN109815025A (zh) * | 2018-12-17 | 2019-05-28 | 顺丰科技有限公司 | 业务模型调用方法、装置及存储介质 |
CN110225099A (zh) * | 2019-05-20 | 2019-09-10 | 中国平安财产保险股份有限公司 | 一种数据处理方法、前端客户端、后端服务器及存储介质 |
CN110262881A (zh) * | 2019-06-12 | 2019-09-20 | 深圳前海微众银行股份有限公司 | 一种Spark作业的提交方法及装置 |
Non-Patent Citations (3)
Title |
---|
Tudor Alexandru Voicu 等.SparkJNI: A Toolchain for Hardware Accelerated Big Data Apache Spark.《2019 IEEE 4th International Conference on Big Data Analytics (ICBDA)》.2019,152-157. * |
徐佳俊 等. 基于Spark的异构集群调度策略研究.《计算机科学与应用》.2016,第6卷(第11期),692-704. * |
陈磊.基于Spark技术的经济动态管理系统的研究与实现.《中国优秀硕士学位论文全文数据库 信息科技辑》.2019,(第2期),I138-1095. * |
Also Published As
Publication number | Publication date |
---|---|
CN112540858A (zh) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467725B2 (en) | Managing access to a resource pool of graphics processing units under fine grain control | |
WO2020108303A1 (zh) | 一种基于异构计算的任务处理方法及软硬件框架系统 | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
US8028292B2 (en) | Processor task migration over a network in a multi-processor system | |
US11061895B2 (en) | Adaptive granule generation for parallel queries with run-time data pruning | |
CA2502682C (en) | Remote system administration using command line environment | |
CN110383764B (zh) | 无服务器系统中使用历史数据处理事件的系统和方法 | |
CN110704186A (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
CN110121704B (zh) | 一种用于存储过程的执行方法、设备以及系统 | |
JP2022511613A (ja) | 量子コンピューティング・ジョブの共同スケジューリング | |
AU2019201544B2 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
JP2004206712A (ja) | トポロジ・アウェア・グリッド・サービス・スケジューラ・アーキテクチャ | |
CN113821311A (zh) | 任务执行方法及存储设备 | |
US9104501B2 (en) | Preparing parallel tasks to use a synchronization register | |
US11645098B2 (en) | Systems and methods to pre-provision sockets for serverless functions | |
US10397317B2 (en) | Boomerang join: a network efficient, late-materialized, distributed join technique | |
JP2023511467A (ja) | 機械学習ワークロードのためのタスクスケジューリング | |
Diab et al. | Dynamic sharing of GPUs in cloud systems | |
CN116795647A (zh) | 一种数据库异构资源管理与调度方法、装置、设备及介质 | |
CN115495221A (zh) | 一种数据处理系统及方法 | |
CN1783121A (zh) | 用于执行设计自动化的方法和系统 | |
CN112540858B (zh) | 任务处理方法、服务器、客户端及系统 | |
Narantuya et al. | Multi-Agent Deep Reinforcement Learning-Based Resource Allocation in HPC/AI Converged Cluster. | |
WO2006083043A2 (en) | Processor task migration over a network in a multi-processor system | |
CN111459871A (zh) | 一种基于fpga异构计算的区块链加速系统及方法 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220215 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041 Applicant before: Chengdu Huawei Technologies Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |