CN107526632A - 进程池扩充方法和装置 - Google Patents
进程池扩充方法和装置 Download PDFInfo
- Publication number
- CN107526632A CN107526632A CN201610443059.7A CN201610443059A CN107526632A CN 107526632 A CN107526632 A CN 107526632A CN 201610443059 A CN201610443059 A CN 201610443059A CN 107526632 A CN107526632 A CN 107526632A
- Authority
- CN
- China
- Prior art keywords
- server
- information
- instruction
- distribution
- pool
- 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
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了进程池扩充方法和装置,该方法包括:判断进程池中不存在处于空闲状态的进程,则确定第一服务器;向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;将所述第一服务器上的全部进程的信息添加至所述进程池。本申请的方案在进程池中无空闲进程时,能够动态地扩充进程池,缩减执行后续作业任务的时间。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及进程池扩充方法和装置。
背景技术
进程池是由服务器预先创建的一组进程,进程池中的所有进程都运行着相同的代码,并具有相同的属性,例如优先级或标识符等。当有新的作业任务来到时,主进程将通过某种方式选择进程池中的某一个进程来执行该作业任务。相比于动态创建进程之后再由该进程执行作业任务,选择一个已经存在的进程的代价更小,能够缩短作业任务执行时间。
现有技术的不足在于,若当前进程池中无空闲进程,则无法在进程池中分配进程执行作业任务,需要等待进程池中重新出现空闲进程后才能够执行,作业任务执行时间长。
发明内容
本申请实施例提出了两种进程池扩充方法和两种进程池扩充装置,在进程池中无空闲进程时,能够缩减执行后续作业任务的时间。
在一个方面,本申请实施例提供了一种进程池扩充方法,其特征在于,所述方法包括:
判断进程池中不存在处于空闲状态的进程,则确定第一服务器;
向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
将所述第一服务器上的全部进程的信息添加至所述进程池。
优选的,在所述判断所述进程池中不存在处于空闲状态的进程之前,还包括:
确定第二服务器;
向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
根据所述第二服务器上的全部进程的信息,创建所述进程池。
优选的,所述确定第一服务器或者所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;
根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器或者所述第二服务器。
优选的,在所述判断所述进程池中不存在处于空闲状态的进程之前,还包括:
获取作业任务请求;
在所述进程池中为所述作业任务请求分配一个处于空闲状态的进程;
向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
在所述进程池中将所述分配的进程标记为忙碌状态;
或者,
与所述进程池中的各个处于空闲状态的进程保持心跳通信;
确定无法获取心跳信号的处于空闲状态的进程;
向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
在所述进程池中将所述无信号的进程标记为无响应状态;
优选的,在所述向所述分配的进程对应的服务器发送分配指令之后,还包括:
接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
在所述进程池中将所述分配的进程重新标记为空闲状态;
当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
将所述第一服务器上的全部进程的信息从进程池中删除。
优选的,在所述向所述无信号的进程对应的服务器发送重启指令之后,还包括:
接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
优选的,进程池中优先选择所述第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
在另一个方面,本申请实施例提供了一种进程池扩充方法,其特征在于,所述方法包括:
接收启动指令,根据所述启动指令启动本服务器上的全部进程;
反馈所述启动的全部进程的信息。
优选的,在所述反馈所述启动的全部进程的信息之后,还包括:
接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
根据所述分配指令控制所述分配的进程执行所述作业任务;
确定所述作业任务执行完毕;
反馈所述作业任务执行完毕的信息;
接收关闭指令;
根据所述关闭指令关闭本服务器上的全部进程。
优选的,所述方法还包括:
接收重启指令,所述重启指令包括无信号的进程的信息;
重启所述无信号的进程;
反馈重启成功消息。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
在另一个方面,本申请实施例提供了一种进程池扩充装置,其特征在于,所述装置包括:
服务器确定模块,用于判断进程池中不存在处于空闲状态的进程时,确定第一服务器;
调度发送模块,用于向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
调度接收模块,用于接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
进程池维护模块,用于将所述第一服务器上的全部进程的信息添加至所述进程池。
优选的,所述服务器确定模块,在所述判断所述进程池中不存在处于空闲状态的进程之前,还用于确定第二服务器;
所述调度发送模块,还用于向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
所述调度接收模块,还用于接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
所述进程池维护模块,还用于根据所述第二服务器上的全部进程的信息,创建所述进程池。
优选的,所述确定第一服务器或者所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;
根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器或者所述第二服务器。
优选的,所述装置还包括:
请求获取模块,用于在所述服务器确定模块判断所述进程池中不存在处于空闲状态的进程之前,获取作业任务请求;
所述进程池维护模块,还用于在所述进程池中为所述作业任务请求分配一个处于空闲状态的进程;
所述调度发送模块,还用于向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
所述进程池维护模块,还用于在所述进程池中将所述分配的进程标记为忙碌状态;
或者,
心跳通信模块,用于在所述服务器确定模块判断所述进程池中不存在处于空闲状态的进程之前,与所述进程池中的各个处于空闲状态的进程保持心跳通信;
所述进程池维护模块,还用于确定无法获取心跳信号的处于空闲状态的进程;
所述调度发送模块,还用于向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
所述进程池维护模块,还用于在所述进程池中将所述无信号的进程标记为无响应状态。
优选的,所述调度接收模块,还用于在所述调度发送模块向所述分配的进程对应的服务器发送分配指令之后,接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
所述进程池维护模块,还用于在所述进程池中将所述分配的进程重新标记为空闲状态;
所述调度发送模块,还用于在所述进程池维护模块将所述分配的进程重新标记为空闲状态之后,当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
所述进程池维护模块,还用于在所述调度发送模块向所述第一服务器发送关闭指令之后,将所述第一服务器上的全部进程的信息从进程池中删除。
优选的,所述调度接收模块,还用于在所述调度发送模块向所述无信号的进程对应的服务器发送重启指令之后,接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
所述进程池维护模块,还用于根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
优选的,所述进程池维护模块在进程池中优先选择所述第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
在另一个方面,本申请实施例提供了一种进程池扩充装置,其特征在于,所述装置包括:
指令接收模块,用于接收启动指令;
启动模块,用于根据所述启动指令启动本服务器上的全部进程;
指令反馈模块,用于反馈所述启动的全部进程的信息。
优选的,所述指令接收模块,还用于在所述指令反馈模块反馈所述启动的全部进程的信息之后,接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
所述装置还包括:
执行模块,用于根据所述分配指令控制所述分配的进程执行所述作业任务,确定所述作业任务执行完毕;
所述指令反馈模块,还用于反馈所述作业任务执行完毕的信息;
所述指令接收模块,还用于在所述指令反馈模块反馈所述作业任务执行完毕的信息之后,接收关闭指令;
所述装置还包括:
关闭模块,用于根据所述关闭指令关闭本服务器上的全部进程。
优选的,所述指令接收模块,还用于接收重启指令,所述重启指令包括无信号的进程的信息;
所述装置还包括:重启模块,用于重启所述无信号的进程;
所述指令反馈模块,还用于反馈重启成功消息。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
本申请的有益效果如下:通过判断进程池中不存在处于空闲状态的进程,则确定第一服务器;向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;将所述第一服务器上的全部进程的信息添加至所述进程池。本申请的方案在进程池中无空闲进程时,能够动态地扩充进程池,缩减执行后续作业任务的时间。
附图说明
下面将参照附图描述本申请的具体实施例,其中:
图1示出了本申请实施例一中进程池扩充方法的流程示意图;
图2示出了本申请实施例二中进程池创建方法的流程示意图;
图3示出了本申请实施例三中进程池扩充方法的流程示意图;
图4示出了本申请实施例四中进程池扩充方法的流程示意图;
图5示出了本申请实施例五中进程池扩充方法的流程示意图;
图6示出了本申请实施例六中进程池扩充方法的流程示意图;
图7示出了本申请实施例七中Spark集群的架构示意图;
图8示出了本申请实施例八中进程池扩充装置的结构示意图;
图9示出了本申请实施例九中进程池扩充装置的结构示意图。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:若当前进程池中无空闲进程,则无法在进程池中分配进程执行作业任务,需要等待进程池中重新出现空闲进程后才能够执行,作业任务执行时间长。
基于此,本申请实施例提出了在进程池中无空闲进程时,动态地扩充进程池,缩减执行后续作业任务的时间。下面结合实施例对本申请的具体实施方式进行描述。
实施例一:
图1示出了本申请实施例一中的进程池扩充方法的流程示意图,如图所示,包括:
步骤101,判断进程池中是否存在处于空闲状态的进程;若否则进入步骤102;
步骤102,确定第一服务器;
步骤103,向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
步骤104,接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
步骤105,将所述第一服务器上的全部进程的信息添加至所述进程池。
在步骤101中,调度器维护一个进程池,所述进程池中包括至少一个进程的信息,这些进程运行在其他各个服务器上。调度器存储并实时更新进程池中各进程的信息,所述进程的信息可以包括进程的编号,进程运行于哪一个服务器上,以及所述进程当前的状态。所述状态可以为忙碌、空闲或者无响应,其中忙碌状态表明某进程当前正用于执行某一作业任务;空闲状态表明某进程已经启动,但是当前未执行作业任务,处于待机状态;无响应表明当前进程状态不明,可能是调度器与该进程进行通信时出现了故障以致无法获取该进程信息,也可能是该进程或者运行该进程的服务器发生了故障导致该进程无法响应调度器。
因为进程池中的空闲进程是已经启动的进程,因此可直接被分配用于执行作业任务,即无需在接收作业任务请求之后再启动进程,能够缩短作业任务的执行时间。调度器判断进程池中是否还有处于空闲状态的进程,若存在,则说明有作业任务时可直接分配;若不存在则进入步骤102。
在步骤102中,调度器根据预存的多个可创建进程的服务器的信息,选择其中的一个,用于在选中的服务器上创建多个空闲进程,并将这些进程信息纳入进程池中。
优选的,所述确定第一服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器。
所述空闲的服务器指服务器空闲或者其中部分空闲,能够在其上启动并运行进程的服务器。在多个可启动进程的服务器中可根据各服务器的优先级选定一个服务器启动空闲进程。优先级可以是根据服务器的性能确定的,例如将计算能力最高的服务器或者内存最大的服务器列为优先级最高的服务器;优先级也可以是根据服务器可运行进程的最大数量确定的,例如某一服务器是专用于运行该进程的,则根据该服务器的内存确定其能够运行的进程的最大数量,若某一服务器还用于其他作业,则确定其中用于运行前述进程的部分能够运行的进程的最大数量,根据最大数量的多少确定优先级;优先级还可以是根据用户预先指定的顺序确定的;当然可以考虑上述各种优先级的确定方式综合确定各服务器的优先级。
在步骤103中,调度器向选择出的优先级最高的第一服务器发送启动指令,以使所述第一服务器根据所述启动指令启动其上的全部进程;即在第一服务器上尽可能多的启动进程,启动后的进程将处于空闲状态。
在步骤104中,第一服务器在尽可能多的启动了运行于其上的进程后,将启动的全部进程的信息反馈至调度器。
在步骤105中,调度器将所述第一服务器上的全部进程的信息添加至调度器维护的进程池中,此时进程池中就增加了运行于第一服务器的目前均处于空闲状态的进程的信息。待有作业任务请求时,可将增添的新的处于空闲状态的进程分配用于执行新的作业请求。
本实施例中,在进程池中无空闲进程时,能够动态地扩充进程池,缩减执行后续作业任务的时间。同时还能够根据服务器的优先级,择优选择服务器启动进程以扩充进程池。此外可采用独立设置的服务器专用于执行某一类进程,避免占用计算集群内资源。
实施例二:
在实施例一动态扩充进程池之前,可包括创建进程池的步骤。图2示出了本申请实施例二中进程池创建方法流程示意图,如图2所示,包括:
步骤201,确定第二服务器;
步骤202,向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
步骤203,接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
步骤204,根据所述第二服务器上的全部进程的信息,创建所述进程池。
本实施例中,在计算集群创建或初始化时,便创建进程池,以便缩减后续作业任务的执行时间。
在步骤201中,调度器根据计算集群内多个可创建进程的服务器的信息,选择其中的一个,用于在选中的服务器上创建多个空闲进程,并将这些进程信息作为进程池中初始的进程信息。
优选的,所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;根据所述各服务器的信息,确定优先级最高的服务器为所述第二服务器。
所述空闲的服务器指服务器空闲或者其中部分空闲,能够在其上启动并运行进程的服务器。在多个可启动进程的服务器中可根据各服务器的优先级选定一个服务器启动空闲进程。优先级可以是根据服务器的性能确定的,例如将计算能力最高的服务器或者内存最大的服务器列为优先级最高的服务器;优先级也可以是根据服务器可运行进程的最大数量确定的,例如某一服务器是专用于运行该进程的,则根据该服务器的内存确定其能够运行的进程的最大数量,若某一服务器还用于其他作业,则确定其中用于运行前述进程的部分能够运行的进程的最大数量,根据最大数量的多少确定优先级;优先级还可以是根据用户预先指定的顺序确定的;当然可以考虑上述各种优先级的确定方式综合确定各服务器的优先级。
在步骤202中,调度器向所述第二服务器发送启动指令,以使所述第二服务器根据所述启动指令启动其上的全部进程;即在第二服务器上尽可能多的启动进程,启动后的进程将处于空闲状态。
步骤203,第二服务器在尽可能多的启动了运行于其上的进程后,将启动的全部进程的信息反馈至调度器。
在步骤204中,根据所述第二服务器上的全部进程的信息创建进程池,即初始的进程池中仅包括第二服务器上的全部进程的信息,并且这些进程均处于空闲状态。
本实施例中,在计算集群创建或初始化过程中创建进程池,缩减执行后续作业任务的时间。
实施例三:
本实施例三可在上述实施例一或者二的基础上实施,与上述实施例相似或重复之处可参照上述实施例的描述。图3示出了本申请实施例三中进程池扩充方法流程示意图,如图3所示,包括:
步骤301,获取作业任务请求;
步骤302,在进程池中为所述作业任务请求分配一个处于空闲状态的进程;
步骤303,向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
步骤304,在所述进程池中将所述分配的进程标记为忙碌状态;
步骤305,判断进程池中是否存在处于空闲状态的进程;若否则进入步骤306;
步骤306,确定第一服务器;
步骤307,向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
步骤308,接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
步骤309,将所述第一服务器上的全部进程的信息添加至所述进程池;
步骤310,接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
步骤311,在所述进程池中将所述分配的进程重新标记为空闲状态;
步骤312,当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
步骤313,将所述第一服务器上的全部进程的信息从进程池中删除。
在步骤301中,调度器接收用户发送的作业任务请求;
在步骤302中,在进程池中为获取的作业任务请求分配一个处于空闲状态的进程,分配方式可以为轮询、按照优先级或者其他分配策略。因为空闲进程是已经启动的进程,因此可直接被分配用于执行作业任务请,而无需在接收作业任务请求之后再启动进程,缩短了作业任务的执行时间。
优选的,在进程池中优先选择第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
所述第二服务器即计算集群创建或者初始化时最初建立的进程池所属的服务器,在分配任务时优先选择最初建立的进程池中的进程,待这些进程全被分配用于执行作业任务后,启动另一服务器(第一服务器)中的全部进程并将新启动的进程添加至进程池中,用于被分配执行后续的作业任务。当最初建立的进程池(即第二服务器上的进程)执行完之前被分配执行的任务,并被释放,重新变为空闲态后,后续的作业任务将优先分配给这些第二服务器上的进程执行,即尽可能优先选择初始进程池中(第二服务器上)的进程分配作业任务,而不优先将作业任务分配给后扩充入进程池的(第一服务器上)的进程。以便在后续步骤312中,能够尽可能的使后扩充入进程池的(第一服务器上)的进程处于忙碌状态,将其全部关闭后能够释放第一服务器。
在步骤303中,根据所述分配的进程的信息确定所述分配的进程运行于哪一个服务器上,之后调度器向所述服务器发送分配指令,告知所述服务器需要执行的作业任务的信息,以及分配了该服务器上的哪个进程执行所述作业任务。
在步骤304中,在所述进程池中对已分配的进程的信息进行修改,将其标记为忙碌状态。所述步骤303和步骤304可以是同时或者不同时执行的,并且先后顺序不做限定。
步骤305-步骤309与上述步骤101-步骤105相同,在分配进程池中的某一处于空闲状态的进程执行作业任务后,及时判断进程池中是否还存在能够直接分配用于执行后续作业任务的处于空闲状态的进程,若不存在,则及时扩充所述进程池。
在步骤310中,等待前述分配的进程所属的服务器反馈的,前述分配的进程已经执行完毕所述作业任务的信息。
在步骤311中,将前述分配的用于执行作业任务,并且作业任务已经执行完毕的进程,在进程池中由忙碌状态重新标记为空闲状态,即该进程后续可继续被分配用于执行其他作业任务。
在步骤312中,当已有的作业任务释放了某各进程,使进程池中增加了处于空闲状态的进程后,确定1)所述进程池中属于某一服务器的全部进程当前均全部或部分处于空闲状态或者无响应状态,即当前均未执行作业任务而处于忙碌状态时,可考虑关闭该服务器上的全部进程,以节约资源;以及确定2),进程池中,除前述的服务器上所有进程均未处于忙碌状态的服务器外,还有其他处于空闲状态的进程。只有同时满足上述1)和2)时才能确保关闭前述服务器后,还有处于空闲状态的进程能够直接被分配给后续新的作业任务,此时调度器向前述服务器发送关闭指令,以使所述服务器关闭其上的全部进程。
当在步骤302中优先将作业任务分配给第二服务器时,在步骤312中,更容易将后扩充的第一服务器上的全部进程关闭。
在步骤313中,将所述关闭的进程所属的服务器上的全部进程的信息从进程池中删除。
本实施例中,在分配进程池中的进程执行作业任务后,能够及时地判断进程池中有无空闲进程,以动态地扩充进程池,缩减执行后续作业任务的时间。同时能够在进程执行作业任务完毕后,及时地判断是否需要合理的缩小进程池。
实施例四:
本实施例四可在上述实施例的基础上实施,与上述实施例相似或重复之处可参照上述实施例的描述。图4示出了本申请实施例四中进程池扩充方法流程示意图,如图4所示,包括:
步骤401,与所述进程池中的各个处于空闲状态的进程保持心跳通信;
步骤402,确定无法获取心跳信号的处于空闲状态的进程;
步骤403,向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
步骤404,在所述进程池中将所述无信号的进程标记为无响应状态;
步骤405,判断进程池中是否存在处于空闲状态的进程;若否则进入步骤406;
步骤406,确定第一服务器;
步骤407,向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
步骤408,接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
步骤409,将所述第一服务器上的全部进程的信息添加至所述进程池;
步骤410,接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
步骤411,根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
在步骤401中,调度器周期性的与进程池中的各个处于空闲状态的进程保持心跳通信,以确定其随时可用于被分配执行作业任务。
在步骤402中,调度器定位原本处于空闲状态,但是最近一次心跳通信不能获取响应的心跳信号的进程,即无信号的进程。
在步骤403中,调度器确定所述无信号的进程运行于哪个服务器,并向该服务器发送包括所述无信号的进程的信息的重启指令,告知该服务器需要重启哪个无信号进程,以使所述服务器重启所述无信号的进程。
在步骤404中,在所述进程池中将所述待重启的无信号的进程标记为无响应状态;所述步骤403和步骤404可以是同时或者不同时执行的,并且先后顺序不做限定。
步骤405-步骤409与上述步骤101-步骤105相同,在发现进程池中的某一原本处于空闲状态的进程变为无响应状态,导致可能不能直接被分配执行后续作业任务时,及时判断进程池中是否还存在能够直接分配用于执行后续作业任务的处于空闲状态的进程,若不存在,则及时扩充所述进程池。
在步骤410中,等待前述服务器重启所述无信号的进程后反馈的重启成功消息。
在步骤411中,根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态,即该进程后续可继续被分配用于执行其他作业任务。
本实施例中,在发现进程池中的某些空闲进程无响应后,能够及时地判断进程池中有无其他空闲进程,以动态地扩充进程池,缩减执行后续作业任务的时间。同时能够重启恢复无响应进程。
实施例五:
在计算集群中可安排至少一个专用于运行某类进程的独立服务器,或者各服务器可用作其他作业,但有专门独立的部分用来运行某类进程。基于这些服务器可为计算集群建立某类进程的进程池,并根据作业任务的实际情况在多个服务器上启动进程并将这些服务器上运行的进程纳入进程池中以实现对进程池的动态扩展。
图5示出了本申请实施例五中的进程池扩充方法的流程示意图,如图所示,包括:
步骤501,接收启动指令,根据所述启动指令启动本服务器上的全部进程;
步骤502,反馈所述启动的全部进程的信息。
步骤503,接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
步骤504,根据所述分配指令控制所述分配的进程执行所述作业任务;
步骤505,确定所述作业任务执行完毕;
步骤506,反馈所述作业任务执行完毕的信息;
步骤507,接收关闭指令;
步骤508,根据所述关闭指令关闭本服务器上的全部进程。
在步骤501中,服务器接收调度器发送的启动指令,根据所述启动指令启动本服务器上的全部进程,即当前服务器上尽可能多的启动进程,启动后的进程将处于空闲状态。
在步骤502中,服务器在尽可能多的启动了运行于其上的进程后,将启动的全部进程的信息反馈至调度器,所述进程的信息可以包括进程的编号,进程运行的当前服务器的信息,以及所述进程启动后当前正处于空闲状态的信息。
在步骤503中,服务器启动并运行的各进程处于空闲状态后,等待接收调度器发送的分配指令,所述分配指令包括分配的进程的信息和作业任务的信息。
在步骤504中,服务器根据所述分配指令控制所述分配的进程执行所述作业任务。
在步骤505中,进程执行完毕分配的作业任务后通知所在的服务器,服务器确定所述作业任务执行完毕。
在步骤506中,服务器反馈所述作业任务执行完毕的信息,即反馈当前哪个进程因执行完作业任务而变为空闲状态。
本实施例还可以包括如下步骤:
在步骤507中,服务器接收调度器发送的关闭指令,此时通常服务器上的全部进程均未在执行作业任务;
在步骤508中,服务器根据所述调度器发送的关闭指令关闭本服务器上的全部进程。
本实施例中,计算集群能够动态启动某一服务器上的全部进程并纳入进程池中,实现进程池的动态扩充,缩减执行后续作业任务的时间。同时服务器能够在其上进程执行完作业任务后,根据调度器的指令动态关闭本服务器上的全部进程,以合理的缩小进程池。
实施例六:
本实施例六可在上述实施例五的基础上实施,与上述实施例相似或重复之处可参照上述实施例的描述。图6示出了本申请实施例六中进程池扩充方法流程示意图,如图6所示,包括:
步骤601,接收启动指令,根据所述启动指令启动本服务器上的全部进程;
步骤602,反馈所述启动的全部进程的信息;
步骤603,接收重启指令,所述重启指令包括无信号的进程的信息;
步骤604,重启所述无信号的进程;
步骤605,反馈重启成功消息。
其中步骤601和602与上述步骤501和502相同。本实施例中服务器中的各处于空闲状态的进程与调度器保持心跳通信,若调度器无法获取某一服务器中处于空闲状态的进程的心跳信号后,会向该服务器发送重启指令。
在步骤603中,服务器接收调度器发送的重启指令,所述重启指令包括无信号的进程的信息。
在步骤604中,服务器根据所述重启指令,重启重启指令中指定的无信号的进程。
在步骤605中,服务器向调度器反馈重启成功的消息,即之前无信号的进程当前已重新进程空闲状态,可用于执行作业任务。
实施例七:
一个Spark集群由驱动(Driver)节点、主(Master)节点、工作(Worker)节点三部分组成,3种节点分别用于运行Driver进程、Master进程和执行(Executor)进程。通常主节点只有1个,工作节点有多个;每个作业任务都会对应一个独立的驱动节点和一个Driver进程。
图7示出了本实施例中Spark集群的架构示意图,本实施例中,将驱动节点和工作节点分开,由独立的外部服务器作为驱动节点,专用于运行Driver进程。这样的架构中,Driver进程与Spark集群解耦,提升了Spark集群的运行稳定性。
步骤701,在Spark集群启动时,作业调度模块读取事先设定的Driver服务器列表,并根据Driver进程池中初始需要的初始进程数量确定一个Driver服务器。
所述Driver服务器列表如表1所示:
表1Driver服务器列表
若该Spark集群通常需要的Driver数量在15个左右,则作业调度模块选择编号为1,最大Driver进程数量为20,能够满足基本需求的服务器,作为初始服务器。
步骤702,作业调度模块登录服务器列表中编号为1的服务器,使用Linux系统脚本按照预启动进程数量启动其上20个空闲的Driver进程,将这20个空闲的Driver进程的信息添加入作业调度模块的进程池,得到初始进程池,所述初始进程池如表2所示。在作业调度模块上维护所述进程池,在初始时进程池中的Driver进程均处于空闲状态,并且均运行于编号为1的服务器。
进程编号 | 所属服务器编号 | 服务器地址 | 进程状态 |
001 | 1 | XXX.XXX.X.1 | 空闲 |
002 | 1 | XXX.XXX.X.1 | 空闲 |
003 | 1 | XXX.XXX.X.1 | 空闲 |
…… | 1 | XXX.XXX.X.1 | 空闲 |
020 | 1 | XXX.XXX.X.1 | 空闲 |
表2初始进程池
步骤702,外部客户端向作业调度模块提交Spark作业任务请求,作业调度模块查询进程池,从中按照顺序分配一个进程,例如选择编号为001的进程,并确定所述分配的进程运行于编号为1的服务器上,将所述Spark作业任务转发至第一服务器。同时进程池中将该Driver进程的进程状态标记为忙碌。
步骤703,运行于第一服务器的编号为001的Driver进程对作业任务进行分析并制定执行计划,同时向主节点注册,提交作业运行请求;主节点接到作业运行请求后,向集群中空闲的工作节点分配作业运行任务;接收到任务的工作节点启动执行(Executor)进程,同时主动向第一服务器的Driver进程注册,报告本节点可用资源情况;Driver进程根据工作节点的可用资源及作业执行计划,将作业任务拆分成多个小任务(Task)并分配给注册的工作节点进行计算。
当客户端短期内大批量的提交了作业任务,例如一共提交了20条作业任务,此时作业调度模块将进程池中的全部空闲进程均分配执行作业任务,并且进程状态全部标记为忙碌状态。
步骤704,在步骤703后,进程池中再无空闲进程,此时提交的作业任务需要等之前的作业任务执行完毕释放进程池中的资源后才能够执行,效率低。因此,在这种情况下,调度器判断进程池满后,及时的在上述表1的进程池列表中选择另一服务器,例如选择性能更高的编号为3的服务器,作业调度模块登录编号为3的服务器,启动其上10个Driver进程,并将这10个Driver进程的信息添加至进程池中,得到扩充后的进程池,如表3所示:
进程编号 | 所属服务器编号 | 服务器地址 | 进程状态 |
001 | 1 | XXX.XXX.X.1 | 忙碌 |
002 | 1 | XXX.XXX.X.1 | 忙碌 |
003 | 1 | XXX.XXX.X.1 | 忙碌 |
…… | 1 | XXX.XXX.X.1 | 忙碌 |
020 | 1 | XXX.XXX.X.1 | 忙碌 |
021 | 3 | XXX.XXX.X.3 | 空闲 |
022 | 3 | XXX.XXX.X.3 | 空闲 |
…… | 3 | XXX.XXX.X.3 | 空闲 |
030 | 3 | XXX.XXX.X.3 | 空闲 |
表3扩充后的进程池
后续的作业任务请求将可以直接分配给编号为3的服务器中已经启动的进程执行,节约另行启动Driver进程的时间。依本步骤类推,若新扩充的10个Driver进程又均进入忙碌状态,并且进程池中无其他空闲进程,则调度服务器可再登录编号为4的服务器,启动其上的Driver进程并将新的进程扩展到进程池中。动态扩充Driver进程服务器使系统具有高可扩展性。
步骤705,工作节点在Executor进程中完成Task计算后,将结果反馈给主节点和Driver进程;Driver进程将作业任务执行结果反馈给作业调度模块。之后,作业调度模块将执行完作业任务的Driver进程重新标记为空闲状态。获得后续的作业任务请求后,优先分配初始进程池中的进程执行,在依次分配给后续扩充的服务器上的进程执行,即按照编号为1,3和4的服务器的顺序,优先分配在先服务器上处于空闲状态的进程执行作业任务。
步骤706,因为优先将作业任务分配给初始服务器上的Driver进程,所以在大量作业任务均执行完毕后,后扩充的进程池中的服务器的进程将更容易进入到空闲状态,例如当编号为4的服务器上的进程状态均不为忙碌时,并且还存在编号为1和编号为3的服务器上有空闲进程时,向4号服务器发送关闭指令,并将其上的全部Driver进程的信息从进程池中删除。既能够节约服务器资源,也能够确保进程池中仍有空闲进程能够随时执行作业任务。
在上述各步骤进行的同时,作业调度模块在系统启动时,同时开启定时任务,定时与各台服务器上的空闲Driver进程进行心跳通信。如果获取不到某个Driver进程的心跳信号,则在进程池中将该进程标记为无响应状态,并向所述服务器发送重启指令,使所述服务器重新启动对应的Driver进程使其保持可用的空闲状态。当有进程变为无响应状态后,作业调度模块也会及时执行上述步骤704,以确保随时有可用的空闲进程能够执行作业任务,提高了系统的可用性。
在本实施例中服务器可以与Spark集群中的其他物理设备分立设置,如图7所示;此外,各专用于运行Driver进程的服务器也可以作为虚拟服务器,与各个运行Executor进程的Worker节点设置于同一个物理设备上(图7未示出),但是对这些物理设备上的专用于运行Driver进程的资源进行控制,即仅能运行表1中限定的最大数量的Driver进程,以避免过多的启动Driver进程挤占物理设备上的其他计算资源。
实施例八:
基于同一发明构思,本申请实施例中还提供了一种进程池扩充装置,由于这些设备解决问题的原理与一种进程池扩充方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
图8为本申请实施例八中进程池扩充装置的结构示意图。
如图8所示,本申请实施例八中进程池扩充装置800包括:
服务器确定模块801,用于判断进程池中不存在处于空闲状态的进程时,确定第一服务器;
调度发送模块802,用于向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
调度接收模块803,用于接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
进程池维护模块804,用于将所述第一服务器上的全部进程的信息添加至所述进程池。
优选的,所述服务器确定模块801,在所述判断所述进程池中不存在处于空闲状态的进程之前,还用于确定第二服务器;
所述调度发送模块802,还用于向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
所述调度接收模块803,还用于接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
所述进程池维护模块804,还用于根据所述第二服务器上的全部进程的信息,创建所述进程池。
优选的,所述确定第一服务器或者所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;
根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器或者所述第二服务器。
优选的,所述装置800还包括:
请求获取模块805,用于在所述服务器确定模块801判断所述进程池中不存在处于空闲状态的进程之前,获取作业任务请求;
所述进程池维护模块804,还用于在所述进程池中为所述作业任务请求分配一个处于空闲状态的进程;
所述调度发送模块802,还用于向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
所述进程池维护模块804,还用于在所述进程池中将所述分配的进程标记为忙碌状态;
或者,
心跳通信模块806,用于在所述服务器确定模块801判断所述进程池中不存在处于空闲状态的进程之前,与所述进程池中的各个处于空闲状态的进程保持心跳通信;
所述进程池维护模块804,还用于确定无法获取心跳信号的处于空闲状态的进程;
所述调度发送模块802,还用于向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
所述进程池维护模块804,还用于在所述进程池中将所述无信号的进程标记为无响应状态。
优选的,所述调度接收模块803,还用于在所述调度发送模块802向所述分配的进程对应的服务器发送分配指令之后,接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
所述进程池维护模块804,还用于在所述进程池中将所述分配的进程重新标记为空闲状态;
所述调度发送模块802,还用于在所述进程池维护模块804将所述分配的进程重新标记为空闲状态之后,当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
所述进程池维护模块804,还用于在所述调度发送模块802向所述第一服务器发送关闭指令之后,将所述第一服务器上的全部进程的信息从进程池中删除。
优选的,所述调度接收模块803,还用于在所述调度发送模块802向所述无信号的进程对应的服务器发送重启指令之后,接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
所述进程池维护模块804,还用于根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
优选的,所述进程池维护模块804在进程池中优先选择所述第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
实施例九:
基于同一发明构思,本申请实施例中还提供了一种进程池扩充装置,由于这些设备解决问题的原理与一种进程池扩充方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
图9为本申请实施例九中进程池扩充装置的结构示意图。
如图9所示,本申请实施例九中进程池扩充装置900包括:
指令接收模块901,用于接收启动指令;
启动模块902,用于根据所述启动指令启动本服务器上的全部进程;
指令反馈模块903,用于反馈所述启动的全部进程的信息。
优选的,所述指令接收模块901,还用于在所述指令反馈模块903反馈所述启动的全部进程的信息之后,接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
所述装置900还包括:
执行模块904,用于根据所述分配指令控制所述分配的进程执行所述作业任务,确定所述作业任务执行完毕;
所述指令反馈模块903,还用于反馈所述作业任务执行完毕的信息;
所述指令接收模块901,还用于在所述指令反馈模块903反馈所述作业任务执行完毕的信息之后,接收关闭指令;
所述装置900还包括:
关闭模块905,用于根据所述关闭指令关闭本服务器上的全部进程。
优选的,所述指令接收模块901,还用于接收重启指令,所述重启指令包括无信号的进程的信息;
所述装置900还包括:重启模块905,用于重启所述无信号的进程;
所述指令反馈模块903,还用于反馈重启成功消息。
优选的,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (24)
1.一种进程池扩充方法,其特征在于,所述方法包括:
判断进程池中不存在处于空闲状态的进程,则确定第一服务器;
向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
将所述第一服务器上的全部进程的信息添加至所述进程池。
2.如权利要求1所述的方法,其特征在于,在所述判断所述进程池中不存在处于空闲状态的进程之前,还包括:
确定第二服务器;
向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
根据所述第二服务器上的全部进程的信息,创建所述进程池。
3.如权利要求1或2所述的方法,其特征在于,所述确定第一服务器或者所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;
根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器或者所述第二服务器。
4.如权利要求1或2所述的方法,其特征在于,在所述判断所述进程池中不存在处于空闲状态的进程之前,还包括:
获取作业任务请求;
在所述进程池中为所述作业任务请求分配一个处于空闲状态的进程;
向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
在所述进程池中将所述分配的进程标记为忙碌状态;
或者,
与所述进程池中的各个处于空闲状态的进程保持心跳通信;
确定无法获取心跳信号的处于空闲状态的进程;
向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
在所述进程池中将所述无信号的进程标记为无响应状态。
5.如权利要求4所述的方法,其特征在于,在所述向所述分配的进程对应的服务器发送分配指令之后,还包括:
接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
在所述进程池中将所述分配的进程重新标记为空闲状态;
当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
将所述第一服务器上的全部进程的信息从进程池中删除。
6.如权利要求4所述的方法,其特征在于,在所述向所述无信号的进程对应的服务器发送重启指令之后,还包括:
接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
7.如权利要求4所述的方法,其特征在于,
在进程池中优先选择所述第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
8.如权利要求4所述的方法,其特征在于,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
9.一种进程池扩充方法,其特征在于,所述方法包括:
接收启动指令,根据所述启动指令启动本服务器上的全部进程;
反馈所述启动的全部进程的信息。
10.如权利要求9所述的方法,其特征在于,在所述反馈所述启动的全部进程的信息之后,还包括:
接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
根据所述分配指令控制所述分配的进程执行所述作业任务;
确定所述作业任务执行完毕;
反馈所述作业任务执行完毕的信息;
接收关闭指令;
根据所述关闭指令关闭本服务器上的全部进程。
11.如权利要求9所述的方法,其特征在于,所述方法还包括:
接收重启指令,所述重启指令包括无信号的进程的信息;
重启所述无信号的进程;
反馈重启成功消息。
12.如权利要求10所述的方法,其特征在于,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
13.一种进程池扩充装置,其特征在于,所述装置包括:
服务器确定模块,用于判断进程池中不存在处于空闲状态的进程时,确定第一服务器;
调度发送模块,用于向所述第一服务器发送第一启动指令,以使所述第一服务器根据所述第一启动指令启动其上的全部进程;
调度接收模块,用于接收所述第一服务器响应于所述第一启动指令反馈的所述第一服务器上的全部进程的信息;
进程池维护模块,用于将所述第一服务器上的全部进程的信息添加至所述进程池。
14.如权利要求13所述的装置,其特征在于,
所述服务器确定模块,在所述判断所述进程池中不存在处于空闲状态的进程之前,还用于确定第二服务器;
所述调度发送模块,还用于向所述第二服务器发送第二启动指令,以使所述第二服务器根据所述第二启动指令启动其上的全部进程;
所述调度接收模块,还用于接收所述第二服务器响应于所述第二启动指令反馈的所述第二服务器上的全部进程的信息;
所述进程池维护模块,还用于根据所述第二服务器上的全部进程的信息,创建所述进程池。
15.如权利要求13或14中所述的装置,其特征在于,所述确定第一服务器或者所述确定第二服务器,包括:
获取当前空闲的各服务器的信息,所述各服务器的信息包括各服务器的优先级,所述优先级根据各服务器的性能、可运行进程的最大数量和用户的指定信息中的一种或几种的组合确定;
根据所述各服务器的信息,确定优先级最高的服务器为所述第一服务器或者所述第二服务器。
16.如权利要求13或14所述的装置,其特征在于,所述装置还包括:
请求获取模块,用于在所述服务器确定模块判断所述进程池中不存在处于空闲状态的进程之前,获取作业任务请求;
所述进程池维护模块,还用于在所述进程池中为所述作业任务请求分配一个处于空闲状态的进程;
所述调度发送模块,还用于向所述分配的进程对应的服务器发送分配指令,所述分配指令包括所述分配的进程的信息和所述作业任务的信息,以使所述分配的进程对应的服务器根据所述分配指令执行作业任务;
所述进程池维护模块,还用于在所述进程池中将所述分配的进程标记为忙碌状态;
或者,
心跳通信模块,用于在所述服务器确定模块判断所述进程池中不存在处于空闲状态的进程之前,与所述进程池中的各个处于空闲状态的进程保持心跳通信;
所述进程池维护模块,还用于确定无法获取心跳信号的处于空闲状态的进程;
所述调度发送模块,还用于向所述无信号的进程对应的服务器发送重启指令,所述重启指令包括所述无信号的进程的信息,以使所述服务器重启所述无信号的进程;
所述进程池维护模块,还用于在所述进程池中将所述无信号的进程标记为无响应状态。
17.如权利要求16所述的装置,其特征在于:
所述调度接收模块,还用于在所述调度发送模块向所述分配的进程对应的服务器发送分配指令之后,接收所述分配的进程对应的服务器反馈的所述作业任务执行完毕的信息;
所述进程池维护模块,还用于在所述进程池中将所述分配的进程重新标记为空闲状态;
所述调度发送模块,还用于在所述进程池维护模块将所述分配的进程重新标记为空闲状态之后,当确定所述进程池中,所述第一服务器上的全部进程当前均处于空闲状态或者无响应状态,并且除所述第一服务器上的进程外还有其他进程处于空闲状态时,向所述第一服务器发送关闭指令,以使所述第一服务器关闭其上的全部进程;
所述进程池维护模块,还用于在所述调度发送模块向所述第一服务器发送关闭指令之后,将所述第一服务器上的全部进程的信息从进程池中删除。
18.如权利要求16所述的装置,其特征在于:
所述调度接收模块,还用于在所述调度发送模块向所述无信号的进程对应的服务器发送重启指令之后,接收所述无信号的进程对应的服务器响应于所述重启指令发送的重启成功消息;
所述进程池维护模块,还用于根据所述重启成功消息,在所述进程池中将重启成功的所述无信号进程重新标记为空闲状态。
19.如权利要求16所述的装置,其特征在于,
所述进程池维护模块在进程池中优先选择所述第二服务器上的处于空闲状态的进程分配给所述作业任务请求。
20.如权利要求16所述的装置,其特征在于,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
21.一种进程池扩充装置,其特征在于,所述装置包括:
指令接收模块,用于接收启动指令;
启动模块,用于根据所述启动指令启动本服务器上的全部进程;
指令反馈模块,用于反馈所述启动的全部进程的信息。
22.如权利要求21所述的装置,其特征在于:
所述指令接收模块,还用于在所述指令反馈模块反馈所述启动的全部进程的信息之后,接收分配指令,所述分配指令包括分配的进程的信息和作业任务的信息;
所述装置还包括:
执行模块,用于根据所述分配指令控制所述分配的进程执行所述作业任务,确定所述作业任务执行完毕;
所述指令反馈模块,还用于反馈所述作业任务执行完毕的信息;
所述指令接收模块,还用于在所述指令反馈模块反馈所述作业任务执行完毕的信息之后,接收关闭指令;
所述装置还包括:
关闭模块,用于根据所述关闭指令关闭本服务器上的全部进程。
23.如权利要求21所述的装置,其特征在于:
所述指令接收模块,还用于接收重启指令,所述重启指令包括无信号的进程的信息;
所述装置还包括:重启模块,用于重启所述无信号的进程;
所述指令反馈模块,还用于反馈重启成功消息。
24.如权利要求22所述的装置,其特征在于,所述作业任务请求为Spark作业任务请求,所述进程为Driver进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610443059.7A CN107526632B (zh) | 2016-06-20 | 2016-06-20 | 进程池扩充方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610443059.7A CN107526632B (zh) | 2016-06-20 | 2016-06-20 | 进程池扩充方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526632A true CN107526632A (zh) | 2017-12-29 |
CN107526632B CN107526632B (zh) | 2021-06-29 |
Family
ID=60734416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610443059.7A Active CN107526632B (zh) | 2016-06-20 | 2016-06-20 | 进程池扩充方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107526632B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109347894A (zh) * | 2018-08-10 | 2019-02-15 | 锐捷网络股份有限公司 | 管理FastCGI进程的方法、管理器、设备及介质 |
CN109771939A (zh) * | 2019-01-15 | 2019-05-21 | 网易(杭州)网络有限公司 | 游戏服务器调整方法与装置、存储介质、电子设备 |
CN111898158A (zh) * | 2020-07-23 | 2020-11-06 | 百望股份有限公司 | 一种ofd文档的加密方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101803283A (zh) * | 2007-12-24 | 2010-08-11 | 中兴通讯股份有限公司 | 基于gct的多级网管集成的实现方法 |
US20110213886A1 (en) * | 2009-12-30 | 2011-09-01 | Bmc Software, Inc. | Intelligent and Elastic Resource Pools for Heterogeneous Datacenter Environments |
CN102981901A (zh) * | 2012-11-19 | 2013-03-20 | 北京思特奇信息技术股份有限公司 | 一种处理连接请求的方法及装置 |
CN103473129A (zh) * | 2013-09-18 | 2013-12-25 | 柳州市博源环科科技有限公司 | 线程数目可伸缩的多任务队列调度系统及其实现方法 |
CN103744723A (zh) * | 2014-01-24 | 2014-04-23 | 深圳联友科技有限公司 | 一种线程池的管理方法和管理系统 |
CN103810041A (zh) * | 2014-02-13 | 2014-05-21 | 北京大学 | 一种支持动态伸缩的并行计算的方法 |
US8874783B1 (en) * | 2002-05-15 | 2014-10-28 | F5 Networks, Inc. | Method and system for forwarding messages received at a traffic manager |
US9104500B1 (en) * | 2011-09-29 | 2015-08-11 | Emc Corporation | Lock-free job scheduler for multi-processor systems |
CN105302594A (zh) * | 2015-08-26 | 2016-02-03 | 深圳市华验防伪科技有限公司 | 一种任务执行方法及系统 |
-
2016
- 2016-06-20 CN CN201610443059.7A patent/CN107526632B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874783B1 (en) * | 2002-05-15 | 2014-10-28 | F5 Networks, Inc. | Method and system for forwarding messages received at a traffic manager |
CN101803283A (zh) * | 2007-12-24 | 2010-08-11 | 中兴通讯股份有限公司 | 基于gct的多级网管集成的实现方法 |
US20110213886A1 (en) * | 2009-12-30 | 2011-09-01 | Bmc Software, Inc. | Intelligent and Elastic Resource Pools for Heterogeneous Datacenter Environments |
US9104500B1 (en) * | 2011-09-29 | 2015-08-11 | Emc Corporation | Lock-free job scheduler for multi-processor systems |
CN102981901A (zh) * | 2012-11-19 | 2013-03-20 | 北京思特奇信息技术股份有限公司 | 一种处理连接请求的方法及装置 |
CN103473129A (zh) * | 2013-09-18 | 2013-12-25 | 柳州市博源环科科技有限公司 | 线程数目可伸缩的多任务队列调度系统及其实现方法 |
CN103744723A (zh) * | 2014-01-24 | 2014-04-23 | 深圳联友科技有限公司 | 一种线程池的管理方法和管理系统 |
CN103810041A (zh) * | 2014-02-13 | 2014-05-21 | 北京大学 | 一种支持动态伸缩的并行计算的方法 |
CN105302594A (zh) * | 2015-08-26 | 2016-02-03 | 深圳市华验防伪科技有限公司 | 一种任务执行方法及系统 |
Non-Patent Citations (4)
Title |
---|
KANG-LYUL LEE ET AL: "A Novel Predictive and Self -- Adaptive Dynamic Thread Pool Management", 《2011 IEEE NINTH INTERNATIONAL SYMPOSIUM ON PARALLEL AND DISTRIBUTED PROCESSING WITH APPLICATIONS》 * |
TAKESHI OGASAWARA ET AL: "Dynamic Thread Count Adaptation for Multiple Services in SMP Environments", 《: 2008 IEEE INTERNATIONAL CONFERENCE ON WEB SERVICES》 * |
曾宪权等: "网络服务器技术研究与实现", 《计算机与数字工程》 * |
陈志刚等: "《多层客户/服务计算模型及实现技术》", 31 December 2003, 湖南科学技术出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109347894A (zh) * | 2018-08-10 | 2019-02-15 | 锐捷网络股份有限公司 | 管理FastCGI进程的方法、管理器、设备及介质 |
CN109771939A (zh) * | 2019-01-15 | 2019-05-21 | 网易(杭州)网络有限公司 | 游戏服务器调整方法与装置、存储介质、电子设备 |
CN111898158A (zh) * | 2020-07-23 | 2020-11-06 | 百望股份有限公司 | 一种ofd文档的加密方法 |
CN111898158B (zh) * | 2020-07-23 | 2023-09-26 | 百望股份有限公司 | 一种ofd文档的加密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107526632B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10764125B2 (en) | Method and device for training model in distributed system | |
US11336616B2 (en) | Address competition method of multi-connected type control system | |
US20170024251A1 (en) | Scheduling method and apparatus for distributed computing system | |
CN107526632A (zh) | 进程池扩充方法和装置 | |
CN111026541B (zh) | 渲染资源调度方法、装置、设备及存储介质 | |
KR102163402B1 (ko) | 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
CN108170417B (zh) | 一种在mesos集群中集成高性能的作业调度框架的方法和装置 | |
CN110673927A (zh) | 一种虚拟机的调度方法和装置 | |
CN114048265A (zh) | 任务处理方法、装置、电子设备和计算机可读存储介质 | |
CN100373342C (zh) | 在同时多线程处理机中用于线程同步的方法和系统 | |
KR20140044597A (ko) | 태스크 처리 장치 및 방법 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN110113217B (zh) | 微服务管理方法、装置、管理平台及存储介质 | |
CN113849295A (zh) | 模型训练的方法、装置及计算机可读存储介质 | |
CN111143210A (zh) | 一种测试任务调度方法和系统 | |
CN111427634A (zh) | 一种原子服务调度的方法及装置 | |
US10171570B2 (en) | Information processing apparatus | |
CN109634749B (zh) | 一种分布式统一调度方法及设备 | |
CN110874256B (zh) | 一种计算集群更新系统、方法及装置 | |
CN111309397B (zh) | 数据分配方法、装置、服务器及存储介质 | |
CN117573329B (zh) | 多脑协同的任务调度方法、任务调度装置及存储介质 | |
CN112052084B (zh) | 一种资源分配方法和计算机设备 | |
CN116089440A (zh) | 离线数据处理方法、系统、电子设备及存储介质 | |
CN116302465A (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 |