CN111427675B - 一种数据处理方法、装置以及计算机可读存储介质 - Google Patents
一种数据处理方法、装置以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111427675B CN111427675B CN202010201287.XA CN202010201287A CN111427675B CN 111427675 B CN111427675 B CN 111427675B CN 202010201287 A CN202010201287 A CN 202010201287A CN 111427675 B CN111427675 B CN 111427675B
- Authority
- CN
- China
- Prior art keywords
- resource
- computing
- target
- subtask
- mapping
- 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
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/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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种数据处理方法、装置以及计算机可读存储介质,该方法涉及资源调度相关技术,该方法包括:作业管理进程向资源管理节点获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中;根据目标作业的计算资源确定资源池中的总计算资源;总计算资源包括映射计算资源和归约计算资源;根据总计算资源中的资源未占用的映射计算资源,依次执行目标作业包含的映射类型子任务;根据总计算资源中的资源未占用的归约计算资源,依次执行目标作业包含的归约类型子任务;当检测到目标作业包含的映射类型子任务和归约类型子任务均执行完成时,将资源池中的总计算资源归还给资源管理节点。采用本申请,可提高针对目标作业的计算资源的调度效率。
Description
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种数据处理方法、装置以及计算机可读存储介质。
背景技术
在分布式计算集群中,通常是由一个中心化的资源管理节点来负责提交到集群的作业运行所需要的资源分配和调度。其中,提交到集群的一个作业还可以包括多个子任务,该多个子任务的执行是通过作业管理进程进行管理的。
现有技术中,在执行一个作业的多个子任务时,作业管理进程需要向资源管理节点分别获取用于执行每个子任务的资源(可以称之为计算资源)来执行每个子任务,这会导致作业管理进程会频繁地向资源管理节点获取用于执行子任务的资源。并且,当上述多个子任务中的子任务a执行完成时,还需要作业管理进程将用于执行子任务a的资源归还给资源管理节点,这又会导致作业管理进程会频繁地向资源管理节点归还用于执行子任务的资源。
由上可知,现有技术中作业管理进程会频繁地向资源管理节点获取资源以及归还资源,这会导致用于执行一个作业中的多个子任务的资源的调度效率低。
发明内容
本申请提供了一种数据处理方法、装置以及计算机可读存储介质,可提高针对目标作业的计算资源的调度效率。
本申请一方面提供了一种数据处理方法,应用于作业管理进程,包括:
向资源管理节点获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中;
根据目标作业的计算资源确定资源池中的总计算资源;总计算资源包括映射计算资源和归约计算资源;
根据资源池的总计算资源中的资源未占用的映射计算资源,依次执行目标作业所包含的映射类型子任务;
根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务;
当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将资源池中的总计算资源归还给资源管理节点。
其中,根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务,包括:
当获取到针对目标作业所包含的归约类型子任务中的目标归约类型子任务的任务执行请求时,开始计时,得到第三计时时长;
根据目标归约类型子任务的任务执行请求以及归约类型资源池的中的资源未占用的归约计算资源,执行目标归约类型子任务;
则,还包括:
当第三计时时长大于第三计时时长阈值,且在第三计时时长内未获取到针对目标归约类型子任务的下一个归约类型子任务的任务执行请求时,根据固定释放资源量将归约类型资源池中的富余计算资源归还给资源管理节点;富余计算资源为归约类型资源池中的资源未占用的归约计算资源。
其中,根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务,包括:
确定资源池的总计算资源中的归约计算资源的资源状态;资源状态包括资源未占用状态和资源已占用状态;
在总计算资源中的属于资源未占用状态的归约计算资源中选择目标归约计算资源,基于目标归约计算资源执行目标作业所包含的归约类型子任务中的目标归约类型子任务;
将用于执行目标归约类型子任务的目标归约计算资源的资源状态由资源未占用状态,更新为资源已占用状态;
当目标归约类型子任务执行完成时,将目标归约计算资源的资源状态由资源已占用状态,更新为资源未占用状态;
基于更新为资源未占用状态的目标归约计算资源执行目标归约类型子任务的下一个归约类型子任务。
其中,基于目标归约计算资源执行目标作业所包含的归约类型子任务中的目标归约类型子任务,包括:
指示目标归约计算资源所指向的第三计算节点执行目标归约类型子任务;目标归约类型子任务是由第三计算节点通过所创建的目标归约计算资源对应的任务执行容器进行执行;
则,当目标归约类型子任务执行完成时,将目标归约计算资源的资源状态由资源已占用状态,更新为资源未占用状态,包括:
获取第三计算节点发送的心跳信息;心跳信息中包括第三计算节点针对目标归约类型子任务的任务执行状态;任务执行状态包括执行完成状态和执行中状态;
当心跳信息中包括执行完成状态时,确定目标归约类型子任务执行完成,将目标归约计算资源的资源状态由资源已占用状态更新为资源未占用状态;
当心跳信息中包括执行中状态时,保持目标归约计算资源的资源状态为资源已占用状态。
本申请一方面提供了一种数据处理装置,应用于作业管理进程,包括:
获取模块,用于向资源管理节点获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中;
资源确定模块,用于根据目标作业的计算资源确定资源池中的总计算资源;总计算资源包括映射计算资源和归约计算资源;
第一执行模块,用于根据资源池的总计算资源中的资源未占用的映射计算资源,依次执行目标作业所包含的映射类型子任务;
第二执行模块,用于根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务;
归还模块,用于当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将资源池中的总计算资源归还给资源管理节点。
其中,资源池包括映射类型资源池和归约类型资源池;映射类型资源池用于缓存总计算资源中的映射计算资源;归约类型资源池用于缓存总计算资源中的归约计算资源;
归还模块,具体用于:
当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将映射类型资源池中所缓存的映射计算资源归还给资源管理节点,将归约类型资源池中所缓存的归约计算资源归还给资源管理节点。
其中,第一执行模块,包括:
第一计时单元,用于当获取到针对目标作业所包含的映射类型子任务中的目标映射类型子任务的任务执行请求时,开始计时,得到第一计时时长;
第一执行单元,用于根据目标映射类型子任务的任务执行请求以及映射类型资源池的中的资源未占用的映射计算资源,执行目标映射类型子任务;
则,数据处理装置,具体用于:
当第一计时时长大于第一计时时长阈值,且在第一计时时长内未获取到针对目标映射类型子任务的下一个映射类型子任务的任务执行请求时,根据固定释放资源量将映射类型资源池中的富余计算资源归还给资源管理节点;富余计算资源为映射类型资源池中的资源未占用的映射计算资源。
其中,第二执行模块,包括:
第二计时单元,用于当获取到针对目标作业所包含的归约类型子任务中的目标归约类型子任务的任务执行请求时,开始计时,得到第三计时时长;
第二执行单元,用于根据目标归约类型子任务的任务执行请求以及归约类型资源池的中的资源未占用的归约计算资源,执行目标归约类型子任务;
则,数据处理装置,具体用于:
当第三计时时长大于第三计时时长阈值,且在第三计时时长内未获取到针对目标归约类型子任务的下一个归约类型子任务的任务执行请求时,根据固定释放资源量将归约类型资源池中的富余计算资源归还给资源管理节点;富余计算资源为归约类型资源池中的资源未占用的归约计算资源。
其中,第一执行模块,包括:
第一状态确定单元,用于确定资源池的总计算资源中的映射计算资源的资源状态;资源状态包括资源未占用状态和资源已占用状态;
第一目标选择单元,用于在总计算资源中的属于资源未占用状态的映射计算资源中选择目标映射计算资源,基于目标映射计算资源执行目标作业所包含的映射类型子任务中的目标映射类型子任务;
第一状态更新单元,用于将用于执行目标映射类型子任务的目标映射计算资源的资源状态由资源未占用状态,更新为资源已占用状态;
第二状态更新单元,用于当目标映射类型子任务执行完成时,将目标映射计算资源的资源状态由资源已占用状态,更新为资源未占用状态;
第三执行单元,用于基于更新为资源未占用状态的目标映射计算资源执行目标映射类型子任务的下一个映射类型子任务。
其中,第一目标选择单元,具体用于:
指示目标映射计算资源所指向的第一计算节点执行目标映射类型子任务;目标映射类型子任务是由第一计算节点通过所创建的目标映射计算资源对应的任务执行容器进行执行;
则,第二状态更新单元,包括:
第一心跳子单元,用于获取第一计算节点发送的心跳信息;心跳信息中包括第一计算节点针对目标映射类型子任务的任务执行状态;任务执行状态包括执行完成状态和执行中状态;
第一执行状态子单元,用于当心跳信息中包括执行完成状态时,确定目标映射类型子任务执行完成,将目标映射计算资源的资源状态由资源已占用状态更新为资源未占用状态;
第二执行状态子单元,用于当心跳信息中包括执行中状态时,保持目标映射计算资源的资源状态为资源已占用状态。
其中,第二执行模块,包括:
第二状态确定单元,用于确定资源池的总计算资源中的归约计算资源的资源状态;资源状态包括资源未占用状态和资源已占用状态;
第二目标选择单元,用于在总计算资源中的属于资源未占用状态的归约计算资源中选择目标归约计算资源,基于目标归约计算资源执行目标作业所包含的归约类型子任务中的目标归约类型子任务;
第三状态更新单元,用于将用于执行目标归约类型子任务的目标归约计算资源的资源状态由资源未占用状态,更新为资源已占用状态;
第四状态更新单元,用于当目标归约类型子任务执行完成时,将目标归约计算资源的资源状态由资源已占用状态,更新为资源未占用状态;
第四执行单元,用于基于更新为资源未占用状态的目标归约计算资源执行目标归约类型子任务的下一个归约类型子任务。
其中,第二目标选择单元,具体用于:
指示目标归约计算资源所指向的第三计算节点执行目标归约类型子任务;目标归约类型子任务是由第三计算节点通过所创建的目标归约计算资源对应的任务执行容器进行执行;
则,第四状态更新单元,包括:
第二心跳子单元,用于获取第三计算节点发送的心跳信息;心跳信息中包括第三计算节点针对目标归约类型子任务的任务执行状态;任务执行状态包括执行完成状态和执行中状态;
第三执行状态子单元,用于当心跳信息中包括执行完成状态时,确定目标归约类型子任务执行完成,将目标归约计算资源的资源状态由资源已占用状态更新为资源未占用状态;
第四执行状态子单元,用于当心跳信息中包括执行中状态时,保持目标归约计算资源的资源状态为资源已占用状态。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块,包括:
第一任务确定单元,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
第三计时单元,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
第一追加单元,用于当第二计时时长大于第二计时时长阈值,且在第二计时时长内未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,根据固定追加资源量向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块,包括:
第二任务确定单元,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
第四计时单元,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
比对单元,用于当第二计时时长大于第二计时时长阈值,且在第二计时时长内未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,对比资源池中的已有计算资源的资源量与资源池的资源容量阈值;
资源量确定单元,用于当对比出已有计算资源的资源量小于资源容量阈值时,根据已有计算资源的资源量和资源容量阈值,确定自适应追加资源量;
第二追加单元,用于根据自适应追加资源量,向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,数据处理装置,还包括:
信息生成模块,用于当对比出已有计算资源的资源量等于资源池的资源容量阈值时,生成任务堵塞提示信息;
发送模块,用于将任务堵塞提示信息发送至客户端,以使客户端输出任务堵塞提示信息。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块,包括:
第三任务确定单元,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
计数单元,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计数,得到针对目标子任务的任务执行请求的请求获取次数;
第三追加单元,用于当请求获取次数大于请求获取次数阈值,且未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,根据固定追加资源量向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,归还模块,具体用于:
当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,指示第二计算节点销毁所创建的总计算资源对应的任务执行容器,将资源池中的总计算资源归还给资源管理节点;第二计算节点是指通过所创建的总计算资源对应的任务执行容器执行目标作业的节点。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
本申请可以对作业管理进程的资源池中的计算资源进行调度,以实现依次执行目标作业所包含的多个子任务(包括归约类型子任务和映射类型子任务),。因此,本申请提出的方法可以将获取到的针对目标作业的计算资源缓存在资源池中,后续,在执行目标作业所包含的子任务(包括映射类型子任务和归约类型子任务)时,可以通过调用资源池中所缓存的计算资源依次进行执行。这避免了每开始执行一个子任务时,都要重新获取计算资源,以及每执行完一个子任务时,都要将执行完成的子任务对应的计算资源进行释放。换句话说,通过本申请提出的方法,避免了针对计算资源的频繁获取以及频繁释放的操作,从而提高了针对计算资源的调度效率以及针对目标作业的执行效率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种系统架构示意图;
图2是本申请提供的一种数据处理的场景示意图;
图3是本申请提供的一种数据处理方法的流程示意图;
图4是本申请提供的另一种数据处理的场景示意图;
图5是本申请提供的一种动态扩展资源池的场景示意图;
图6是本申请提供的一种执行子任务的场景示意图;
图7是本申请提供的另一种数据处理的场景示意图;
图8是本申请提供的一种资源池扩展方法的流程示意图;
图9是本申请提供的一种子任务执行方法的流程示意图;
图10是本申请提供的一种数据处理装置的结构示意图;
图11是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请所提供的方法可适用于云计算相关场景中。
其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
更多的,本申请所提供的方法既适用于私有云相关计算场景,也适用于公有云相关计算场景,因此,本申请所提供的方法中的分布式计算集群可以是在私有云场景中的,也可以是在公有云场景中的。
其中,私有云(Private Cloud)是将云基础设施与软硬件资源创建在防火墙内,以供机构或企业内各部门共享数据中心内的资源。创建私有云,除了硬件资源外,一般还有云设备(IaaS,Infrastructure as a Service,基础设施即服务)软件。
私有云计算同样包含云硬件、云平台、云服务三个层次。不同的是,云硬件是用户自己的个人电脑或服务器,而非云计算厂商的数据中心。云计算厂商构建数据中心的目的是为千百万用户提供公共云服务,因此需要拥有几十上百万台服务器。私有云计算,对个人来说只服务于亲朋好友,对企业来说只服务于本企业员工以及本企业的客户和供应商,因此个人或企业自己的个人电脑或服务器已经足够用来提供云服务。
其中,公有云(Public Cloud)通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过Internet使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。这种云有许多实例,可在当今整个开放的公有网络中提供服务。
另外,本申请所提供的方法还可以应用于大数据场景中的数据处理,例如大数据相关的统计计算等。其中,大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
请参见图1,是本申请提供的一种系统架构示意图。如图1所示,该系统架构示意图实际上为一个分布式计算集群,该分布式计算集群可以用于执行各种作业,一个作业可以是某个大数据统计计算任务。该分布式计算集群中可以包括中心化的资源管理节点100a以及多个计算节点,该多个计算节点具体包括计算节点101a、计算节点102a、计算节点103a以及计算节点104a。其中,资源管理节点100a用于管理和分配各个计算节点中的计算资源(该计算资源用于执行一个作业所包含的多个子任务)。
请一并参见图2,是本申请提供的一种数据处理的场景示意图。首先,客户端100b(可以承载于终端设备中)可以向资源管理节点100a提交目标作业以请求执行目标作业(目标作业可以是任意一个大数据相关或者云计算相关的计算任务)。具体操作为,当客户端100b获取到针对客户端页面104b中的“确定”按钮的点击指令时,即表示客户端100b向资源管理节点100a提交了目标作业。资源管理节点100a在获取到客户端100b所提交的目标作业时,可以在计算节点集群(此处包括计算节点101a、计算节点102a、计算节点103a和计算节点104a)中选择某个计算资源比较充足的任意一个计算节点来创建目标作业的作业管理进程101b,此处,假设是选择的计算节点104a来创建目标作业的作业管理进程101b,作业管理进程101b用于管理目标作业的执行过程。
接着,作业管理进程101b可以向客户端100b获取到目标作业。具体为,一个目标作业可以包括多个子任务,此处以目标作业为目标作业103b为例进行说明。客户端100b可以将目标作业103b所包括的多个子任务(假设有n个子任务,分别为子任务1、子任务2、子任务3、……、子任务n)提交到分布式存储系统102b(可以包括多个存储节点)进行存储,作业管理进程101b可以在分布式存储系统中获取到目标作业103b所包括的多个子任务。接着,作业管理进程101b可以根据目标作业103b所包含的多个子任务向资源管理节点100a申请计算资源,资源管理节点100a可以根据目标作业103b包含的多个子任务所需要的计算资源的资源量,尽可能多地向作业管理进程101b提供相应的计算资源,但是通常资源管理节点100a不能一次向作业管理进程101b提供目标作业103b所包括的多个子任务所需要的全部计算资源。举个例子,一个子任务需要一个计算资源来执行,那么当目标作业103b所需要的计算资源为10个,那么,资源管理节点100a可以尽可能地向作业管理进程提供7个计算资源。作业管理进程101b中可以维护用于存储计算资源的资源池,作业管理进程101b可以将向资源管理节点100a申请到的计算资源存储在所维护的资源池中,如图2所示,此处作业管理进程101b预先向资源管理节点100a获取到的计算资源包括计算资源1、计算资源2、计算资源3、计算资源4和计算资源5。
其中,一个计算资源可以包括生成用于执行子任务的容器的计算节点的节点信息(例如节点标识信息),以及创建该计算资源对应的容器所需要消耗的cpu(中央处理器)资源和内存资源(还可以包括其他类型的资源,例如GPU(图形处理器)资源,资源的类型具体根据实际应用场景决定)。一个容器封装了一个计算节点上一定量的资源(即包括对应的计算资源所指向的cpu资源和内存资源),容器用于执行目标作业中所包含的子任务,一个子任务对应于一个容器。因此,作业管理进程101b可以根据所维护的资源池中存储的计算资源指示对应的计算节点来创建每个计算资源分别对应的容器。例如,作业管理进程101b可以指示计算节点101a创建计算资源1对应的容器,指示计算节点102a创建计算资源2对应的容器,指示计算节点103a创建计算资源3对应的容器,指示计算节点104a创建计算资源4对应的容器以及计算资源5对应的容器。后续,作业管理进程101b就可以指示各个计算节点通过所创建的容器来执行目标作业103b中的多个子任务。
更多的,作业管理进程101b还可以维护资源池中所缓存的每个计算资源对应的容器的容器状态(也可以称之为计算资源的资源状态),该资源状态可以包括资源已占用状态(表明对应的计算资源正在使用中,也就是对应的计算资源所指向的容器中正在执行某个子任务)和资源未占用状态(表明对应的计算资源处于空闲中,也就是对应的计算资源所指向的容器中未执行任意一个子任务)。需要进行说明的是,作业管理进程101b向资源管理节点100a获取到的计算资源最开始被添加到资源池中时,其资源状态都为资源未占用状态。作业管理进程可以获取到针对目标作业103b中的子任务的任务执行请求,当作业管理进程101b获取到针对某个子任务的任务执行请求时,就会遍历资源池中是否有用于执行该个子任务的计算资源。资源池中资源状态处于资源未占用状态的计算资源都可以用于新的子任务的执行,因此,作业管理进程101b当获取到针对某个子任务的任务执行请求时,会遍历资源池中是否有属于资源未占用状态的计算资源。作业管理进程101b可以指示遍历到的属于资源未占用状态的计算资源中的某个计算资源所指向的计算节点,通过所创建的该个计算资源对应的容器来执行该个子任务。接着,作业管理进程101b会将用于执行该个子任务的计算资源的资源状态由原本的资源未占用状态更新为资源已占用状态。
其中,各个计算节点可以定时(例如每隔10毫秒)向作业管理进程101b发送心跳信息,该心跳信息用于告知作业管理进程101b其所执行的子任务的任务执行状态(可以是任务执行进度),该任务执行状态可以包括执行完成状态(例如任务执行进度为100%)和执行中状态(例如任务执行进度为20%或者99%)。当作业管理进程101b获取到某个计算节点发送的针对目标作业中的子任务1的心跳信息,并且该心跳信息中包括针对子任务1的执行完成状态,则表明子任务1已经被执行完成,作业管理进程101b可以将原本用于执行子任务1的计算资源的资源状态由原本的资源已占用状态更新为资源未占用状态。由于目标作业103b中的多个子任务是依次排着队进行执行的,因此,后续,可以通过用于执行子任务1且资源状态更新为资源未占用状态的计算资源继续用于执行子任务1之后的子任务。
由上可知,在本申请中,通过在作业管理进程101b中维护一个资源池,可以使得作业管理进程101b中所维护的资源池中所缓存的各个计算资源可以进行复用。具体为,由于作业管理进程101b可以维护资源池中各个计算资源的资源状态,当某个计算资源正在用于执行某个子任务时,表明该个计算资源正在使用中,该个计算资源的资源状态就为资源已占用状态。当某个计算资源未执行任何一个子任务时,表明该个计算资源是空闲的,该个计算资源的资源状态就为资源未占用状态。当用于执行某个子任务的某个计算资源对该子任务执行完成时,作业管理进程101b可以将该计算资源对应的资源状态由资源已占用状态重新更新为最原始的资源未占用状态,因此,后续当作业管理进程获取到其他子任务的任务执行请求时,可以使用该资源状态重新更新为资源未占用状态的计算资源来执行其他子任务。
由上可知,同一个计算资源可以在不同时间执行不同的子任务,达到计算资源的复用的目的。使得作业管理进程101b不需要每获取到一个子任务的任务执行请求时,就向资源管理节点100a获取一次计算资源,也不需要每执行完一个子任务时,就将执行完成的该个子任务对应的计算资源归还给资源管理节点100a,提高了计算资源的调度效率。并且,由于减少了向资源管理节点100a获取计算资源以及归还计算资源的次数以及消耗时间,因此,提高了目标作业的执行效率,降低了网络拥堵的风险,降低了获取计算资源以及归还计算资源的网络开销。并且,在目标作业执行期间,可以全程不销毁各个计算节点所创建的计算资源对应的容器,也实现了各个计算节点所创建的容器的复用。
最后,当作业管理进程101b检测到目标作业103b被执行完成(即目标作业103b中所包括的每个子任务均执行完成)时,可以得到针对目标作业103b的执行结果。作业管理进程101b可以将获取到的针对目标作业103b的执行结果发送至客户端100b,客户端100b可以显示客户端页面105b,客户端105b中包括“查看执行结果”按钮。客户端100b可以响应客户端页面105b中的“查看执行结果”按钮的点击操作,在客户端页面106b中显示执行结果,此处执行结果可以是针对各个年龄段的人数的统计结果,该执行结果具体为“20岁-29岁人数:35,30岁-39岁人数:10,40岁-49岁人数:6,50岁及以上人数:3”。
更多的,当作业管理进程101b检测到目标作业103b执行完成时,可以通知创建有资源池中的计算资源对应的容器的计算节点销毁所创建的所有容器,并将资源池中所缓存的计算资源全部归还给资源管理节点100a,后续,资源管理节点100a就可以将作业管理进程101b归还的计算资源继续分配给其他作业管理进程。作业管理进程101b也会将资源池中所缓存的计算资源清空,到此,针对目标作业103b的执行结束。
请参见图3,是本申请提供的一种数据处理方法的流程示意图,如图3所示,该方法可以包括:
步骤S101,向资源管理节点获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中;
具体的,本申请通过分布式计算集群来执行目标作业(例如可以指某个大数据统计计算任务),该分布式计算集群中可以包括中心化的资源管理节点,还可以包括多个计算节点。其中,计算节点用于执行目标作业。分布式计算集群中的计算节点的个数根据实际应用场景决定,对此不作限制。分布式计算集群中的资源管理节点用于对分布式计算集群中的各个计算节点中的计算资源(包括cpu资源、内存资源等多种类型的资源)进行管理和分配。本申请所提供的数据处理方法可以应用于大数据计算平台产品,同时适用于私有云与公有云场景。例如目标作业还可以是云计算领域的弹性计算服务、搜索推荐领域的算法样本生成、用户兴趣画像等离线计算业务。
下面描述实现对目标作业(可以是任意一个作业,例如针对大数据的数据计算的作业)的执行的过程:
首先,客户端可以向资源管理节点提交目标作业。资源管理节点在获取到客户端所提交的目标作业时,可以指示某个计算节点(可以是分布式计算集群中计算资源比较充足的任意一个计算节点)创建针对目标作业的作业管理进程,该作业管理进程用于启动、管理目标作业的执行过程。因此,本实施例中的执行主体可以是目标作业的作业管理进程。
其中,上述分布式计算集群可以是在MapReduce框架(一种分布式计算框架)下的,因此,目标作业可以包括多个子任务,该多个子任务分为两个阶段的子任务,该两个阶段的子任务为两种不同类型的子任务。可以将第一个阶段的子任务称为映射类型子任务(maptask),将第二个阶段的子任务称为归约类型子任务(reduce task)。映射类型子任务的输出为归约类型子任务的输入。
作业管理进程可以根据目标作业向资源管理节点预先申请一部分计算资源,该计算资源用于执行目标作业所包含的多个子任务。具体的,是通过计算节点所创建的计算资源对应的容器(为Yarn框架(分布式调度框架)下资源的抽象,封装了一个计算节点上一定量的资源,该资源可以包括cpu资源和内存资源)来执行目标作业所包含的多个子任务。作业管理进程可以向资源管理节点申请到两种计算资源,该两种计算资源中的其中一种计算资源是用于执行上述映射类型子任务的计算资源(可以称之为映射计算资源),另一种计算资源是用于执行上述归约类型子任务的计算资源(可以称之为归约计算资源)。
作业管理进程中还维护有资源池,该资源池用于缓存作业管理进程向资源管理节点申请到的计算资源。作业管理进程维护的资源池也可以包括两种资源池,一种是用于缓存映射计算资源的资源池(可以称之为映射类型资源池),一种是用于缓存归约计算资源的资源池(可以称之为归约类型资源池)。并且,作业管理进程还可以维护资源池中的每个计算资源的资源状态,该资源状态可以包括资源已占用状态和资源未占用状态。其中,当某个计算资源的资源状态为资源已占用状态时,表明该个计算资源正在用于执行目标作业的某个子任务(某个映射类型子任务或者某个归约类型子任务),处于忙时状态。当某个计算资源的资源状态为资源未占用状态时,表明该个计算资源没有执行目标作业的任何一个子任务,处于空闲状态。可以理解的是,作业管理进程从资源管理节点处获取到的每个计算资源最开始被缓存在资源池中时,其资源状态都为资源未占用状态。
因此,后续作业管理进程在执行目标作业所包括的多个子任务(包括多个映射类型子任务以及多个归约类型子任务)时,可以识别每个子任务的任务类型,区分出多个子任务中的映射类型子任务和归约类型子任务。作业管理进程可以通过映射类型资源池中的资源未占用(资源状态为资源未占用状态)的映射计算资源来执行映射类型子任务,通过归约类型资源池中的资源未占用(资源状态为资源未占用状态)的归约计算资源来执行归约类型子任务。
请参见图4,是本申请提供的另一种数据处理的场景示意图。如图4所示,作业管理进程所维护的资源池包括映射类型资源池以及归约类型资源池,作业管理进程可以将获取到的计算资源中的映射计算资源缓存在映射类型资源池中,将获取到的计算资源中的归约计算资源缓存在归约类型资源池中。后续,作业管理进程可以通过映射类型资源池中的映射计算资源来执行目标作业的映射类型子任务,通过归约类型资源池中的归约计算资源来执行目标作业的归约类型子任务。
其中,可以将目标作业所包含映射类型子任务和归约类型子任务统称为目标作业所包含的多个子任务。步骤S101中的获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中,可以包括两种情况:
第一种情况,作业管理进程在获取目标作业的计算资源之前,还没有向资源管理节点申请过计算资源,此时资源池为空,也就是此时资源池中还没有其他计算资源(映射类型资源池和归约类型资源池均为空)。此种情况下,为作业管理进程被创建初始时向资源管理节点申请的用于执行目标作业的计算资源,作业管理进程可以将此时向资源管理节点获取到的目标作业的计算资源缓存在资源池中。具体的,作业管理进程可以识别所获取到的目标作业的计算资源的资源类型,区分出上述映射计算资源和归约计算资源,并将映射计算资源缓存在映射类型资源池中,将归约计算资源缓存在归约类型资源池中。更多的,还可以为资源池设置上限,即设置资源池的资源容量阈值,保证获取到的计算资源不会超过(大于)资源池的资源容量阈值,换句话说,资源池中所缓存的计算资源的资源量不会超过资源池的资源容量阈值。其中,可以分别设置映射类型资源池和归约类型资源池的资源容量阈值,映射类型资源池中所缓存的映射计算资源的资源量不会超过映射类型资源池的资源容量阈值,归约类型资源池中所缓存的归约计算资源的资源量不会超过归约类型资源池的资源容量阈值。
第二种情况,第二种情况是在第一种情况的基础之上的一种情况,即作业管理进程在获取目标作业的计算资源之前,已经向资源管理节点申请过计算资源,此时资源池中已经缓存有一些计算资源,该计算资源为在此处获取目标作业的计算资源之前所获取到的用于执行目标作业的计算资源,可以将在此处获取目标作业的计算资源之前,资源池中已经存在的计算资源称之为已有计算资源。第二种情况是在作业管理进程在执行目标作业的多个子任务的过程中检测到资源池中的已有计算资源不够执行目标作业的多个子任务的情形下发生的,即当作业管理进程检测到资源池中的已有计算资源不够执行目标作业的多个子任务时,可以再向资源管理节点追加申请一些更多的计算资源,用于执行目标作业。
其中,在第二种情况中,作业管理进程检测到资源池中的已有计算资源不够执行目标作业的条件又可以分为两种:
第一种条件,当作业管理进程获取到针对目标子任务(可以是目标作业所包含的任意一个子任务,例如任意一个映射类型子任务或者任意一个归约类型子任务)的任务执行请求(该任务执行请求可以是作业管理进程在启动目标子任务时自己生成的)时,可以开始计时,并得到第二计时时长。当第二计时时长大于第二计时时长阈值(可以自行设置),并且在第二计时时长阈值内并没有在资源池中的已有计算资源(包括资源池中已有的映射计算资源和归约计算资源)中遍历到用于执行目标子任务的计算资源(也就是没有遍历到资源状态为资源未占用状态的计算资源)时,作业管理可以认为此时资源池中的已有计算资源不够执行目标作业,作业管理进程再向资源调度获取目标作业的计算资源。可选的,作业管理进程可以根据固定追加资源量(可以自行设置,为每次追加获取的计算资源的固定数量)来获取目标作业的计算资源,获取到的目标作业的计算资源的资源量即为固定追加资源量。
作业管理进程还可以对比此时资源池中的已有计算资源的资源量和资源池的资源容量阈值,当对比出已有计算资源的资源量小于资源容量阈值时,表明资源池中还可以缓存一些计算资源。作业管理进程可以根据已有计算资源的资源量和资源池的资源容量阈值,得到自适应追加资源量,例如自适应追加资源量可以是已有计算资源的资源量的一半,自适应追加资源量还可以是资源容量阈值和已有计算资源的资源量的差值,自适应追加资源量的计算方式具体根据实际应用场景决定,此处不作限制。作业管理进程可以根据自适应追加资源量向资源管理节点获取目标作业的计算资源,获取到的目标作业的计算资源的资源量即为自适应追加资源量。
更多的,当在第一种条件中,对比出已有计算资源的资源量已经等于资源池的资源容量阈值了,表明资源池中已经不能再缓存更多的计算资源了,则已经不能再向资源管理节点获取到更多的计算资源缓存在资源池中。此时,作业管理进程可以生成任务堵塞提示信息,该任务堵塞提示信息用于提醒相关技术人员此时针对目标作业的执行过程并不顺畅,执行目标作业的计算资源短缺。作业管理进程可以将所生成的任务堵塞提示信息发送到客户端,客户端可以在客户端页面中输出所获取到的任务堵塞提示信息,以向相关技术人员展示该任务堵塞提示信息。
第二种条件,当作业管理进程获取到针对目标子任务(可以是目标作业所包含的任意一个子任务)的任务执行请求(该任务执行请求可以是作业管理进程在启动目标子任务时自己生成的)时,可以开始计数,得到请求获取次数,该请求获取次数为作业管理进程获取到针对目标子任务的任务执行请求的总次数(在获取到目标子任务的任务执行请求之后未执行目标子任务时,可以再次获取到重试的针对目标子任务的任务执行请求)。当该请求获取次数达到获取次数阈值(可以自行设置),并且没有在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,作业管理进程可以再向资源管理节点获取到一些更多的计算资源,同样,可以根据固定追加资源量获取,也可以根据自适应追加资源量获取,参见上述第一种条件。其中,还可以连续获取到多个子任务的任务执行请求,当获取到前一个子任务的任务执行请求后并没有执行该子任务,那么,支持继续获取后面的子任务的任务执行请求,因此,上述请求获取次数还可以是连续获取到的未被执行的多个子任务对应的任务执行请求,即当连续获取到多个不同子任务的任务执行请求,且该多个子任务均未被执行时,作业管理进程也可以再向资源管理节点获取到一些更多的计算资源。
其中,在上述第一种条件中或者在上述第二种条件中,若目标子任务为映射类型子任务(即上述已有计算资源中映射类型资源池中已有的映射计算资源不够执行目标作业的映射类型子任务),则作业管理进程向资源管理节点追加所获取到的目标作业的计算资源可以是映射计算资源。若目标子任务为归约类型子任务(即上述已有计算资源中归约类型资源池中已有的归约计算资源不够执行目标作业的归约类型子任务),则作业管理进程向资源管理节点追加所获取到的目标作业的计算资源可以是归约计算资源。
由上述第二种情况可知,作业管理进程可以在执行目标作业的过程中,动态地对资源池进行扩容,即在检测到资源池中的已有计算资源不足以执行目标作业时,再向资源管理节点获取更多的计算资源,实现对资源池的扩容。
更多的,当作业管理进程检测到资源池中的资源比较富余时,可以适当对资源池中的已有计算资源中的部分计算资源进行释放。具体的,当作业管理进程获取到针对目标子任务(可以是目标作业所包含的任意一个子任务,例如任意一个映射类型子任务或者任意一个归约类型子任务)的任务执行请求(该任务执行请求可以是作业管理进程在启动目标子任务时自己生成的)时,可以开始计时,得到第一计时时长。作业管理进程可以根据目标子任务的任务执行请求以及资源池中的资源未占用的计算资源执行目标子任务,此时,目标子任务的任务执行请求为作业管理进程获取到的离当前时间最近的一次任务执行请求。当后续,第一计时时长大于第一计时时长阈值(可以自行设置),并且在第一计时时长内还未获取到针对目标子任务的下一个子任务的任务执行请求(即在获取到目标子任务的任务执行请求之后,在第一计时时长内,没有获取到针对其他子任务的任务执行请求)时,表明此时资源池中的计算资源比较富余,可以释放掉资源池中的已有计算资源中的部分计算资源(可以称之为富余计算资源,为资源池中的已有计算资源中的资源未占用的计算资源)。释放掉富余计算资源的方式为将富余计算资源归还给资源管理节点,后续,资源管理节点可以将获取到的作业管理进程所归还的富余计算资源继续分配给其他作业管理进程。其中,富余计算资源的资源量可以是固定释放资源量(可以自行设置,即每次释放的计算资源的固定资源量)。富余计算资源的资源量也可以是自适应释放资源量,例如自适应释放资源量可以是当前资源池中的已有计算资源的资源量的一半。
其中,当上述对资源池中的富余计算资源进行释放时,若目标子任务为目标作业所包含的映射类型子任务中的任意一个映射类型子任务(可以称之为目标映射类型子任务),则释放的富余计算资源可以是映射类型资源池中的计算资源。若目标子任务为目标作业所包含的归约类型子任务中的任意一个归约类型子任务(可以称之为目标归约类型子任务),则释放的富余计算资源可以是归约类型资源池中的计算资源。
由上可知,本申请中作业管理进程所维护的资源池,可以根据资源池中的计算资源被使用的具体情况,动态对资源池进程扩容和缩容,提高了计算资源的调度效率以及利用率。
请参见图5,是本申请提供的一种动态扩展资源池的场景示意图。如图5所示,最开始,作业管理进程的资源池为资源池100d,资源池100d中缓存有计算资源1、计算资源2和计算资源3。步骤①:当作业管理进程检测到长时间未获取到针对子任务的任务执行请求时,表明资源池100d中的计算资源比较富余,则可以释放掉资源池100d中的部分计算资源,此处为释放资源池中的计算资源3,即将计算资源3归还给资源管理节点103d,得到资源池101d。步骤②:当作业管理进程检测到获取到任务执行请求之后,长时间未执行该任务执行请求对应的子任务时,可以向资源管理节点103d再追加一些计算资源,此处追加的计算资源为计算资源4和计算资源5。作业管理进程可以将追加得到的计算资源4和计算资源5缓存在资源池100d中,得到资源池102d。
步骤S102,根据目标作业的计算资源确定资源池中的总计算资源;
具体的,作业管理进程可以根据所获取到的目标作业的计算资源,得到资源池中的总计算资源,该总计算资源即为资源池(包括映射类型资源池和归约类型资源池)中所缓存的全部计算资源。具体的,当在获取目标作业的计算资源之前,资源池中的计算资源为空,即资源池中没有已有计算资源时,资源池中的总计算资源就为所获取到的目标作业的计算资源。当在获取目标作业的计算资源之前,资源池中包括已有计算资源时,资源池中的总计算资源就为已有计算资源与获取到的目标作业的计算资源的总和。其中,当在执行目标作业的过程中,释放掉了资源池中的已有计算资源中的富余计算资源时,资源池中的总计算资源就为在释放富余计算资源之前资源池中缓存的计算资源去掉富余计算资源之后所得到的计算资源。资源池中的总计算资源可以包括映射类型资源池中的映射计算资源和归约类型资源池中的归约计算资源。
步骤S103,根据资源池的总计算资源中的资源未占用的映射计算资源,依次执行目标作业所包含的映射类型子任务;
具体的,作业管理进程可以通过总计算资源中的映射类型资源池中的资源未占用的映射计算资源,依次执行目标作业所包含的多个映射类型子任务。其中,一个计算资源可以包括生成用于执行子任务的容器的计算节点的节点信息,以及创建该计算资源对应的容器所需要消耗的cpu资源和内存资源,作业管理进程每将获取到的计算资源缓存在资源池(包括映射类型资源池和归约类型资源池)中时,就会通知所缓存的计算资源所指向的计算节点创建对应的容器,该容器用于执行目标作业的子任务。换句话说,在使用某个计算资源执行目标作业之前,该计算资源对应的容器已经创建在对应的计算节点中了。
作业管理进程可以依次获取到针对目标作业所包含的每个映射类型子任务的任务执行请求(可以理解为作业管理进程会自发地依次启动每个映射类型子任务的执行)。当获取到目标作业的某个映射类型子任务(例如目标映射类型子任务,可以是目标作业所包含的任意一个映射类型子任务)的任务执行请求之后,作业管理进程会遍历映射类型资源池中的各个映射计算资源,得到映射类型资源池中的每个映射计算资源的资源状态(包括资源已占用状态和资源未占用状态)。作业管理进程可以在遍历到的属于资源未占用状态的映射计算资源中选择目标映射计算资源(可以是资源状态为资源未占用状态的任意一个映射计算资源),作业管理进程可以通过该目标映射计算资源来执行目标子任务。同时,作业管理进程可以将遍历到的用于执行目标映射类型子任务的目标映射计算资源原本的资源未占用状态更新为资源已占用状态。当作业管理进程检测到目标映射类型子任务执行完成之后,可以将用于执行目标映射类型子任务的目标映射计算资源的资源状态再由资源已占用状态更新回资源未占用状态。当将目标映射计算资源的资源状态更新回资源未占用状态之后,若获取到另一个映射类型子任务(此处可以称之为目标映射类型子任务的下一个映射类型子任务)的任务执行请求时,作业管理进程可以使用目标映射计算资源继续执行该映射类型子任务,同时将目标计算资源的资源状态由资源未占用状态又更新为资源已占用状态。同理当又对该映射类型子任务执行完成之后,可以又将目标映射计算资源的资源已占用状态更新回资源未占用状态,接着,继续使用目标映射计算资源再执行下一个新的映射类型子任务。因此,可以理解的是,本申请中资源池(包括映射类型资源池和归约类型资源池)中的计算资源均可以进行复用,即可以将同一个计算资源在不同时间用于执行不同的子任务。一个子任务使用一个计算资源进行执行,即一个子任务使用一个容器进行执行,反之也成立,一个计算资源在同一时间用于执行一个子任务。
其中,作业管理节点通过目标映射计算资源执行目标映射类型子任务的过程可以是:每个计算节点中都可以包括一个服务进程(NM,Node Manager),该服务进程用于管理计算节点中的计算资源并管理运行在计算节点上的计算服务(例如目标作业的子任务)。若目标映射计算资源对应的容器为第一计算节点所创建的(该目标映射计算资源对应的容器可以是作业管理进程指示第一计算节点中的服务进程进行创建的),那么作业管理进程在通过目标映射计算资源执行目标映射类型子任务时,可以指示第一计算节点的服务进程在所创建的目标映射计算资源对应的容器中执行目标映射类型子任务。在第一计算节点执行目标映射类型子任务的过程中,第一计算节点可以定时(例如每隔1秒发一次)向作业管理进程发送针对目标映射类型子任务的心跳信息,该心跳信息中包括第一计算节点针对目标映射类型子任务的任务执行状态(可以是任务执行进度)。该任务执行状态可以包括执行完成状态(例如任务执行进度为100%)和执行中状态(例如任务执行进度为10%)。当作业管理进程获取到第一计算节点发送的针对目标映射类型子任务的心跳信息中包括执行完成状态,表明作业管理进程检测到目标映射类型子任务执行完成,作业管理进程可以将用于执行目标映射类型子任务的目标映射计算资源的资源状态由资源已占用状态更新为资源未占用状态。当作业管理进程获取到的第一计算节点发送的针对目标映射类型子任务的心跳信息中包括执行中状态时,还是保持目标映射计算资源的资源状态为资源已占用状态不变。
举个例子,作业管理进程执行目标作业的多个映射类型子任务的过程可以是:当作业管理进程的映射类型资源池中所缓存的映射计算资源包括映射计算资源1、映射计算资源2和映射计算资源3,目标作业的多个映射类型子任务包括映射类型子任务1、映射类型子任务2、映射类型子任务3、映射类型子任务4和映射类型子任务5时,首先,作业管理进程获取到映射类型子任务1的任务执行请求时,可以使用映射计算资源1来执行子任务1。接着,作业管理进程可以获取到映射类型子任务2的任务执行请求,作业管理进程可以使用映射计算资源2来执行子任务2。再接着,作业管理进程可以获取到映射类型子任务3的任务执行请求,作业管理进程可以使用映射计算资源3来执行子任务3。此时,映射计算资源1、映射计算资源2和映射计算资源3的资源状态均为资源已占用状态,即此时为并行执行的子任务1、子任务2和子任务3。当再获取到映射类型子任务4的任务执行请求时,需要等待映射类型子任务1、映射类型子任务2或者映射类型子任务3中的任意一个映射类型子任务执行完成之后,再用执行完成的映射类型子任务对应的映射计算资源来继续执行映射类型子任务4。例如,当映射类型子任务2优先执行完成了,表明映射计算资源2空闲了,可以用映射计算资源2来执行子任务4。同理,之后再获取到映射类型子任务5的任务执行请求时,需要等到映射计算资源1、映射计算资源2和映射计算资源3中存在任意一个空闲的映射计算资源,则可以通过该空闲的映射计算资源来执行子任务5。
请参见图6,是本申请提供的一种执行子任务的场景示意图。如图6所示,资源池100c(可以是映射类型资源池或者是归约类型资源池)中所缓存的计算资源(可以是映射计算资源或者归约计算资源,具体包括计算资源1、计算资源2、计算资源3、计算资源4和计算资源5)的资源状态最开始都为资源未占用状态。之后,开始执行目标作业的多个子任务(可以是映射类型子任务或者归约类型子任务,具体包括子任务1、子任务2、子任务3、子任务4、子任务5以及子任务6),使得资源池100c中的每个计算资源的资源状态都由资源未占用状态更新为资源已占用状态,如资源池101c所示。其中,在资源池101c对应的执行阶段中,计算资源1用于执行子任务1,计算资源2用于执行子任务2,计算资源3用于执行子任务3,计算资源4用于执行子任务4,计算资源5用于执行子任务5,子任务6处于等待被执行的状态。如虚线①所指示的步骤,当子任务2被执行完成之后,资源池101c中计算资源2的资源已占用状态会被更新为资源未占用状态,如资源池102c所示。因此,可以使用优先处于资源未占用状态的计算资源2来执行子任务6,将计算资源2用于执行子任务6时,可以将资源池102c中的计算资源2的资源未占用状态更新为资源已占用状态,如资源池104所示。资源池104c对应的执行阶段中,子任务1、子任务3、子任务4、子任务5以及子任务6均在执行中,子任务2执行完成。接着,即可对子任务1、子任务2、子任务3、子任务4、子任务5以及子任务6执行完成。
步骤S104,根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务;
具体的,作业管理进程根据归约类型资源池中的归约计算资源执行目标作业所包含的归约类型子任务的过程,与上述步骤S103中根据映射类型资源池中的映射计算资源执行目标作业所包含的映射类型子任务的过程相同,此处不再进行赘述。并且,作业管理进程执行目标归约类型子任务(可以是目标作业的任意一个归约类型子任务)以及目标归约子任务的下一个子任务的过程,同样与上述步骤S103中执行目标映射类型子任务以及目标映射类型子任务的下一个子任务的过程相同,用于执行目标归约类型子任务的目标归约计算资源的资源状态的变化过程也与上述步骤S103中用于执行目标映射类型子任务的目标映射计算资源的资源状态的变化过程相同,此处也不再进行赘述。此外,上述用于执行目标归约类型子任务的目标归约计算资源对应的任务执行容器(本申请中的任务执行容器均可以简称为容器),可以创建于第三计算节点(可以是分布式计算节点中任意一个计算节点)中,第三计算节点在通过所创建的目标归约计算资源对应的任务执行容器执行目标归约类型子任务时,也会定期向作业管理进程发送针对目标归约类型子任务的心跳信息,以告知作业管理进程对目标归约类型子任务的任务执行状态,进而作业管理进程可以根据该心跳信息对目标归约计算资源的资源状态进行更新,具体过程也可以参见上述步骤S103。
换句话说,作业管理进程执行归约类型子任务时对归约计算资源的调用方式,与在执行映射类型子任务时对映射计算资源的调用方式,是相同的,具体调用方式可以参见上述步骤S103。
步骤S105,当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将资源池中的总计算资源归还给资源管理节点;
具体的,当作业管理进程检测到目标作业的多个子任务(包括目标作业所包含的映射类型子任务和归约类型子任务)均执行完成时,作业管理进程会将映射类型资源池中的全部映射计算资源归还给资源管理节点,并将归约类型资源池中的全部归约计算资源归还给资源管理节点。此外,作业管理进程还会通知创建有资源池中的总计算资源对应的容器(即用于执行子任务的任务执行容器)的计算节点(可以称之为第二计算节点)销毁所创建的全部容器。后续,资源管理节点可以将目标作业对应的作业管理进程所归还的计算资源继续分配给其他作业管理进程。
本申请可以对作业管理进程的资源池中的计算资源进行调度,以实现依次执行目标作业所包含的多个子任务(包括归约类型子任务和映射类型子任务),。因此,本申请提出的方法可以将获取到的针对目标作业的计算资源缓存在资源池中,后续,在执行目标作业所包含的子任务(包括映射类型子任务和归约类型子任务)时,可以通过调用资源池中所缓存的计算资源依次进行执行。这避免了每开始执行一个子任务时,都要重新获取计算资源,以及每执行完一个子任务时,都要将执行完成的子任务对应的计算资源进行释放。换句话说,通过本申请提出的方法,避免了针对计算资源的频繁获取以及频繁释放的操作,从而提高了针对计算资源的调度效率以及针对目标作业的执行效率。
请参见图7,是本申请提供的另一种数据处理的场景示意图。本申请中分布式计算集群可以是MapReduce框架(一种分布式计算框架)下的集群。通过采用MapReduce框架,可以使得开发人员在处理一项业务(例如目标作业)时,可以将大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由MapReduce框架来处理,从而大大解决将单机版程序扩展到集群进行分布式处理的开发难度。如图7所示,分布式计算集群中可以包括中心化的资源管理节点(RM,Resource Manager)以及多个计算节点(具体包括节点1、节点2和节点3)。其中,资源管理节点可以为Hadoop框架(一个开源框架)的分布式调度模块Yarn的主节点。资源管理节点可以对节点1、节点2和节点3中的计算资源进行管理和调度。其中,图7中的所描述的过程可以包括:
步骤①:资源管理节点获取到客户端提交的目标作业时,可以选择分布式计算集群中计算资源比较充足的任意一个计算节点来创建目标作业的作业管理进程(AM,Application Master)。此处,选择节点1来创建目标作业的作业管理进程。该作业管理进程用于启动目标作业,并管理目标作业的执行过程。
步骤②:节点1可以通过自己的服务进程1(NM,Node Manager)创建目标作业的作业管理进程。
步骤③:作业管理进程中可以包括实现模块(MR AppMaster)以及资源调度模块(Scheduler)。其中,实现模块用于启动目标作业的子任务(包括映射类型子任务和归约类型子任务)并向资源管理节点申请计算资源,资源调度模块用于管理资源池(包括映射类型资源池和归约类型资源池)中的各个计算资源的管理和调度(还包括维护各个计算资源的资源状态)。作业管理进程可以通过实现模块向资源管理节点申请用于执行目标作业的计算资源。
其中,在MapReduce框架中,目标作业包括两个阶段的子任务,一个阶段的子任务即为上述映射类型子任务(Map Task),一个阶段的子任务即为上述归约类型子任务(Reduce Task)。其中,Map Task为针对目标作业的输入数据(例如若目标作业为大数据统计相关作业,则输入数据可以指需要被统计计算的数据,也就是待处理数据)进行逻辑切片(即将输入数据切割成若干份)所得到的子任务。其中,逻辑切片就是将输入数据按照特定的切片大小,切割成若干个逻辑上的切片,一个切片对应于一个Map Task。因此,Map Task的数量由切片数量决定。而上述Reduce Task就是将Map Task所得到的结果进行汇总处理的子任务,因此,可以理解的是,Map Task的输出就是Reduce Task的输入。其中,ReduceTask的数量可以手动设置,例如设置为1个或者多个(2个及以上)。
步骤④:资源管理节点为作业管理进程中的实现模块,提供用于执行目标作业的Map Task的计算资源(即Map类型资源,也就是映射计算资源)和用于执行目标作业的Reduce Task的计算资源(即Reduce类型资源,也就是归约计算资源)。
步骤⑤:实现模块将从资源管理节点处获取到的计算资源(包括Map类型资源和Reduce类型资源)给到资源调度模块。
步骤⑥:资源调度模块将实现模块所提供的计算资源中的映射计算资源添加到映射类型资源池(Map ResourcePool),将实现模块所提供的计算资源中的归约计算资源添加到归约类型资源池(Reduce ResourcePool)。
步骤⑦:实现模块通知资源池(包括Map ResourcePool和Reduce ResourcePool)中所缓存的计算资源所指向的计算节点(此处包括节点1、节点2以及节点3)创建对应的容器(container,即任务执行容器)。该容器指Yarn框架中资源的抽象,封装了一个计算节点中的部分cpu资源和内存资源(还可以包括其他类型的资源,例如GPU资源),该容器用于执行目标作业的Map Task和Reduce Task。其中,用于执行Map Task的容器与用于执行ReduceTask的容器是不同的。
步骤⑧:如图7所示,节点1通过自己的服务进程1创建有用于执行Map Task的容器,节点2通过自己的服务进程2创建有用于执行Map Task和Reduce Task的容器,节点3通过自己的服务进程3创建有用于执行Map Task和Reduce Task的容器。
步骤⑨:作业管理进程可以通过Map ResourcePool中所缓存的Map类型资源依次执行目标作业的Map Task,通过Reduce ResourcePool中所缓存的Reduce类型资源依次执行目标作业的Reduce Task。
具体的,实现模块每启动一个子任务(Map Task或者Reduce task)时,可以通过资源调度模块从资源池(映射类型资源池或者归约类型资源池)中获取用于执行所启动的子任务的计算资源,并通过所获取到的计算资源所指向的计算节点(包括节点1、节点2和节点3)通过所创建的容器执行对应的子任务。在执行过程中,每个计算节点(包括节点1、节点2和节点3)均可以定时向实现模块发送各自针对所创建的每个容器中所执行的子任务的心跳信息,该心跳信息中可以包括容器中的子任务的任务执行进度。
当作业管理进程检测到目标作业的所有子任务(所有的Map Task和所有的ReduceTask)均已被执行完成时,即可释放资源池(包括映射类型资源池和归约类型资源池)中所有的计算资源,具体的,资源调度模块可以将资源池中所有的计算资源给到实现模块,实现模块可以将资源调度模块给到的计算资源全部归还给资源管理节点。作业管理进程还可以通知节点1、节点2以及节点3分别将自己所创建的全部容器进行销毁。
其中,在本申请中,可以扩展各个计算节点中的服务进程(即NM,Node Manager),为NM提供接口从而支持在各个计算节点中已创建的容器中启动新的子任务,实现容器复用。在容器中执行子任务需要在容器中启动子任务对应的JVM(虚拟机)进程,例如执行MapTask,即为在容器中启动Map Task JVM进程,执行Reduce Task,即为在容器中启动ReduceTask JVM进程。
本申请所提供的MapReduce资源池化调度策略适用于大规模计算集群,通过由AM缓存并复用从RM申请到的资源,有效减少AM与RM之间资源申请和释放的通信开销,提升MapReduce Task(即目标作业的子任务)的调度效率,从而缩短作业的运行时长,提高集群计算资源的利用率。尤其适用于海量小文件输入类型的数据处理。这类任务通常有较多的子任务数量与较短的子任务平均执行时间,使用本申请所提供的方法能够避免频繁申请和释放资源导致的性能开销。同时,本方案提供的资源调度策略对用户无感知,无需改动MapReduce框架的编程接口,在保留了MapReduce框架的编程范式的同时,提高了针对目标作业的执行性能。
请参见图8,是本申请提供的一种资源池扩展方法的流程示意图。如图8所示,该方法包括:
步骤S201:启动本轮资源池的调整,作业管理进程通过之后的步骤可以判断是否需要进行资源池大小的调整,以及若是需要进行资源池大小的调整,那么是如何对资源池进行调整的。
步骤S202:作业管理进程可以获取到当前资源池中所缓存的计算资源的资源量大小(即资源池大小),并将获取到的资源池大小记为N。作业管理进程还可以获取到资源池的上限,该上限即为资源池的资源容量阈值,该资源容量阈值限定了资源池中所能缓存的容量资源的多少。换句话说,资源池中所缓存的计算资源的资源量不能超过资源容量阈值。作业管理进程可以将获取到的资源池的资源容量阈值记为Nmax。
步骤S203:作业管理进程可以获取到最近一次获取到资源请求的时间,并将该时间记为T0,并将当前时间记为T1。换句话说,T0为获取到的离当前时间T1最近的针对子任务的任务执行请求的获取时间。
步骤S204:作业管理进程可以判断当前时间T1减去时间T0所得到的差值,是否大于Tmax1。其中,Tmax1可以根据实际应用场景自行设置,时间T1减去时间T0表征了未获取到资源请求的时长,即在该差值时间内,都未获取到针对任意子任务的任务执行请求,而Tmax1就为资源池的最长空闲时间(即上述第一计时时长阈值)。当作业管理进程检测到当前时间T1减去时间T0的差值大于Tmax1时,表明长时间未收到资源请求(即任务执行请求)了,执行下述步骤S205。当作业管理进程检测到当前时间T1减去时间T0的差值小于或者等于Tmax1时,执行下述步骤S206。
步骤S205:当作业管理进程检测到当前时间T1减去时间T0的差值大于Tmax1时,表明当前资源池中的资源(即所缓存的计算资源)处于较为空闲的状态,可以适当释放掉当前资源池中已有的部分资源。此处,释放的方式是释放掉当前资源池中已有的资源中的N/2的资源。释放的方式还可以根据固定释放资源量进行释放或者根据自适应释放资源量进行释放,具体过程可以参见上述步骤S101。
步骤S206:作业管理进程可以获取到最近的资源分配时间,并将该资源分配时间即为T2。换句话说,时间T2为离当前时间T1最近的为子任务分配资源的时间。
步骤S207:作业管理进程可以判断当前时间T1减去时间T2所得到的差值,是否大于Tmax2。其中,Tmax2可以根据实际应用场景自行设置,时间T1减去时间T2表征了已经多久没未子任务分配资源了,而Tmax1就为子任务的等待执行时间的最大值(即最长等待执行时间)。当作业管理进程检测到当前时间T1减去时间T2的差值大于Tmax2时,表明子任务的等待执行时间过长,即长时间未对子任务分配资源以执行子任务,执行下述步骤S207。当作业管理进程检测到当前时间T1减去时间T2的差值小于或者等于Tmax2时,表明子任务的等待执行时间还未达到最长的等待执行时间,执行下述步骤S210。
步骤S208:当作业管理进程检测到当前时间T1减去时间T2的差值大于Tmax2时,表明已经很久没有为子任务分配资源以执行子任务了,说明当前资源池中所缓存的资源不够用,需要再向资源管理节点获取更多的资源。但是在向资源管理节点获取更多的资源之前,需要判断当前资源池大小N是否小于资源池的上限Nmax。若是判断出当前资源池大小N小于资源池的上限Nmax,则表明当前资源池还可以缓存下更多的资源,执行下述步骤S209。当判断出当前资源池大小N等于Nmax时,表明资源池已经满了,不能再缓存更多的资源,执行下述步骤S210。
步骤S209:作业管理进程可以向资源管理节点申请更多的资源,此处,作业管理进程可以向资源管理节点获取到的资源的资源量可以是N和Nmax-N中的最小值。更多的,作业管理进程还可以根据固定追加资源量向资源管理节点申请更多的资源或者根据自适应追加资源量向资源管理节点申请更多的资源,具体过程可以参见上述步骤S103。
步骤S210:本轮资源池调整结束。
上述过程即描述了资源池调整的整个过程,大致为:长时间未获取到资源请求时,表明资源池中的资源比较空闲,则可以释放掉当前资源池中的部分计算资源。当长时间未为子任务分配计算资源时,表明当前资源池中的计算资源不够用,则可以向资源管理节点申请更多的计算资源。通过此种资源调度策略,可以实现资源池的动态扩容和缩容,提高了针对计算资源的调度效率以及调度灵活性。
请参见图9,是本申请提供的一种子任务执行方法的流程示意图。如图9所示,该方法可以包括:
步骤S301,最开始,可以对作业管理进程的资源池进行初始化配置,该初始化配置可以包括对资源池的初始大小的配置以及资源池的缓存上限(即资源容量阈值)的配置。其中资源池的初始大小通常配置为0,即最开始,作业管理进程所维护的资源池是空的。所配置的资源池的缓存上限也就是配置资源池中最多可以缓存的计算资源的资源量。
步骤S302,当对资源池的初始配置配置完成之后,作业管理进程就可以根据所配置的资源池的上限向资源管理节点拉取初始的计算资源,即第一次向资源管理节点申请用于执行目标作业的计算资源。可以理解的是,所获取到的计算资源的资源量不会超过资源池的资源容量阈值。作业管理进程可以将获取到的计算资源添加到资源池中。其中,作业管理进程获取到的计算资源可以包括两种类型的计算资源(包括映射计算资源和归约计算资源),作业管理进程可以根据所获取到的计算资源的资源类型,将所获取到的各个容器添加到对应类型的资源池(包括映射类型资源池和归约类型资源池)中,具体可以参见上述步骤S101。
步骤S303,作业管理进程启动一个子任务(例如目标子任务,目标子任务可以是目标作业中的任意一个子任务)时,可以从资源池中所缓存的计算资源中获取可用资源,该可用资源可以为资源池中处于资源未占用状态的计算资源中的任意一个计算资源。
步骤S304,作业管理进程可以判断当前是否获取到可用资源,若判断出当前获取到了可用资源,则执行下述步骤S305,若判断出当前未获取到可用资源,表明资源池中的计算资源均处于资源占用状态中,则执行下述步骤S307。。
步骤S305,作业管理进程可以将获取到的用于执行目标子任务的可用资源的资源未占用状态更新为资源占用状态,表明当前获取到的可用资源已经被目标子任务占用了。
步骤S306,作业管理进程可以用获取到的可用资源开始执行目标子任务。具体为,作业管理进程可以通过创建有可用资源对应的容器的计算节点来执行目标子任务,具体过程可以参见上述步骤S103。
步骤S307,作业管理进程可以判断当前资源池的大小是否需要调整,换句话说,作业管理进程可以判断当前资源池中所缓存的计算资源是否释放掉一部分(缩容),或者判断当前资源池中是否需要缓存更多的一些计算资源(扩容)。若作业管理进程判断出当前资源池的大小需要被调整,则可以执行下述步骤S308,若作业管理进程判断出当前资源池的大小不需要被调整,则可以执行下述步骤S309。
步骤S308,作业管理进程可以调整资源池的大小,具体包括对资源池进行缩容的调整,或者对资源池进行扩容的调整。其中,作业管理进程可以根据固定释放资源量来对资源池进行缩容,也可以根据自适应释放资源量来对资源池进行缩容。作业管理进程可以根据固定追加资源量来对资源池进行扩容,也可以根据自适应追加资源量来对资源池进行扩容。具体过程可以参见上述步骤S101。
步骤S309,作业管理进程可以将执行完成的子任务所占用的计算资源标记为可用,换句话说,作业管理进程可以将执行完成的子任务所占用的计算资源的资源已占用状态更新为资源未占用状态。例如,当上述目标子任务执行完成时,可以将用于执行目标子任务的计算资源(即上述获取到的可用资源)的资源已占用状态更新为资源未占用状态。后续,作业管理进程就可以将更新为资源未占用状态的计算资源继续分配给后面其他等待被执行的子任务。
步骤S310,作业管理进程可以判断目标作业的所有子任务是否均已完成,若作业管理进程判断出目标作业的所有子任务均已执行完成时,则可以执行下述步骤S311,若作业管理进程判断出目标作业中的所有子任务并未完全执行完成时,则可以继续执行上述步骤S303。
步骤S311,作业管理进程可以将资源池中所缓存的计算资源全部归还给资源管理节点,使得后续资源管理节点可以将作业管理进程所归还的计算资源继续分配给其他作业管理进程。更多的,作业管理进程还会通知创建有资源池中所缓存的计算资源对应的容器的计算节点销毁所创建的所有容器。作业管理进程可以清空资源池中所缓存的所有计算资源。
步骤S312,对目标作业的执行完成。
请参见图10,是本申请提供的一种数据处理装置的结构示意图。如图10所示,该数据处理装置1可以包括:获取模块11、资源确定模块12、第一执行模块13、第二执行模块14和归还模块15;
获取模块11,用于向资源管理节点获取目标作业的计算资源,将目标作业的计算资源缓存在资源池中;
资源确定模块12,用于根据目标作业的计算资源确定资源池中的总计算资源;总计算资源包括映射计算资源和归约计算资源;
第一执行模块13,用于根据资源池的总计算资源中的资源未占用的映射计算资源,依次执行目标作业所包含的映射类型子任务;
第二执行模块14,用于根据资源池的总计算资源中的资源未占用的归约计算资源,依次执行目标作业所包含的归约类型子任务;
归还模块15,用于当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将资源池中的总计算资源归还给资源管理节点。
其中,获取模块11、资源确定模块12、第一执行模块13、第二执行模块14和归还模块15的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S105,这里不再进行赘述。
其中,资源池包括映射类型资源池和归约类型资源池;映射类型资源池用于缓存总计算资源中的映射计算资源;归约类型资源池用于缓存总计算资源中的归约计算资源;
归还模块15,具体用于:
当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将映射类型资源池中所缓存的映射计算资源归还给资源管理节点,将归约类型资源池中所缓存的归约计算资源归还给资源管理节点。
其中,第一执行模块13,包括:第一计时单元131和第一执行单元132;
第一计时单元131,用于当获取到针对目标作业所包含的映射类型子任务中的目标映射类型子任务的任务执行请求时,开始计时,得到第一计时时长;
第一执行单元132,用于根据目标映射类型子任务的任务执行请求以及映射类型资源池的中的资源未占用的映射计算资源,执行目标映射类型子任务;
则,数据处理装置1,具体用于:
当第一计时时长大于第一计时时长阈值,且在第一计时时长内未获取到针对目标映射类型子任务的下一个映射类型子任务的任务执行请求时,根据固定释放资源量将映射类型资源池中的富余计算资源归还给资源管理节点;富余计算资源为映射类型资源池中的资源未占用的映射计算资源。
其中,第一计时单元131和第一执行单元132的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,第二执行模块14,包括:第二计时单元141和第二执行单元142;
第二计时单元141,用于当获取到针对目标作业所包含的归约类型子任务中的目标归约类型子任务的任务执行请求时,开始计时,得到第三计时时长;
第二执行单元142,用于根据目标归约类型子任务的任务执行请求以及归约类型资源池的中的资源未占用的归约计算资源,执行目标归约类型子任务;
则,数据处理装置1,具体用于:
当第三计时时长大于第三计时时长阈值,且在第三计时时长内未获取到针对目标归约类型子任务的下一个归约类型子任务的任务执行请求时,根据固定释放资源量将归约类型资源池中的富余计算资源归还给资源管理节点;富余计算资源为归约类型资源池中的资源未占用的归约计算资源。
其中,第二计时单元141和第二执行单元142的具体功能实现方式请参见图3对应的实施例中的步骤S104,这里不再进行赘述。
其中,第一执行模块13,包括:第一状态确定单元133、第一目标选择单元134、第一状态更新单元135、第二状态更新单元136和第三执行单元137;
第一状态确定单元133,用于确定资源池的总计算资源中的映射计算资源的资源状态;资源状态包括资源未占用状态和资源已占用状态;
第一目标选择单元134,用于在总计算资源中的属于资源未占用状态的映射计算资源中选择目标映射计算资源,基于目标映射计算资源执行目标作业所包含的映射类型子任务中的目标映射类型子任务;
第一状态更新单元135,用于将用于执行目标映射类型子任务的目标映射计算资源的资源状态由资源未占用状态,更新为资源已占用状态;
第二状态更新单元136,用于当目标映射类型子任务执行完成时,将目标映射计算资源的资源状态由资源已占用状态,更新为资源未占用状态;
第三执行单元137,用于基于更新为资源未占用状态的目标映射计算资源执行目标映射类型子任务的下一个映射类型子任务。
其中,第一状态确定单元133、第一目标选择单元134、第一状态更新单元135、第二状态更新单元136和第三执行单元137的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,第一目标选择单元134,具体用于:
指示目标映射计算资源所指向的第一计算节点执行目标映射类型子任务;目标映射类型子任务是由第一计算节点通过所创建的目标映射计算资源对应的任务执行容器进行执行;
则,第二状态更新单元136,包括:第一心跳子单元1361、第一执行状态子单元1362和第二执行状态子单元1363;
第一心跳子单元1361,用于获取第一计算节点发送的心跳信息;心跳信息中包括第一计算节点针对目标映射类型子任务的任务执行状态;任务执行状态包括执行完成状态和执行中状态;
第一执行状态子单元1362,用于当心跳信息中包括执行完成状态时,确定目标映射类型子任务执行完成,将目标映射计算资源的资源状态由资源已占用状态更新为资源未占用状态;
第二执行状态子单元1363,用于当心跳信息中包括执行中状态时,保持目标映射计算资源的资源状态为资源已占用状态。
其中,第一心跳子单元1361、第一执行状态子单元1362和第二执行状态子单元1363的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,第二执行模块14,包括:第二状态确定单元143、第二目标选择单元144、第三状态更新单元145、第四状态更新单元146和第四执行单元147;
第二状态确定单元143,用于确定资源池的总计算资源中的归约计算资源的资源状态;资源状态包括资源未占用状态和资源已占用状态;
第二目标选择单元144,用于在总计算资源中的属于资源未占用状态的归约计算资源中选择目标归约计算资源,基于目标归约计算资源执行目标作业所包含的归约类型子任务中的目标归约类型子任务;
第三状态更新单元145,用于将用于执行目标归约类型子任务的目标归约计算资源的资源状态由资源未占用状态,更新为资源已占用状态;
第四状态更新单元146,用于当目标归约类型子任务执行完成时,将目标归约计算资源的资源状态由资源已占用状态,更新为资源未占用状态;
第四执行单元147,用于基于更新为资源未占用状态的目标归约计算资源执行目标归约类型子任务的下一个归约类型子任务。
其中,第二状态确定单元143、第二目标选择单元144、第三状态更新单元145、第四状态更新单元146和第四执行单元147的具体功能实现方式请参见图3对应的实施例中的步骤S104,这里不再进行赘述。
其中,第二目标选择单元144,具体用于:
指示目标归约计算资源所指向的第三计算节点执行目标归约类型子任务;目标归约类型子任务是由第三计算节点通过所创建的目标归约计算资源对应的任务执行容器进行执行;
则,第四状态更新单元146,包括:第二心跳子单元1461、第三执行状态子单元1462和第四执行状态子单元1463;
第二心跳子单元1461,用于获取第三计算节点发送的心跳信息;心跳信息中包括第三计算节点针对目标归约类型子任务的任务执行状态;任务执行状态包括执行完成状态和执行中状态;
第三执行状态子单元1462,用于当心跳信息中包括执行完成状态时,确定目标归约类型子任务执行完成,将目标归约计算资源的资源状态由资源已占用状态更新为资源未占用状态;
第四执行状态子单元1463,用于当心跳信息中包括执行中状态时,保持目标归约计算资源的资源状态为资源已占用状态。
其中,第二心跳子单元1461、第三执行状态子单元1462和第四执行状态子单元1463的具体功能实现方式请参见图3对应的实施例中的步骤S104,这里不再进行赘述。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块11,包括:第一任务确定单元1101、第三计时单元1102和第一追加单元1103;
第一任务确定单元1101,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
第三计时单元1102,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
第一追加单元1103,用于当第二计时时长大于第二计时时长阈值,且在第二计时时长内未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,根据固定追加资源量向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,第一任务确定单元1101、第三计时单元1102和第一追加单元1103的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块11,包括:第二任务确定单元1104、第四计时单元1105、比对单元1106、资源量确定单元1107和第二追加单元1108;
第二任务确定单元1104,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
第四计时单元1105,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
比对单元1106,用于当第二计时时长大于第二计时时长阈值,且在第二计时时长内未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,对比资源池中的已有计算资源的资源量与资源池的资源容量阈值;
资源量确定单元1107,用于当对比出已有计算资源的资源量小于资源容量阈值时,根据已有计算资源的资源量和资源容量阈值,确定自适应追加资源量;
第二追加单元1108,用于根据自适应追加资源量,向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,第二任务确定单元1104、第四计时单元1105、比对单元1106、资源量确定单元1107和第二追加单元1108的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,数据处理装置1,还包括:信息生成模块16和发送模块17;
信息生成模块16,用于当对比出已有计算资源的资源量等于资源池的资源容量阈值时,生成任务堵塞提示信息;
发送模块17,用于将任务堵塞提示信息发送至客户端,以使客户端输出任务堵塞提示信息。
其中,信息生成模块16和发送模块17的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,资源池中所缓存的计算资源包括已有计算资源;已有计算资源为作业管理进程在获取目标作业的计算资源之前向资源管理节点获取到的计算资源;
获取模块11,包括:第三任务确定单元1109、计数单元1110和第三追加单元1111;
第三任务确定单元1109,用于将目标作业所包含的映射类型子任务和目标作业所包含的归约类型子任务,确定为目标作业所包含的多个子任务;
计数单元1110,用于当获取到针对多个子任务中的目标子任务的任务执行请求时,开始计数,得到针对目标子任务的任务执行请求的请求获取次数;
第三追加单元1111,用于当请求获取次数大于请求获取次数阈值,且未在资源池中的已有计算资源中遍历到用于执行目标子任务的计算资源时,根据固定追加资源量向资源管理节点获取目标作业的计算资源;总计算资源包括已有计算资源以及所获取到的目标作业的计算资源。
其中,第三任务确定单元1109、计数单元1110和第三追加单元1111的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,归还模块15,具体用于:
当检测到目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,指示第二计算节点销毁所创建的总计算资源对应的任务执行容器,将资源池中的总计算资源归还给资源管理节点;第二计算节点是指通过所创建的总计算资源对应的任务执行容器执行目标作业的节点。
本申请可以对作业管理进程的资源池中的计算资源进行调度,以实现依次执行目标作业所包含的多个子任务(包括归约类型子任务和映射类型子任务),。因此,本申请提出的方法可以将获取到的针对目标作业的计算资源缓存在资源池中,后续,在执行目标作业所包含的子任务(包括映射类型子任务和归约类型子任务)时,可以通过调用资源池中所缓存的计算资源依次进行执行。这避免了每开始执行一个子任务时,都要重新获取计算资源,以及每执行完一个子任务时,都要将执行完成的子任务对应的计算资源进行释放。换句话说,通过本申请提出的方法,避免了针对计算资源的频繁获取以及频繁释放的操作,从而提高了针对计算资源的调度效率以及针对目标作业的执行效率。
请参见图11,是本申请提供的一种计算机设备的结构示意图。如图11所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3所对应实施例中对数据处理方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图10所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。
Claims (14)
1.一种数据处理方法,所述方法应用于目标作业的作业管理进程,所述作业管理进程是由分布式计算集群中任一计算节点在获取到所述目标作业时创建的,所述分布式计算集群包含用于进行任务执行的多个计算节点和用于进行资源分配的资源管理节点,所述分布式计算集群中各个计算节点均具有用于进行任务管理的服务进程,所述各个计算节点的服务进程均配置有用于启动新任务的接口,其特征在于,所述方法包括:
对所述目标作业进行逻辑切片,得到所述目标作业包含的一个或多个映射类型子任务,并基于所述目标作业包含的映射类型子任务获取所述目标作业包含的一个或多个归约类型子任务;所述目标作业包含的映射类型子任务和归约类型子任务均属于所述目标作业的子任务;
向所述资源管理节点获取所述目标作业的计算资源,将所述目标作业的计算资源缓存在资源池中;
根据所述目标作业的计算资源确定所述资源池中的总计算资源;所述总计算资源包括映射计算资源和归约计算资源;
根据所述资源池的所述总计算资源中的资源未占用的映射计算资源,依次执行所述目标作业所包含的映射类型子任务;
根据所述资源池的所述总计算资源中的资源未占用的归约计算资源,依次执行所述目标作业所包含的归约类型子任务;
当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述资源池中的所述总计算资源归还给所述资源管理节点;
其中,所述资源池中计算资源对应的容器在所述各个计算节点中进行创建;所述作业管理进程用于基于为所述各个计算节点中服务进程配置的接口,调用所述各个计算节点中的服务进程在创建的资源未占用的计算资源对应的容器中执行所述目标作业的子任务;
若所述资源池中任一计算资源对应的容器未处于执行所述目标作业的任一子任务的过程中,则所述任一计算资源属于资源未占用的计算资源;所述服务进程用于根据所述作业管理进程的指示,使用被配置的接口调用资源未占用的同一计算资源对应的容器在不同时间执行所述目标作业不同的子任务;
以及,所述目标作业的任一个子任务表示为目标子任务,所述资源池基于所述目标作业的任一个子任务的执行状态进行自动缩容和扩容的方式,包括:
若在获取到所述目标子任务的任务执行请求时,在所述资源池中检测到用于执行所述目标子任务的计算资源,以及在获取到所述目标子任务的任务执行请求后的第一计时时长内未获取到其他子任务的任务执行请求,则所述资源池基于所述资源池中已有计算资源的资源量和所述资源池的资源容量阈值进行自适应缩容;
若在获取到所述目标子任务的任务执行请求后的第二计时时长内,未在所述资源池中检测到用于执行所述目标子任务的计算资源,则所述资源池基于所述已有计算资源的资源量和所述资源容量阈值进行自适应扩容;
在基于所述已有计算资源的资源量和所述资源容量阈值对所述资源池进行自适应扩容时,若所述已有计算资源的资源量等于所述资源容量阈值,则停止对所述资源池的扩容,并向客户端推送针对所述目标作业的任务拥堵提示信息。
2.根据权利要求1所述的方法,其特征在于,所述资源池包括映射类型资源池和归约类型资源池;所述映射类型资源池用于缓存所述总计算资源中的映射计算资源;所述归约类型资源池用于缓存所述总计算资源中的归约计算资源;
所述当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述资源池中的所述总计算资源归还给所述资源管理节点,包括:
当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述映射类型资源池中所缓存的映射计算资源归还给所述资源管理节点,将所述归约类型资源池中所缓存的归约计算资源归还给所述资源管理节点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述资源池的所述总计算资源中的资源未占用的映射计算资源,依次执行所述目标作业所包含的映射类型子任务,包括:
当获取到针对所述目标作业所包含的映射类型子任务中的目标映射类型子任务的任务执行请求时,开始计时,得到第一计时时长;
根据所述目标映射类型子任务的任务执行请求以及所述映射类型资源池的中的资源未占用的映射计算资源,执行所述目标映射类型子任务;
则,还包括:
当所述第一计时时长大于第一计时时长阈值,且在所述第一计时时长内未获取到针对所述目标映射类型子任务的下一个映射类型子任务的任务执行请求时,根据固定释放资源量将所述映射类型资源池中的富余计算资源归还给所述资源管理节点;所述富余计算资源为所述映射类型资源池中的资源未占用的映射计算资源。
4.根据权利要求1所述的方法,其特征在于,所述根据所述资源池的所述总计算资源中的资源未占用的映射计算资源,依次执行所述目标作业所包含的映射类型子任务,包括:
确定所述资源池的所述总计算资源中的映射计算资源的资源状态;所述资源状态包括资源未占用状态和资源已占用状态;
在所述总计算资源中的属于所述资源未占用状态的映射计算资源中选择目标映射计算资源,基于所述目标映射计算资源执行所述目标作业所包含的映射类型子任务中的目标映射类型子任务;
将用于执行所述目标映射类型子任务的所述目标映射计算资源的资源状态由所述资源未占用状态,更新为所述资源已占用状态;
当所述目标映射类型子任务执行完成时,将所述目标映射计算资源的资源状态由所述资源已占用状态,更新为所述资源未占用状态;
基于更新为所述资源未占用状态的所述目标映射计算资源执行所述目标映射类型子任务的下一个映射类型子任务。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标映射计算资源执行所述目标作业所包含的映射类型子任务中的目标映射类型子任务,包括:
指示所述目标映射计算资源所指向的第一计算节点执行所述目标映射类型子任务;所述目标映射类型子任务是由所述第一计算节点通过所创建的所述目标映射计算资源对应的任务执行容器进行执行;
则,当所述目标映射类型子任务执行完成时,将所述目标映射计算资源的资源状态由所述资源已占用状态,更新为所述资源未占用状态,包括:
获取所述第一计算节点发送的心跳信息;所述心跳信息中包括所述第一计算节点针对所述目标映射类型子任务的任务执行状态;所述任务执行状态包括执行完成状态和执行中状态;
当所述心跳信息中包括所述执行完成状态时,确定所述目标映射类型子任务执行完成,将所述目标映射计算资源的资源状态由所述资源已占用状态更新为所述资源未占用状态;
当所述心跳信息中包括所述执行中状态时,保持所述目标映射计算资源的资源状态为所述资源已占用状态。
6.根据权利要求1所述的方法,其特征在于,所述资源池中所缓存的计算资源包括已有计算资源;所述已有计算资源为所述作业管理进程在获取所述目标作业的计算资源之前向所述资源管理节点获取到的计算资源;
所述向所述资源管理节点获取所述目标作业的计算资源,包括:
将所述目标作业所包含的映射类型子任务和所述目标作业所包含的归约类型子任务,确定为所述目标作业所包含的多个子任务;
当获取到针对所述多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
当所述第二计时时长大于第二计时时长阈值,且在所述第二计时时长内未在所述资源池中的所述已有计算资源中遍历到用于执行所述目标子任务的计算资源时,根据固定追加资源量向所述资源管理节点获取所述目标作业的计算资源;所述总计算资源包括所述已有计算资源以及所获取到的所述目标作业的计算资源。
7.根据权利要求1所述的方法,其特征在于,所述资源池中所缓存的计算资源包括已有计算资源;所述已有计算资源为所述作业管理进程在获取所述目标作业的计算资源之前向所述资源管理节点获取到的计算资源;
所述向所述资源管理节点获取所述目标作业的计算资源,包括:
将所述目标作业所包含的映射类型子任务和所述目标作业所包含的归约类型子任务,确定为所述目标作业所包含的多个子任务;
当获取到针对所述多个子任务中的目标子任务的任务执行请求时,开始计时,得到第二计时时长;
当所述第二计时时长大于第二计时时长阈值,且在所述第二计时时长内未在所述资源池中的所述已有计算资源中遍历到用于执行所述目标子任务的计算资源时,对比所述资源池中的所述已有计算资源的资源量与所述资源池的资源容量阈值;
当对比出所述已有计算资源的资源量小于所述资源容量阈值时,根据所述已有计算资源的资源量和所述资源容量阈值,确定自适应追加资源量;
根据所述自适应追加资源量,向所述资源管理节点获取所述目标作业的计算资源;所述总计算资源包括所述已有计算资源以及所获取到的所述目标作业的计算资源。
8.根据权利要求1所述的方法,其特征在于,所述资源池中所缓存的计算资源包括已有计算资源;所述已有计算资源为所述作业管理进程在获取所述目标作业的计算资源之前向所述资源管理节点获取到的计算资源;
所述向所述资源管理节点获取所述目标作业的计算资源,包括:
将所述目标作业所包含的映射类型子任务和所述目标作业所包含的归约类型子任务,确定为所述目标作业所包含的多个子任务;
当获取到针对所述多个子任务中的目标子任务的任务执行请求时,开始计数,得到针对所述目标子任务的任务执行请求的请求获取次数;
当所述请求获取次数大于请求获取次数阈值,且未在所述资源池中的所述已有计算资源中遍历到用于执行所述目标子任务的计算资源时,根据固定追加资源量向所述资源管理节点获取所述目标作业的计算资源;所述总计算资源包括所述已有计算资源以及所获取到的所述目标作业的计算资源。
9.根据权利要求1所述的方法,其特征在于,所述当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述资源池中的所述总计算资源归还给所述资源管理节点,还包括:
当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,指示第二计算节点销毁所创建的所述总计算资源对应的任务执行容器,将所述资源池中的所述总计算资源归还给所述资源管理节点;所述第二计算节点是指通过所创建的所述总计算资源对应的任务执行容器执行所述目标作业的节点。
10.一种数据处理装置,该装置应用于目标作业的作业管理进程,所述作业管理进程是由分布式计算集群中任一计算节点在获取到所述目标作业时创建的,所述分布式计算集群包含用于进行任务执行的多个计算节点和用于进行资源分配的资源管理节点,所述分布式计算集群中各个计算节点均具有用于进行任务管理的服务进程,所述各个计算节点的服务进程均配置有用于启动新任务的接口,其特征在于,所述装置包括:
获取模块,用于对所述目标作业进行逻辑切片,得到所述目标作业包含的一个或多个映射类型子任务,并基于所述目标作业包含的映射类型子任务获取所述目标作业包含的一个或多个归约类型子任务;所述目标作业包含的映射类型子任务和归约类型子任务均属于所述目标作业的子任务;
所述获取模块,用于向所述资源管理节点获取所述目标作业的计算资源,将所述目标作业的计算资源缓存在资源池中;
资源确定模块,用于根据所述目标作业的计算资源确定所述资源池中的总计算资源;所述总计算资源包括映射计算资源和归约计算资源;
第一执行模块,用于根据所述资源池的所述总计算资源中的资源未占用的映射计算资源,依次执行所述目标作业所包含的映射类型子任务;
第二执行模块,用于根据所述资源池的所述总计算资源中的资源未占用的归约计算资源,依次执行所述目标作业所包含的归约类型子任务;
归还模块,用于当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述资源池中的所述总计算资源归还给所述资源管理节点;
其中,所述资源池中计算资源对应的容器在所述各个计算节点中进行创建;所述作业管理进程用于基于为所述各个计算节点中服务进程配置的接口,调用所述各个计算节点中的服务进程在创建的资源未占用的计算资源对应的容器中执行所述目标作业的子任务;
若所述资源池中任一计算资源对应的容器未处于执行所述目标作业的任一子任务的过程中,则所述任一计算资源属于资源未占用的计算资源;所述服务进程用于根据所述作业管理进程的指示,使用被配置的接口调用资源未占用的同一计算资源对应的容器在不同时间执行所述目标作业不同的子任务;
以及,所述目标作业的任一个子任务表示为目标子任务,所述资源池基于所述目标作业的任一个子任务的执行状态进行自动缩容和扩容的方式,包括:
若在获取到所述目标子任务的任务执行请求时,在所述资源池中检测到用于执行所述目标子任务的计算资源,以及在获取到所述目标子任务的任务执行请求后的第一计时时长内未获取到其他子任务的任务执行请求,则所述资源池基于所述资源池中已有计算资源的资源量和所述资源池的资源容量阈值进行自适应缩容;
若在获取到所述目标子任务的任务执行请求后的第二计时时长内,未在所述资源池中检测到用于执行所述目标子任务的计算资源,则所述资源池基于所述已有计算资源的资源量和所述资源容量阈值进行自适应扩容;
在基于所述已有计算资源的资源量和所述资源容量阈值对所述资源池进行自适应扩容时,若所述已有计算资源的资源量等于所述资源容量阈值,则所述数据处理装置用于停止对所述资源池的扩容,并向客户端推送针对所述目标作业的任务拥堵提示信息。
11.根据权利要求10所述的装置,其特征在于,所述资源池包括映射类型资源池和归约类型资源池;所述映射类型资源池用于缓存所述总计算资源中的映射计算资源;所述归约类型资源池用于缓存所述总计算资源中的归约计算资源;
所述归还模块,具体用于:
当检测到所述目标作业所包含的映射类型子任务和归约类型子任务均执行完成时,将所述映射类型资源池中所缓存的映射计算资源归还给所述资源管理节点,将所述归约类型资源池中所缓存的归约计算资源归还给所述资源管理节点。
12.根据权利要求11所述的装置,其特征在于,所述第一执行模块,包括:
第一计时单元,用于当获取到针对所述目标作业所包含的映射类型子任务中的目标映射类型子任务的任务执行请求时,开始计时,得到第一计时时长;
第一执行单元,用于根据所述目标映射类型子任务的任务执行请求以及所述映射类型资源池的中的资源未占用的映射计算资源,执行所述目标映射类型子任务;
则,所述数据处理装置,具体用于:
当所述第一计时时长大于第一计时时长阈值,且在所述第一计时时长内未获取到针对所述目标映射类型子任务的下一个映射类型子任务的任务执行请求时,根据固定释放资源量将所述映射类型资源池中的富余计算资源归还给所述资源管理节点;所述富余计算资源为所述映射类型资源池中的资源未占用的映射计算资源。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-9中任一项所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010201287.XA CN111427675B (zh) | 2020-03-20 | 2020-03-20 | 一种数据处理方法、装置以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010201287.XA CN111427675B (zh) | 2020-03-20 | 2020-03-20 | 一种数据处理方法、装置以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111427675A CN111427675A (zh) | 2020-07-17 |
CN111427675B true CN111427675B (zh) | 2023-03-14 |
Family
ID=71549705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010201287.XA Active CN111427675B (zh) | 2020-03-20 | 2020-03-20 | 一种数据处理方法、装置以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427675B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112083849B (zh) * | 2020-09-24 | 2022-10-21 | 深圳市艾酷通信软件有限公司 | 信息显示方法、装置、设备及介质 |
CN112685132B (zh) * | 2020-12-23 | 2024-08-02 | 北京浪潮数据技术有限公司 | 一种koji任务执行方法、装置、设备及可读存储介质 |
CN112685155A (zh) * | 2020-12-25 | 2021-04-20 | 北京浪潮数据技术有限公司 | 一种计算任务调度方法、装置、系统及存储介质 |
CN113037856B (zh) * | 2021-03-23 | 2022-07-08 | 苏州云霄电子科技有限公司 | 基于公有云的计算系统、方法、计算机设备以及存储介质 |
CN113391906B (zh) * | 2021-06-25 | 2024-03-01 | 北京字节跳动网络技术有限公司 | 作业更新方法、装置、计算机设备及资源管理系统 |
CN114116133A (zh) * | 2021-11-30 | 2022-03-01 | 北京字节跳动网络技术有限公司 | 一种容器回收方法、装置、设备及存储介质 |
CN114610575B (zh) * | 2022-03-14 | 2024-05-14 | 北京百度网讯科技有限公司 | 应用于计算分支的更新峰值的方法、装置、设备和介质 |
CN115225577B (zh) * | 2022-09-20 | 2022-12-27 | 深圳市明源云科技有限公司 | 数据处理控制方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017113074A1 (zh) * | 2015-12-28 | 2017-07-06 | 华为技术有限公司 | 一种资源的分配方法、装置和系统 |
CN109032788A (zh) * | 2018-06-29 | 2018-12-18 | 北京百度网讯科技有限公司 | 预留资源池动态调度方法、装置、计算机设备及存储介质 |
CN109471727A (zh) * | 2018-10-29 | 2019-03-15 | 北京金山云网络技术有限公司 | 一种任务处理方法、装置及系统 |
CN110764873A (zh) * | 2019-10-21 | 2020-02-07 | 深圳金蝶账无忧网络科技有限公司 | 一种虚拟机资源管理方法、系统及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239536B2 (en) * | 2007-03-30 | 2012-08-07 | Platform Computing Corporation | System for generic service management in a distributed and dynamic resource environment, providing constant service access to users |
US9009294B2 (en) * | 2009-12-11 | 2015-04-14 | International Business Machines Corporation | Dynamic provisioning of resources within a cloud computing environment |
US10075384B2 (en) * | 2013-03-15 | 2018-09-11 | Advanced Elemental Technologies, Inc. | Purposeful computing |
CN107885595B (zh) * | 2016-09-30 | 2021-12-14 | 华为技术有限公司 | 一种资源分配方法、相关设备及系统 |
US10713092B2 (en) * | 2018-01-02 | 2020-07-14 | Jpmorgan Chase Bank, N.A. | Dynamic resource management of a pool of resources for multi-tenant applications based on sample exceution, query type or jobs |
-
2020
- 2020-03-20 CN CN202010201287.XA patent/CN111427675B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017113074A1 (zh) * | 2015-12-28 | 2017-07-06 | 华为技术有限公司 | 一种资源的分配方法、装置和系统 |
CN109032788A (zh) * | 2018-06-29 | 2018-12-18 | 北京百度网讯科技有限公司 | 预留资源池动态调度方法、装置、计算机设备及存储介质 |
CN109471727A (zh) * | 2018-10-29 | 2019-03-15 | 北京金山云网络技术有限公司 | 一种任务处理方法、装置及系统 |
CN110764873A (zh) * | 2019-10-21 | 2020-02-07 | 深圳金蝶账无忧网络科技有限公司 | 一种虚拟机资源管理方法、系统及相关设备 |
Non-Patent Citations (2)
Title |
---|
基于比例份额准则的Symphony系统资源调度的设计与实现;穆赟龙;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)》;20150615(第06期);第I137-58页 * |
面向价格动态变化的云工作流调度算法;郑敏 等;《计算机继承制造系统》;20130831;第19卷(第8期);第1849-1858页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111427675A (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111427675B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
JP6254949B2 (ja) | 仮想マシンプールにおけるリソースの価格設定 | |
US20080263553A1 (en) | Dynamic Service Level Manager for Image Pools | |
US10241812B2 (en) | Assignment of resources in virtual machine pools | |
US8656404B2 (en) | Statistical packing of resource requirements in data centers | |
CN104040485A (zh) | Paas分层调度和自动缩放 | |
CN111338791A (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN104040486A (zh) | 解耦paas资源、作业和调度 | |
US11966768B2 (en) | Apparatus and method for multi-cloud service platform | |
JPWO2007072544A1 (ja) | 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム | |
CN114443263A (zh) | 显存管理方法、装置、设备及系统 | |
CN114138434B (zh) | 一种大数据任务调度系统 | |
US20180039520A1 (en) | Methods and Nodes for Scheduling Data Processing | |
CN114546587A (zh) | 一种在线图像识别服务的扩缩容方法及相关装置 | |
CN108984290A (zh) | 任务调度方法和系统 | |
CN116401024A (zh) | 基于云计算的集群扩缩容方法、装置、设备及介质 | |
CN116010064A (zh) | Dag作业调度和集群管理的方法、系统及装置 | |
CN117435324B (zh) | 基于容器化的任务调度方法 | |
CN112631680B (zh) | 微服务容器调度系统、方法、装置和计算机设备 | |
Wu et al. | ABP scheduler: Speeding up service spread in docker swarm | |
CN117251269A (zh) | Jenkins资源管理方法、装置、设备及存储介质 | |
CN113225269A (zh) | 基于容器的工作流调度方法、装置、系统及存储介质 | |
JPH10198643A (ja) | 分散計算機システム | |
CN113722091A (zh) | 一种仿真任务部署方法、系统及相关装置 | |
KR102014246B1 (ko) | 리소스 통합관리를 위한 메소스 처리 장치 및 방법 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40025904 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |