首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 权利要求 / 一种用于分布式资源需求及分配的系统和方法

一种用于分布式资源需求及分配的系统和方法

阅读:809发布:2020-05-29

专利汇可以提供一种用于分布式资源需求及分配的系统和方法专利检索,专利查询,专利分析的服务。并且获得时长信息,所述时长信息指示执行分布式计算集群中的分布式计算作业的分布式计算阶段中的一个或多个任务中的每个任务所用的时间。基于所述时长信息将所述一个或多个任务划分为一个或多个组,并为所述一个或多个组中的每个组确定资源需求。基于所述一个或多个组中的每个组的所述资源需求,为所述阶段确定所述分布式计算集群中的资源的时变分配额。,下面是一种用于分布式资源需求及分配的系统和方法专利的具体信息内容。

1.一种计算机实现方法,用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业,其特征在于,所述计算机实现方法包括:
获得时长信息,所述时长信息指示执行所述分布式计算作业的分布式计算阶段中的一个或多个任务中的每个任务所用的时间;
基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组确定资源需求;
基于所述一个或多个组中的每个组的所述资源需求,为所述阶段确定所述分布式计算集群的所述资源的时变分配额。
2.根据权利要求1所述的计算机实现方法,其特征在于,获得所述时长信息包括:从所述阶段的一次或多次历史运行中获得输入数据,并从所述输入数据中提取所述时长信息。
3.根据权利要求2所述的计算机实现方法,其特征在于,所述输入数据一直保持不变,所述输入数据的量低于预定阈值,并且进一步地,为所述一个或多个任务中的所有任务提取时长信息。
4.根据权利要求2所述的计算机实现方法,其特征在于,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
5.根据权利要求2所述的计算机实现方法,其特征在于,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
6.根据权利要求2所述的计算机实现方法,其特征在于,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,提取所述时长信息包括:应用流数据技术获得分级时长信息。
7.根据权利要求2所述的计算机实现方法,其特征在于,所述输入数据呈现出至少一种时变模式;并且进一步地,提取所述时长信息包括:
从所述输入数据中为所述阶段的所述一次或多次历史运行中的每次历史运行获得历史百分位时长信息;
基于所述历史百分位时长信息为每个阶段的至少一次未来运行预报预测的百分位时长信息。
8.根据权利要求1至7任一项所述的计算机实现方法,其特征在于,将在一个或多个计算槽位中执行所述一个或多个任务,并且进一步地,将所述一个或多个任务划分为一个或多个组包括:确定所述一个或多个组的分区,其中,所述分区满足所述一个或多个组的所需数量并使所述一个或多个计算槽位的合计面积最小。
9.根据权利要求8所述的计算机实现方法,其特征在于,确定所述一个或多个组的所述分区包括:应用动态规划技术将表示所述合计面积的成本函数最小化。
10.根据权利要求8所述的计算机实现方法,其特征在于,将所述一个或多个任务划分为一个或多个组包括:
(a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;
(b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;
(c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;
(d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;
(e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所述所需数量;
(f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
11.根据权利要求1至10任一项所述的计算机实现方法,其特征在于,确定所述资源需求包括:为所述一个或多个组中的每个组确定所述一个或多个任务中的若干任务、平均任务时长及最大任务时长。
12.根据权利要求1至11任一项所述的计算机实现方法,其特征在于,为所述阶段确定资源的所述分配额包括:为所述一个或多个组中的每个组:
确定所述一个或多个任务中最后结束的给定任务的完成时间的上限;
基于所述上限为所述阶段创建二维形状,其中,所述二维形状表示资源的所述分配额,所述形状的宽度等于所述上限的值。
13.根据权利要求1至12任一项所述的计算机实现方法,其特征在于,还包括从作业提交器接收所述分布式计算作业。
14.根据权利要求1至13任一项所述的计算机实现方法,其特征在于,还包括:向资源规划器输出所述资源的所述时变分配额,以规划在所述分布式计算集群中执行所述分布式计算作业。
15.一种计算设备,用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业,其特征在于,所述计算设备包括:
至少一个处理单元;
与所述至少一个处理单元通信耦合的非瞬时性存储器,存储有计算机可读程序指令,其中,所述至少一个处理单元可执行所述指令以:
获得时长信息,所述时长信息指示执行所述分布式计算作业的分布式计算阶段中的一个或多个任务中的每个任务所用的时间;
基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组确定资源需求;
基于所述一个或多个组中的每个组的所述资源需求,为所述阶段确定所述分布式计算集群的所述资源的时变分配额。
16.根据权利要求15所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令以:从所述阶段的一次或多次历史运行中获得输入数据,并从所述输入数据中提取所述时长信息。
17.根据权利要求16所述的计算设备,其特征在于,所述输入数据一直保持不变,所述输入数据的量低于预定阈值,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令,为所述一个或多个任务中的所有任务提取时长信息。
18.根据权利要求16所述的计算设备,其特征在于,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令,为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
19.根据权利要求16所述的计算设备,其特征在于,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令,为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
20.根据权利要求16所述的计算设备,其特征在于,所述输入数据一直保持不变,接收的输入数据量高于预定阈值,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令,应用流数据技术获得分级时长信息。
21.根据权利要求16所述的计算设备,其特征在于,所述输入数据呈现出至少一种时变模式,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令以提取所述时长信息包括:
从所述输入数据中为所述阶段的所述一次或多次历史运行中的每次历史运行获得历史百分位时长信息;
基于所述历史百分位时长信息为每个阶段的至少一次未来运行预报预测的百分位时长信息。
22.根据权利要求15至21任一项所述的计算设备,其特征在于,在一个或多个计算槽位中执行所述一个或多个任务,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令以将所述一个或多个任务划分为一个或多个组包括:确定所述一个或多个组的分区,其中,所述分区满足所述一个或多个组的所需数量并使所述一个或多个计算槽位的合计面积最小。
23.根据权利要求22所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令,应用动态规划技术将表示所述合计面积的成本函数最小化。
24.根据权利要求22所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令以将所述一个或多个任务划分为一个或多个组包括:
(a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;
(b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;
(c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;
(d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;
(e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所述所需数量;
(f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
25.根据权利要求15至24任一项所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令以定义所述资源需求包括:为所述一个或多个组中的每个组指定所述一个或多个任务中的若干任务、平均任务时长及最大任务时长。
26.根据权利要求15至25任一项所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令为所述阶段确定资源的所述分配额包括:为所述一个或多个组中的每个组:
确定所述一个或多个任务中最后结束的给定任务的完成时间的上限;
基于所述上限为所述阶段创建二维形状,其中,所述二维形状表示资源的所述分配额,所述形状的宽度等于所述上限的值。
27.根据权利要求15至26任一项所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令,从作业提交器接收所述分布式计算作业。
28.根据权利要求15至27任一项所述的计算设备,其特征在于,所述至少一个处理单元可执行所述计算机可读程序指令,以向资源规划器输出所述资源的所述时变分配额,以规划在所述分布式计算集群中执行所述分布式计算作业。
29.一种非瞬时性计算机可读介质,其存储有程序代码,用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业,其中,处理器可执行所述程序代码以执行根据权利要求1至14任一项所述的计算机实现方法。

说明书全文

一种用于分布式资源需求及分配的系统和方法

[0001] 相关申请案交叉申请
[0002] 本专利申请要求2017年9月19日递交的发明名称为“System and Method For Distributed Resource Requirement and Allocation”的第62/560,443号美国专利申请案及2018年3月21日递交的发明名称为“System and Method For Distributed Resource Requirement and Allocation”的第15/927,677号美国专利申请案的在先申请优先权,其全部内容以引入的方式并入本文。

技术领域

[0003] 本文描述的实施例通常涉及分布式计算领域,更具体地,涉及资源需求及分配。

背景技术

[0004] 计算工作流由多个相互依赖的计算任务组成,这些计算任务运行在分布式计算集群中。对于随时间重复运行的分布式计算作业,需要针对作业指定所有阶段的资源需求以及每个阶段的分配额。这样就可以预留所需资源。因此可以完成该阶段并确定该阶段及该作业在更大的工作流计划中的位置。然而,由于工作流的复杂性,要简明而准确地指定该资源需求并非易事。而且,由于随着时间的推移,各阶段使用的资源数量不同,很难利用某个阶段的历史运行信息确定单个资源需求。另一个问题是在特定资源需求定义下找到一种资源分配额形状,以保证任务在其分配额内完成。
[0005] 因此,需要一种改善的系统和方法,用于分布式计算系统中的资源需求及分配。

发明内容

[0006] 根据一方面,提供一种方法,包括:获得时长信息,所述时长信息指示执行分布式计算阶段中的一个或多个任务所用的时间;基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组定义资源需求;基于所述资源需求为所述阶段确定资源的时变分配额。
[0007] 在一些示例性实施例中,获得所述时长信息可包括:从所述阶段的一次或多次历史运行中获得输入数据,并从所述输入数据中提取所述时长信息。
[0008] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以低于预定阈值,且可以为所述一个或多个任务中的所有任务提取时长信息。
[0009] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以高于预定阈值,且可以为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
[0010] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以高于预定阈值,且可以为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
[0011] 在一些示例性实施例中,所述输入数据可以一直保持不变,接收的输入数据量可以高于预定阈值,提取所述时长信息可包括:应用流数据技术获得分级时长信息。
[0012] 在一些示例性实施例中,所述输入数据可呈现出至少一种时变模式;提取所述时长信息可包括:从所述输入数据中为所述阶段的所述一次或多次历史运行中的每次历史运行获得历史百分位时长信息,并基于所述历史百分位时长信息为每个阶段的至少一次未来运行预报预测的百分位时长信息。
[0013] 在一些示例性实施例中,可以在一个或多个计算槽位中执行所述一个或多个任务;将所述一个或多个任务划分为一个或多个组可包括:确定所述一个或多个组的分区,其中,所述分区满足所述一个或多个组的所需数量并使所述一个或多个计算槽位的合计面积最小。
[0014] 在一些示例性实施例中,确定所述一个或多个组的所述分区可包括:应用动态规划技术将表示所述合计面积的成本函数最小化。
[0015] 在一些示例性实施例中,将所述一个或多个任务划分为一个或多个组可包括:(a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;(b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;(c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;(d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;(e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所述所需数量;(f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
[0016] 在一些示例性实施例中,定义所述资源需求可包括:为所述一个或多个组中的每个组指定所述一个或多个任务中的若干任务、平均任务时长及最大任务时长。
[0017] 在一些示例性实施例中,为所述阶段确定资源的所述分配额可包括:为所述一个或多个组中的每个组确定所述一个或多个任务中最后结束的给定任务的完成时间的上限,并基于所述上限创建分配额形状,其中,所述分配额形状的宽度等于所述上限的值。
[0018] 根据另一方面,提供一种计算机实现方法,用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业。所述方法包括:获得时长信息,所述时长信息指示执行所述分布式计算作业的分布式计算阶段中的一个或多个任务中每个任务所用的时间;基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组确定资源需求;基于所述一个或多个组中的每个组的所述资源需求为所述阶段确定所述分布式计算集群的所述资源的时变分配额。
[0019] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量低于预定阈值,并为所述一个或多个任务中的所有任务提取时长信息。
[0020] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
[0021] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
[0022] 在一些示例性实施例中,将在一个或多个计算槽位中执行所述任务;将所述一个或多个任务划分为一个或多个组包括:确定所述一个或多个组的分区,其中,所述分区满足所述一个或多个组的所需数量并使所述一个或多个计算槽位的合计面积最小。
[0023] 在一些示例性实施例中,将所述一个或多个任务划分为一个或多个组包括:
[0024] (a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;
[0025] (b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;
[0026] (c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;
[0027] (d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;
[0028] (e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所述所需数量;
[0029] (f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
[0030] 在一些示例性实施例中,确定所述资源需求包括:为所述一个或多个组中的每个组确定所述一个或多个任务中的若干任务、平均任务时长及最大任务时长。
[0031] 在一些示例性实施例中,为所述阶段确定所述资源的分配额包括:为所述一个或多个组中的每个组:
[0032] 确定所述一个或多个任务中最后结束的给定任务的完成时间的上限;
[0033] 基于所述上限为所述阶段创建二维形状,其中,所述二维形状表示资源的所述分配额,所述形状的宽度等于所述上限的值。
[0034] 在一些示例性实施例中,所述方法还可包括:从作业提交器接收所述分布式计算作业。
[0035] 在一些示例性实施例中,所述方法还可包括:向资源规划器输出所述资源的所述时变分配额,以规划在所述分布式计算集群中执行所述分布式计算作业。
[0036] 根据另一方面,提供一种节点,包括至少一个处理单元及与所述至少一个处理单元通信耦合的非瞬时性存储器,其中,所述非瞬时性存储器包括计算机可读程序指令,所述至少一个处理单元可执行所述指令以:获得时长信息,所述时长信息指示执行分布式计算阶段中的一个或多个任务所用的时间;基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组定义资源需求;基于所述资源需求为所述阶段确定资源的时变分配额。
[0037] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令以:从所述阶段的一次或多次历史运行中获得输入数据,并从所述输入数据中提取所述时长信息。
[0038] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以低于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令,为所述一个或多个任务中的所有任务提取时长信息。
[0039] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以高于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令,为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
[0040] 在一些示例性实施例中,所述输入数据可以一直保持不变,所述输入数据的量可以高于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令,为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
[0041] 在一些示例性实施例中,所述输入数据可以一直保持不变,接收的输入数据量可以高于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令,应用流数据技术获得分级时长信息。
[0042] 在一些示例性实施例中,所述输入数据可呈现出至少一种时变模式,所述至少一个处理单元可执行所述计算机可读程序指令以提取所述时长信息包括:从所述输入数据中为所述阶段的所述一次或多次历史运行中的每次历史运行获得历史百分位时长信息,并基于所述历史百分位时长信息为每个阶段的至少一次未来运行预报预测的百分位时长信息。
[0043] 在一些示例性实施例中,可以在一个或多个计算槽位中执行所述一个或多个任务,所述至少一个处理单元可执行所述计算机可读程序指令将所述一个或多个任务划分为一个或多个组包括:确定所述一个或多个组的分区,其中,所述分区满足所述一个或多个组的所需数量并使所述一个或多个计算槽位的合计面积最小。
[0044] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令,应用动态规划技术将表示所述合计面积的成本函数最小化。
[0045] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令将所述一个或多个任务划分为一个或多个组包括:(a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;(b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;(c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;(d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;
(e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所述所需数量;(f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
[0046] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令以定义所述资源需求包括:为所述一个或多个组中的每个组指定所述一个或多个任务中的若干任务、平均任务时长及最大任务时长。
[0047] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令为所述阶段确定资源的所述分配额包括:为所述一个或多个组中的每个组确定所述一个或多个任务中最后结束的给定任务的完成时间的上限,并基于所述上限创建分配额形状,其中,所述分配额形状的宽度等于所述上限的值。
[0048] 根据另一方面,提供一种存储有程序代码的计算机可读介质,其中,处理器可执行所述程序代码以:获得时长信息,所述时长信息指示执行分布式计算阶段中的一个或多个任务所用的时间;基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组定义资源需求;基于所述资源需求为所述阶段确定资源的时变分配额。
[0049] 根据另一方面,提供一种计算设备,用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业。所述计算设备包括至少一个处理单元及与所述至少一个处理单元通信耦合的非瞬时性存储器,其中,所述非瞬时性存储器存储有计算机可读程序指令,所述至少一个处理单元可执行所述指令以:获得时长信息,所述时长信息指示执行所述分布式计算作业的分布式计算阶段中的一个或多个任务中每个任务所用的时间;基于所述时长信息将所述一个或多个任务划分为一个或多个组并为所述一个或多个组中的每个组确定资源需求;基于所述一个或多个组中的每个组的所述资源需求为所述阶段确定所述分布式计算集群的所述资源的时变分配额。
[0050] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量低于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令为所述一个或多个任务中的所有任务提取时长信息。
[0051] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,且所述至少一个处理单元可执行所述计算机可读程序指令,为随机选择的与所述一个或多个任务相关联的时长提取时长信息。
[0052] 在一些示例性实施例中,所述输入数据一直保持不变,所述输入数据的量高于预定阈值,并且进一步地,所述至少一个处理单元可执行所述计算机可读程序指令,为预定数量的与所述一个或多个任务相关联的时长提取时长信息。
[0053] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令以将所述一个或多个任务划分为一个或多个组包括:
[0054] (a)计算所述一个或多个计算槽位的第一合计面积,并将所述一个或多个任务划分为第一数量的所述一个或多个组;
[0055] (b)按预定步长增加所述第一数量得到所述一个或多个组的第二数量;
[0056] (c)计算所述一个或多个计算槽位的第二合计面积,并将所述一个或多个任务划分为所述第二数量的所述一个或多个组;
[0057] (d)计算所述第一合计面积与所述第二合计面积的差值,并将所述差值与预定阈值相比较;
[0058] (e)如果确定所述差值在所述阈值范围内,将所述第一数量设为所需数量;
[0059] (f)如果确定所述差值超出所述阈值,按所述预定步长增加所述第二数量得到所述一个或多个组的第三数量,将所述第二数量设为所述第一数量,将所述第三数量设为所述第二数量,并重复执行步骤(a)至(f)。
[0060] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令为所述阶段确定资源的所述分配额包括:为所述一个或多个组中的每个组:
[0061] 确定所述任务中最后结束的给定任务的完成时间的上限;
[0062] 基于所述上限为所述阶段创建二维形状,其中,所述二维形状表示资源的所述分配额,所述形状的宽度等于所述上限的值。
[0063] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令,从作业提交器接收所述分布式计算作业。
[0064] 在一些示例性实施例中,所述至少一个处理单元可执行所述计算机可读程序指令,以向资源规划器输出所述资源的所述时变分配额,以规划在所述分布式计算集群中执行所述分布式计算作业。
[0065] 根据另一方面,提供一种非瞬时性计算机可读介质,其上存储有程序代码或用于分配分布式计算集群中的资源,以在所述分布式计算集群中执行分布式计算作业,其中,处理器可执行所述程序代码以:获得时长信息,所述时长信息指示执行所述分布式计算作业的分布式计算阶段的每个任务所用的时间;基于所述时长信息将所述任务划分为一个或多个组并为所述一个或多个组中的每个组确定资源需求;基于所述资源需求为所述阶段确定所述分布式计算集群的所述资源的时变分配额。
[0066] 本领域技术人员在阅读本申请之后可以想到本发明的诸多其它特征及其组合。附图说明
[0067] 在附图中:
[0068] 图1A为根据一实施例的分布式计算集群的示意图;
[0069] 图1B为根据一实施例的计算工作流的示意图;
[0070] 图2为根据一实施例的一种用于分布式计算系统中资源需求及资源分配额定义的示例性方法的流程图
[0071] 图3为图2中获得分布式计算阶段中的一个或多个任务的时长信息的步骤的流程图;
[0072] 图4A为图3中提取时长信息的步骤的流程图;
[0073] 图4B为图4A中获得时长信息的样本的步骤的流程图;
[0074] 图5为图2中将任务时长划分为一个或多个组的步骤的流程图;
[0075] 图6A为根据第一实施例的任务时长分组的示意图;
[0076] 图6B为根据第二实施例的任务时长分组的示意图;
[0077] 图7为图5中获得一个或多个任务时长组的数量的步骤的流程图;
[0078] 图8为图2中确定阶段的资源分配额的步骤的流程图;
[0079] 图9为根据第一实施例的图8中选择最小分配额形状的步骤的流程图;
[0080] 图10为根据第二实施例的图8中选择最小分配额形状的步骤的流程图;
[0081] 图11为根据一实施例的一种用于分布式计算系统中资源需求及资源分配额定义的示例性系统的方框图
[0082] 图12为图11中的时长分组模的方框图;
[0083] 图13为图11中的资源分配额确定模块的方框图;
[0084] 图14为用于实现图11中系统的示例性计算设备的方框图。
[0085] 需要说明的是,这些附图中相似的特征用相似的编号表示。

具体实施方式

[0086] 参考图1A,下文将描述一种根据一实施例的分布式计算系统中的计算集群100的一个示例。为简单起见,图示中所述计算集群100与作业提交器102通信,所述作业提交器102用于向所述计算集群100提交(例如发送)分布式计算作业(本文中称为“作业”),所述作业可以一直在所述计算集群104上重复运行。本文中所用的术语“计算集群”指的是用于运行或执行作业的软件模块与硬件设备的组合。在图1A所描述的实施例中,所述计算集群100包括资源需求确定器106、资源规划器108、资源管理器110及一组(N个)计算设备1121、1122、
1123、……112N(在现有技术中通常称为“节点”)。每个计算节点是一个从设备。所述作业提交器102的示例包括但不限于:Hive、Pig、Oracle、TeraData、文件传输协议(File Transfer Protocol,FTP)、安全外壳(Secure Shell,SSH)、HBase及Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)。
[0087] 可在与所述分布式计算系统的所述计算集群100通信的外部计算设备上实现图1A所示的所述作业提交器102,以向所述资源需求确定器106提交计算作业。或者,所述作业提交器102可以是包括计算机可读指令的软件模块,当所述软件模块在所述计算集群100上运行或执行时,使得所述作业提交器102向所述计算集群100的所述资源需求确定器106提交(例如发送)分布式计算作业。
[0088] 所述资源需求确定器106可以是计算设备,用于执行软件从所述作业提交器102接收一个或多个作业并为每个作业确定资源需求。每个作业包括一个或多个阶段(也称为“stages”),其中每个阶段包括一个或多个任务,所述一个或多个任务作为进程运行在分布式计算系统的给定资源上。本文中所用的术语“资源需求”指的是随时间的推移,执行所述作业的每个阶段的任务所需的聚合资源。本文中所用的术语“资源”指的是,但不限于,中央处理器(Central Processing Unit,CPU)占用率、内存(如随机存取存储器(Random Access Memory,RAM))占用率及网络带宽占用率。所述资源规划器108用于确定随时间的资源分配额,即为作业(或作业的阶段)分配的资源份额。也就是说,本文中所用的术语“资源分配额”指的是为所述计算集群的所述计算设备提供的、用于执行所述阶段的所述一个或多个任务的时变资源量。在一些实施例中,所述资源规划器108确定的所述资源分配额设为在所述作业实际被提交之前的特定时间点开始(如从1:00PM开始,供10个从机器(1121、1122、1123、……112N)使用10分钟)。此类资源分配额称为“资源预留额”,将其提供给所述资源管理器110,使所述资源管理器110可以相应地分配任务。详情将在下文中进一步描述。所述资源规划器108确定的所述资源分配额还可定义为随时间的资源分配额(本文中称作“分配额形状”),即为特定作业的未来运行提供的若干并行计算槽位。本文中所用的术语“计算槽位”指的是在所述计算集群100中的计算设备1121、1122、1123、……或112N上提供的资源(如内存),每个任务运行在一个或多个槽位中。如下文中的进一步描述,在一实施例中,在二维坐标系统中,采用具有给定宽度及高度的形式表示所述分配额形状。
[0089] 所述资源管理器110用于基于所述资源需求确定器106提供的每个作业的资源需求以及当前可用资源在可用资源上分发(例如发送)作业(即为任务分配资源)。所述资源管理器110还用于实现所述资源规划器108确定的资源分配额,以使任务运行更快或更慢。所述资源管理器110可包括但不限于调度器(如另一种资源协调者(Yet Another Resource Negotiator,YARN)、Mesos、Platform Load Sharing Facility(LSF)、GridEngine、Kubernetes等)及具有实现服务质量(quality of service,QoS)特性的数据仓库系统(如关系型数据库管理系统(Relational Database Management System,RDBMS)等)。
[0090] 参考图1B及图1A,业务逻辑封装在业务层工作流114(如工作流图)中。本文中所用的术语“业务层工作流”指的是由业务用户定义的一组相互依赖的业务层动作116。例如,Hive查询是一个业务层动作116。每个业务层动作116是所述业务层工作流114中的单独动作,可依赖于一个或多个其它业务层动作116的实现。所述业务层动作116转换为一个或多个作业120,每个作业120在所述分布式计算集群104上执行。在一些实施例中,单个业务层动作116可转换为一组相互依赖的作业120。例如,业务层动作116的作业120可以是Hive提交给YARN的映射/归约(Map/Reduce)作业。
[0091] 在一实施例中,使用工作流编排器(未示出)指定所述业务逻辑,所述工作流编排器是一种包括专用计算机程序指令的模块,用于指示用于实现业务事务的一个或多个工作流并在所述计算设备1121、1122、1123、……112N上组织所述一个或多个工作流。在本文中,所述工作流编排器的用户称为“业务用户”。
[0092] 继续参考图1B,计算工作流一般包括一系列可并行的作业120。每个作业120包括一个或多个阶段(也称为“stages”)122,每个阶段122包括一个或多个任务124,所述一个或多个任务124作为进程运行在分布式计算平台的给定资源上。此外,本文中所用的术语“资源”指的是,但不限于,中央处理器(CPU)占用率、随机存取存储器(RAM))占用率及网络带宽占用率。给定阶段122的任务124执行相同的计算函数,并且给定阶段122的所有任务124一般需要相同数量的资源。本文中所用的术语“阶段”指的是具有同种资源需求、执行相同计算函数的一组任务124。应当理解的是给定阶段122的某些任务124可以比所述阶段的其它任务124更后完成,因为有些任务124可能在不同的输入数据源上操作或运行在异构硬件上。如下文中的进一步描述,本文中提出(通过资源需求规格)获取或(通过资源分配额)使用给定阶段122中可预测其以不同时间间隔完成的任务124的任意子集。在一实施例中,每个作业120包括单个阶段122。在另一实施例中,每个作业120包括一系列阶段122,如图1B所示。在又一实施例中,所述阶段122与所述作业120并行运行。例如,在MapReduce架构中,一个映射阶段之后可依次跟随一个归约阶段。每个阶段122执行一系列基本计算任务124,其表示通常在计算主机上实现的基本工作单元。例如,任务124可以是在一个数据块上工作的单个映射任务或归约任务。可将任务124视为在所述分布式计算集群104中的从机器1121、1122、1123、……112N上运行一段时间的独立计算容器(如视为所述分布式计算系统的给定资源上的进程),使得并行操作的一组任务124的共同输出实现给定阶段122的目标。类似地,一组阶段120的共同输出实现给定作业120的目标。
[0093] 所述任务124的本质及结构取决于对应的业务层动作116,即所述业务层工作流114中的给定动作,进行其工作所用的软件应用或软件程序。如上文所述,给定阶段122的任务124执行相同的计算函数,并且假设给定122中的所有任务124需要相同数量的资源,其中,每个任务124需要占用所述资源的部分份额一段时间,以完成其计算。在一个阶段中,任务124可以在所述计算集群104中相继运行、全部并行运行或在指定时间内部分并行运行等等。这样计算阶段122可形容为“弹性”。阶段122之间可相互依赖。此时,一个阶段的所有任务124可能必须在一个或多个后续阶段122开始之前完成(如,一个阶段122的输入是下一阶段的输入)。
[0094] 参考图2,下文将描述一种用于分布式计算系统的分布式计算集群中的资源需求及资源分配额的示例性方法200。所述方法200包括:在步骤202中,为分布式计算作业的每个阶段(在图2中称为“分布式计算阶段”)的一个或多个任务获得时长信息。本文中所用的术语“时长”指的是执行给定任务所用的时间,其中,每个任务有一个时长。术语“时长信息”指的是一个或多个任务时长的集合。然后将所述一个或多个任务时长划分为一个或多个细粒度的组(步骤204)。反过来,所述一个或多个组可作为输入提供(给调度器和/或资源管理器等),用于在计算机集群上调度及规划随时间的阶段(并相应地调度及规划随时间的作业)。特别地,提供资源需求,即每个组中任务的数量及时长,用于指定所述阶段的一次或多次未来运行所用的总资源(步骤206)。所述资源需求可以看成是未来计算阶段的时长的预期统计分布(也称作“形状”)的规格。所述阶段的时变资源分配额也是基于所述资源需求确定的(步骤208)。所述资源分配额用于指示将随时间分配给所述阶段的资源数量,使得所有任务可以在所述分配额内完成而不受所述任务的执行顺序影响。
[0095] 在一实施例中,为所述作业的每个阶段执行本文中描述的方法200,获得所述作业的所有阶段的聚合资源需求。具体地,所述资源分配额是随时间将聚合资源专供给计算作业的给定阶段,但不指定任意给定任务所消耗的资源份额或所述任务的运行顺序。本领域技术人员可以理解的是,可以通过专用资源队列或池提供所述专用资源。在另一实施例中(所有阶段的任务有同种资源需求),在所述作业的所有阶段为所有任务共同执行所述方法200,尤其是当所述阶段并行运行时。在又一实施例中,在所有作业中为所有任务共同执行所述方法200。
[0096] 基于步骤208中确定的所述资源分配额,例如,可使用调度器和/或资源管理器将所述任务分别调度并分配到计算槽位中执行。本文中所用的术语“计算槽位”指的是用于执行给定任务的资源份额。在一实施例中,步骤208中确定的所述资源分配额(如分配的资源数量)小于或等于任务总数。应当理解的是,当所述资源分配额小于所述任务总数时,有些任务可能需要等待可用资源,并在其它任务完成之后才运行。
[0097] 参考图3,步骤202中获得时长信息包括:在步骤302中,从所述阶段的一次或多次历史运行中获得输入数据;并在步骤304中,从所述输入数据中提取所述时长信息。例如,给定阶段可以在预定数量的天数内每天运行(该天的数据)。相应地,与所述阶段的多次运行相关联的数据可以保存在内存中,以供后续检索并用作步骤202中的输入数据。应当理解的是所述阶段的每个任务的资源需求(如内存及CPU需求)也可以存储在所述内存中,以供后续用于指定所述聚合资源需求。在一实施例中,所述输入数据作为一个或多个表格提供,其中,每个表格指示运行所述阶段的给定日子中执行的任务的随时间的资源使用。通常使用给定表格表示每个任务,表格中包括其时长的值。但是,应当理解的是所述输入数据可以除表格外的任意合适的格式提供。
[0098] 在一实施例中,在步骤304中,基于接收的输入数据的特征提取时长信息。所述数据的所述特征包括但不限于:所述输入数据的量(如少量或大量)及类型(如一直保持不变或具有一个或多个时变模式)。本文中,当数据的量低于预定阈值时,称为“少量”数据;当数据的量高于预定阈值时,称为“大量”数据。在一实施例中,所述阈值设为一个值,低于该值,所有输入数据可以轻易地存入计算机内存中。此外,本文中所用的“保持不变”指的是输入数据具有至少一项一直为常量的统计特性,如平均数和/或方差。这与呈现出一个或多个时变模式的输入数据不同。如图4A所示,步骤304中提取所述时长信息包括:在步骤402中,确定所述输入数据是否保持不变,即未呈现出时变模式。步骤402中可以采用预测及时序分析领域的自相关或其它合适的分析技术,确定所述输入数据是否保持不变。或者,用户可以对所述输入数据进行标绘并对后者进行检查,看随时间推移是否会出现模式,即应该用于预测未来资源需求的模式。
[0099] 如果步骤402中确定所述输入数据保持不变,下一步确定是否接收到少量输入数据(步骤404)。若是,可以为所有任务及所有阶段保留所述时长信息(步骤406)。否则,如果步骤404中确定所接收的输入数据并不少,在步骤408中,获得所述时长信息的样本。如图4B所示,步骤408可包括:为预定数量(N_durations)的时长提取所述时长信息(步骤410),为随机选择的时长提取所述时长信息(步骤412),对所述时长信息应用滚动窗口从而为最后N_durations个时长提取所述时长信息(步骤414),或应用流数据技术获得所述时长信息(步骤416)。
[0100] 在一实施例中,可以在步骤416中使用所述流数据技术保持所述时长信息,但不需要保留全部所述输入数据。步骤416中,应用所述流数据技术通过将数据值自动划分为大小不同、权重基本相等的组(也称为“桶”)大致获取所述输入数据的分布,其中,每个桶反映了其可用的输入数据的概要。
[0101] 在一实施例中,在步骤416中获得百分位时长信息。本文中所用的“百分位时长信息”指的是用百分位表示的、给定阶段的每次运行中任务的时长。在一实施例中,将所述任务划分为若干层(也称作“百分位”),并选择层数实现所需的计算精度并降低计算复杂度。例如,当使用十(10)层十,将在第10个百分位、第20个百分位、第30个百分位等获得百分位信息。所述百分位提供所有时长的排列顺序信息。例如,第10个百分位值指的是大于10%所有其它时长值并小于90%所有其它时长值的任务时长值。
[0102] 再次参考图4A,如果步骤402中的评估结果为否,意味着所述输入数据不是保持不变的,下一步418中为所述阶段的每次历史运行收集时长信息。在一实施例中,在步骤418中采用数学库中的标准函数收集所述时长信息,获得百分位。在另一实施例中,可以应用如图4B步骤416中所使用的流数据技术,尤其是当每个作业有大量时长的时候。然后在步骤420中,采用任意合适的技术为所述阶段的一次或多次未来运行预测时长信息,所述任意合适的技术包括但不限于:计算所述收集的时长信息的统计数据如平均值、中位数和/或模式,将时序方法应用于收集的时长信息,以及应用机器学习。在一实施例中,步骤418中收集的所述时长信息是百分位时长信息,并在步骤420中为每个百分位(如每10个百分位、每20个百分位等)创建预测。例如,可以在步骤418中为所述阶段的之前运行中的所有12PM实例的所有百分位收集时长信息,并且可以在步骤420中对所述收集的时长信息应用任意合适的技术,对所述阶段的未来12PM实例的每个百分位进行预测。应当理解的是,虽然描述及图示中,步骤420中的预测发生在将所述任务时长划分为组(步骤204)之前,但是也可以在为一次或多次未来运行预测时长信息之前,将所述阶段的所有历史运行进行最优分组。
[0103] 参考图5,步骤204中将所述任务时长划分为一个或多个组包括:获得一个或多个任务时长组的数量(步骤502);确定所述任务时长组的分区,其中,所述分区使得表示合计高分配额面积的成本函数最小化(步骤504);根据所述分区划分所述任务时长(步骤506)。本文中所用的术语“高分配额面积”指的是当单个任务时长组中的所有任务并行运行时(导致“高”分配额),执行所述任务的计算槽位的合计面积。术语“合计高分配额面积”指的是所有任务时长组的高分配额面积之和,其中,分别分配所述任务时长组。图6A及图6B示出了合计高分配额。高分配额用于向给定阶段分配资源,其中,所述给定阶段包括四(4)个任务,其时长分别为6021、6022、6023及6024。从图6A及图6B可以看出,分配额高指的是所有任务从所述分配额的起点开始并行运行。此外,所述分配额的宽度由给定任务时长组中运行时间最长的任务定义。在一实施例中,使用该宽度是因为一旦将所述任务时长划分为组,将不再保留单独的时长。但是,由于保留了每个组中的最大时长,在组中的每个任务都已经完成时,可以为所述组的该时长分配资源。
[0104] 例如,在图6A中,时长6021与6022划分为第一组6041,其分配额面积为A1;时长6023与6024划分为第二组6042,其分配额面积为A2。因此,合计分配额面积为Atotal=A1+A2。所述组6041与6042各自的分配额的面积A1与A2分别等于所述组6041与6042中各自的最大任务时长乘以所述组6041与6042中各自的任务时长数量。在图6B中,时长6021划分为第一组6061,其分配额面积为B1;另外三个时长6022、6023及6024划分为第二组6062,其分配额面积为B2。因此,合计分配额面积为Btotal=B1+B2。从图6A及图6B中可以看出,第一组6041的分配额浪费要比其它组6042、6061及6062更多,且所述合计分配额面积Atotal大于所述合计分配额面积为Btotal。本文中所用的术语“浪费”指的是已经分配但是未用于运行任何任务的面积。因此,使所述成本函数最小(并因此使过度预留浪费最少)的所述任务时长组的分区是图6B所示的分区,没有其它分组可以将所述成本函数最小化同时导致更少的浪费,即更小的合计高分配额。
[0105] 再次参考图5,在一实施例中,步骤502中获得的所述任务时长组的数量是预定的(如用户定义的)。在另一实施例中,动态计算所述任务时长组的数量,如下文结合图7所述。并且步骤502与504同时进行。在本实施例中,步骤502包括:动态计算任务时长组数量,所述任务时长组共同将表示所述合计高分配额面积的所述成本函数最小化,同时将使用大量任务时长组的复杂度降到最低。通过找到任务时长组的给定数量(在所述成本函数中也称作“肘部”)获得任务时长组的最佳数量,其中,如果增加所述任务时长组的数量(即使用多于所述给定数量的任务时长组),减小所述成本函数所带来的增益很小。
[0106] 如图7所示,在一实施例中,步骤502包括:在步骤702中,选择任务时长组的第一数量及第二数量。所述第一组数可以称之为“当前最佳”数量,而所述第二组数可以称之为“建议增加的”数量,所述当前最佳数量低于所述建议增加的数量。然后在步骤704中,通过对合计分配额面积进行计算,为选择的组数量计算所述成本函数,其中,根据任务时长组的所述第一数量及第二数量对所述任务进行分组得到所述合计分配额面积。在步骤706中,通过计算步骤704中计算出的合计分配额面积的差值,计算所述成本函数中的相对改进。然后在步骤708中,对所述相对改进与预定阈值进行比较。在步骤710中,评估所述成本函数中的所述相对改进是否在所述阈值范围内(如低于或等于所述阈值)。在一实施例中,所述预定阈值是10%。如果在步骤710中确定所述成本函数中的所述相对改进在所述阈值范围内,可以得出结论,使用更多数量的任务时长组益处不大,并且使用所述第一(或当前最佳)组数确定所述任务时长组的分区。否则,如果所述成本函数中的所述相对改进超出(如大于)所述阈值,可以得出结论,使用所述第二(或建议增加的)数量的任务时长组颇有益处。因为可能有进一步的增益,在步骤712中,更新所选的组数,即,将前述第二(或建议增加的)组数设为新的第一(或当前最佳)组数,并将新的第二(或建议增加的)组数设为前述第二(或建议增加的)组数的递增版本。然后使用更新的组数重复执行步骤704至710。应该理解的是,为了效率,在步骤704中可以不必为所述第一(或当前最佳)组数重新计算所述成本函数,因为在前一次迭代中可能已经计算了所述成本函数。
[0107] 例如,增量可以是一(1),所述第一(或当前最佳)组数可以设为一(1),所述第二(或建议增加的)组数可以设为二(2)(步骤702)。然后计算使用一个任务时长组获得的合计分配额面积及使用两个任务时长组获得的合计分配额面积,并计算所述两个合计分配额面积的差值,以确定所述成本函数中的所述相对改进(步骤704及706)。然后将所述成本函数中的所述相对改进与预定阈值进行比较(步骤708)。如果在步骤710中确定所述成本函数中的所述相对改进在所述阈值范围内,可以得出结论,最佳组数为一,并利用该数量确定所述分区。如果在步骤710中确定所述成本函数中的所述相对改进超出所述阈值范围,可以得出结论,使用两个组可以获得足够的增益。然后可将所述第一组数设为二,将所述第二组数增加到三(步骤712),并重复执行步骤704至710,确定使用三个组代替两个组得到的增益。重复此流程直至找到最佳组数。
[0108] 再次参考图5,在一实施例中,使用高资源分配额。在步骤504中,通过使用任意合适的技术将以下成本函数最小化,确定所述任务时长组的所述分区:
[0109]
[0110] 其中,Cost是所述成本函数(即所述合计高分配额面积),i=1,……,nGroups,nGroups是任务时长组的数量并且可以预先确定,MAX[i]是组i中的最大任务时长,N[i]是组i中任务的数量。可以理解的是所述成本函数为上文中结合图6A及图6B中的合计面积所述内容的数学定义。
[0111] 在一实施例中,将所述成本函数最小化包括:依次尝试任务组分区的所有可能组合。在另一实施例中,可以递归地将所述成本函数最小化。在又一实施例中,可以使用动态规划技术将所述成本函数最小化。可以在获得百分位时长、不同大小的桶或实际时长信息时应用该技术。本文中所用的术语“实际时长信息”指定的所有运行任务的实际时长,而不是概要或样本信息(如百分位或桶)。
[0112] 为阐述所述动态规划技术,考虑以下情况:时长信息收集步骤(图2中步骤202)之后,将所述任务时长分割为N_bins个箱,如百分位或桶,如上文所述(每个箱中包括实际时长中的一个时长)。假设按最短时长到最长时长的顺序排列所述箱,并用i对其进行编号。也就是说,箱(i)中的时长应比箱(i+1)中的时长更短。假设CNT(i)是箱(i)中的时长数量,MAX(i)是箱(i)中的最大时长,则将箱(i)至箱(j)划分为一个组时,所述合计分配额面积等于:
[0113]
[0114] 其中,Cost(i,j)是所述箱的子集,即箱i至箱j,定义的合计高分配额面积(即所述成本函数);i=0,…,N_bins–1,j=i,…,N_bins–1(N_bins是箱的数量),且所述箱从0至N_bins–1进行编号;MAX(j)是箱j中的最大任务时长;CNT(m)是第m个箱中的时长数量。因此,Cost(i,j)是单个任务时长分组的高分配额面积,其中,分配额形状的宽度由分组中所有箱内的最长任务所定义(即最后一个或第j个任务,因为这些箱按序排列),所述分配额形状的高度是组中所有箱内的所有时长之和。
[0115] 依然参考所述动态规划方案,Cost(i,j)给出单个任务时长组的成本(即合计高分配额面积)。由于需要将所有任务时长组的合计高分配额面积最小化,将箱i至j划分为S个组的最小合计成本(即最小合计高分配额面积)定义为gc(S,i,j)。应当理解的是由于可以使用不同的方法将所述箱i至j划分为S个组,将所述函数定义为gc(S,i,j)所有此类方法中最小的那个。
[0116] 鉴于nGroups是要获得的任务时长组的预定输入数量,通过构造,输入组的数量nGroups小于或等于输入组的数量N_bins。步骤504的最终目的可以表述为找到gc(nGroups,0,N_bins–1),即,将箱0至箱N_bins–1划分为nGroups个任务时长组的最小成本。使用动态规划从S=0开始为i=0,…,N_bins–1及j=0,…,N_bins–1计算gc(S,i,j)。可以采用以下最佳递归子结构描述该计算:
[0117] gc(S,i,j)={Cost(i,j)if S=1,and minK=i…j-(S-1)gc(1,i,K)+gc(S-1,K+1,j)if S>1}   (3)
[0118] 也就是说,如果只有一个组(S=1),最小成本gc(S,i,j)为成本函数Cost(i,j)。如果有多于一个组(S>1),等式(3)意在找到检索值K,用于将箱分割为一个组(成本为gc(1,i,K))及其它S–1个组(成本为gc(S-1,K+1,j))。因此,gc(S,i,j)的成本为箱i至K组成的单个组的成本与通过递归方式算出的其它箱(即箱K+1至j)组成的其它组的成本之和。应当理解的是,可以使用除动态规划外的其它技术,包括但不限于递归和穷举。此外,在一实施例中,使用动态规划可以避免重复再次计算相同值。
[0119] 在标准的动态规划中,对于S的特定值,可以将函数gc(S,i,j)看成矩阵,包括编号为i=0,…,N_bins–1的行及编号为j=0,…,N_bins–1的列。为了一次性计算每个矩阵的值,首先计算矩阵gc(1,i,j),其次是矩阵gc(2,i,j)(采用gc(1,i,j)中的值递归计算)、矩阵gc(3,i,j)(采用gc(1,i,j)及gc(2,i,j)两者中的值递归计算)等等,直至获得矩阵gc(nGroups,i,j)。可以从最终矩阵gc(nGroups,i,j)中找到所寻求的解答gc(nGroups,0,N_bins–1)。然后,可以使用任意合适的方式将带来最佳解答gc(nGroups,0,N_bins–1)的分区(即K的值)存储在内存中。应当理解的都是,如上文所述,gc(nGroups,0,N_bins–1)只提供函数gc(S,i,j)的最小值,但是不提供得到该值的分组。
[0120] 再次参考图2,在找到使所述合计高分配额面积最小化的分区且所述任务时长已相应划分为组之后,为每个任务时长组定义资源需求(步骤206),从而基于所有任务时长组的规格为每个作业提供每个阶段及所有阶段所需资源的规格。在一实施例中,步骤206包括:基于所述时长信息指定任务总数、平均任务时长及每个所述组的最大任务时长。如上文所述,资源规格(步骤206)用于帮助规划及预留适当数量的资源,以供未来某个时候运行作业。但是,如上文所述,步骤202中获得的有些时长信息可反映多个历史运行的聚合信息或可以是从一个作业的给定阶段的历史运行中获得的输入数据的样本。因此,所述任务时长组可以只反映某一阶段的时长的正确分布或形状,而不反映每个阶段的任务总数。由于所述任务总数作为所述资源规格的一部分,步骤206示意性地包括:为每个时长组预测实际任务数。在一实施例中,预测所有任务时长组中所述阶段的所述任务总数,并对所述任务时长组进行伸缩,使得每个任务时长组中的时长数量达到预计总数。在另一实施例中,分别预测每个任务时长组中的任务时长数量。对于以上任意一种情况,在步骤206中均可以采用任意合适的技术预测所述任务数,所述技术包括但不限于:计算历史任务数的统计数据如平均值、中位数和/或模式,将时序方法应用于收集的任务数信息,以及应用机器学习。
[0121] 现参考图8及图2,在定义所述资源需求之后,为所述阶段确定资源分配额(步骤208)包括:获得待分配给所述阶段的计算槽位数(K)(步骤802)并确定保证任务在其分配额内完成的最小分配额形状(即,使过度预留浪费量最少的分配额形状)(步骤804)。
[0122] 在一实施例中,在步骤802中,从用户输入中获得所述计算槽位数。在另一实施例中,步骤802包括:找到最佳计算槽位数(如使用高分配额时所述分配额形状的高度),使所述阶段尽快适配整体分配计划。此时,步骤802与步骤804可同时进行。为此,步骤802可包括:针对K的不同值确定分配额形状并为每个分配额形状确定在一个或多个波中运行的任务,从这些分配额形状中选择一个分配额形状,当将其放置在分配计划中的最早位置时,所述一个分配额形状的完成时间最早。
[0123] 在一实施例中,在步骤804中,可以使用步骤206中定义的资源需求规则确定最小分配额形状,保证所有任务在所述分配额中完成。示意性地,资源分配额从时间零开始并具有K个并行槽位,其中,K的值可以看成是所述分配额形状的初始高度。则可以将分配额形状看成是一个高为K宽为W的矩形。但是应当理解的是所述分配额可以是除矩形之外的任意合适形状。例如,所述资源分配额可包括占用K个计算槽位10秒钟、再占用K–1个计算槽位10秒钟、再占用K–2个计算槽位10秒钟等。如图9所示,提出了一种确定最小分配额形状的方法:首先在时间零提供K个计算槽位(步骤902),然后找到所述K个计算槽位中每个计算槽位的宽度(即分配额时长)。也就是说,在一实施例中,提出确定要完成所有任务需要占用K个槽位、K–1个槽位等的时间。为了在步骤804中找到所述分配额时长,在步骤904中,确定给定最后结束的任务(如第3个最后结束的任务或第7个最后结束的任务)的完成时间的上限。然后可以使用步骤904中确定的所述上限设置每个计算槽位的宽度(步骤906)。
[0124] 用Um标识第m个最后结束的任务的完成时间,在步骤904中,可以使用如下公式计算所述第m个最后结束的任务的完成时间的上限(Um):
[0125] Um=(Nμ-mλm)/K+λm  (4)
[0126] 其中,N为所述任务总数,μ是(所有任务时长组的)整体平均任务时长,K是可供分配的计算槽位总数,λm是第m个最长任务的时长。
[0127] 可以指定所述分配额形状,以将计算槽位m分配给Um,其中,m=1,…,K(步骤906)。也就是说,所述K个计算槽位中的每个计算槽位被分配不同的时间,使用Um的公式指定所述时间。可以直观地知道,一旦第m个最后结束的任务完成,就不再需要第m个计算槽位(因为此槽位中没有任务运行,只有m–1个任务运行在其它槽位)。应当理解的是,可以将一近似时长用作等式(4)中的λm值,所述近似时长从所述资源需求规格中获得。例如,可以确定所述第m个最长任务所在的任务时长组(因为每个任务时长组中的时长数量是已知的,并且每个任务时长组中的时长按长短排序),然后可将该任务时长组的最大时长用作λm的值。
[0128] 现参考图10,在另一实施例中,除了(如图9所示的)为所述K个计算槽位中的每个槽位选择不同的时长(即宽度),在步骤804中,通过根据所述任务时长组的数量为一组槽位选择时长,确定所述最小分配额形状。为此,步骤804包括:将分配计划中目前分配的任务总数(m)设为一(1),并将组编号(i)设为一(1)(步骤1002)。然后在步骤1004中,使用上述Um的公式(等式(4))确定所述第m个最后结束的任务的完成时间的上限(Um)。
[0129] 步骤1006中,基于所述上限创建分配额形状,(如果有之前创建的分配额形状的话)将所述分配额形状叠加在之前创建的一个或多个分配额形状上。所创建分配额形状的宽度为Um,高度定义如下:
[0130] height=min(K-m+1,Ni)   (5)
[0131] 其中,Ni是组i中的任务总数。
[0132] 在步骤1008中,确定是否所有的计算槽位都已被分配(即m是否大于K)。若是,步骤804结束。否则(即m小于或等于K),按预定步长(比如,一(1))增加所述组编号i,m增加Ni,并重复执行步骤904、906及908。
[0133] 现参考图11,下文将描述一种用于分布式计算系统中资源需求及资源分配额定义的示例性系统1100。所述系统1100实现上文结合图2、图3、图4A、图4B、图5、图7、图8、图9及图10所描述的方法。为此,所述系统1100包括输入模块1102、时长信息获得模块1104、时长分组模块1106、资源需求定义模块1108、资源分配额确定模块1110及输出模块1112。所述输入模块1102接收输入数据,所述时长信息获得模块1104通过执行结合图3、图4A及图4B所描述的步骤从所述输入数据中提取时长信息。然后所述时长分组模块1106将任务时长分组。所述资源需求定义模块1108为阶段定义资源需求,所述资源分配额确定模块1110创建资源分配额形状,然后所述输出模块1112输出所述资源分配额形状(比如,输出至资源管理器),用于根据规划的资源分配额执行任务。
[0134] 在一实施例中,在所述资源需求确定器(图1A中的编号106)中实现所述资源需求定义模块1108,并在所述资源规划器(图1A中的编号108)中实现所述资源分配额确定模块1110。
[0135] 同时参考图12及图11,所述时长分组模块1106包括组分区确定模块1202及组数确定模块1204。所述组分区确定模块1202使用上文中结合图5中步骤504所描述的技术确定任务时长组的分区,所述分区将表示合计资源分配额面积的成本函数的最小化。所述组数确定模块1204动态确定任务时长组的最佳数量,即,任务时长组的给定数量其中,如果使用多于所述给定数量的任务时长组,减小所述成本函数带来的增益很小。这是通过执行结合图5及图7所描述的方法步骤实现的。
[0136] 参考图13,所述资源分配额确定模块1110包括分配额形状创建模块1302及计算槽位数选择模块1304。所述分配额形状创建模块1302确定保证任务在其分配额内完成的最小分配额形状(即,使过度预留浪费量最少的分配额形状)(步骤804)。这是通过执行结合图9及图10所描述的方法步骤实现的。所述计算槽位数选择模块1304确定最佳计算槽位数,使所述阶段尽快适配整体分配计划。这是通过执行结合图8中步骤802所描述的一个或多个技术实现的。
[0137] 图14是一种计算设备1400的示例性实施例,其中,所述计算设备1400用于实现上文结合图11、图12及图13所描述的所述系统1100。所述计算设备1400可以称为节点,用于进行资源需求定义及资源分配。所述计算设备1400可以与计算集群中的一个或多个其它计算设备(也称为“节点”)相连,并在所述一个或多个其它计算设备上进行阶段调度,其中,所述计算集群组成分布式计算系统。所述计算设备1400包括处理单元1402及存储有计算机可读指令1406的存储器1404。所述处理单元1402可包括任意合适的设备,用于执行一系列步骤,使得当所计算设备1400或其它可编程装置执行所述指令1406,可以执行本文中所述方法中指定的函数/动作/步骤。所述处理单元1402可包括,例如,任意类型的通用微处理器或微控制器、数字信号处理(digital signal processing,DSP)处理器、CPU、集成电路、现场可编程阵列(field programmable gate array,FPGA)、可重配置处理器、其它合适的程控或可编程逻辑电路、或其任意组合。
[0138] 所述存储器1404可包括任意合适的已知或其它机器可读存储介质。所述存储器1404可包括非瞬时性计算机可读存储介质,例如但不限于,电性、磁性、光学、电磁、红外或半导体系统、装置或设备,或其任意合适的组合。所述存储器1404可包括位于设备之内或之外的任意类型的计算机存储器的合适组合,例如,随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM),只读光盘(compact disc read-only memory,CDROM)、电光存储器、磁光存储器、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦可编程只读存储器(electrically-erasable programmable read-only memory,EEPROM)、电式存储器(Ferroelectric RAM,FRAM)等。所述存储器1404可包括任意存储手段(如设备),适用于可检索地存储所述处理单元1402可执行的所述机器可读指令1406。
[0139] 在一实施例中,所述计算设备1400用于实现图1A中的所述资源需求确定器106及所述资源规划器108。
[0140] 在一实施例中,通过使用所述本文中所描述的资源需求及资源分配额定义系统及方法,可以快速进行任务时长分组,从而降低与任务时长分组流程相关联的开销并保证良好的系统性能。并且,可以高效地进行资源规划、整形及分配,因为任务时长组的数量是动态选择的,并且只有在能够大量减少过度预留浪费时才增加所述任务时长组的数量。此外,通过使用任务时长组,可以保证任务在其分配额内完成的同时将过度预留浪费降至最低。
[0141] 以上描述仅用作示例,本领域技术人员可以理解,可以对实施例进行修改而不脱离本发明的范围。例如,本文中所描述的流程图及图形中的方框和/或操作仅用作示例。这些方块框和/或操作可以有诸多变型,而不脱离本公开内容。例如,可以不同的顺序执行这些方框,或可以增加、删除或变更方框。
[0142] 虽然在方框图中示为通过不同数据信号连接相互通信的分立器件组,本领域技术人员可以理解到,本发明实施例由硬件及软件器件的组合提供,有些器件由硬件或软件系统中的给定函数或操作实现,并且,图示中许多数据通路通过计算机应用或操作系统中的数据通信实现。基于这种理解,本发明的技术方案可通过软件产品的形式体现。所述软件产品可以存储在非易失性或非瞬时性存储介质中,如只读存储器(ROM)、磁盘、光盘、闪存盘或任意其它合适的存储介质或设备。
[0143] 可以用高级的过程或面向对象的编程或脚本语言或其组合实现本文中描述的每个计算机程序,以与计算机系统通信。或者,可以用汇编或机器语言实现所需程序。所述语言可以是编译型或解释型语言。软件产品包括能够使计算机设备(个人计算机、服务器或网络设备)执行本发明实施例中提供的方法的多个指令。计算机可执行指令可以是由一个或多个计算机或其它设备执行的多种形式,包括程序模块。一般而言,程序模块包括例程、程序、对象、组件以及数据结构等,其执行特定任务或实现特定抽象数据类型。通常在各种实施例中程序模块的功能性可以视需要组合或分布。因此,提供所示结构以便理解本实施例内容。本公开内容可以其它具体形式体现,而不脱离权利要求的主题。
[0144] 并且,本领域的技术人员可以理解,虽然本文中所公开及示出的系统、方法及计算机可读介质可包括特定数量的元器件,但是可以对所述系统、方法及计算机可读介质进行变更,使其包括更多或更少此类元器件。同时,本公开内容意在包括及涵盖所有合适的技术修改。在回顾本公开内容之后,本发明范围内的变更对于本领域技术人员来说是显而易见的。此类变更涵盖在所附权利要求书的范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈