任务调度方法、网络设备和存储介质与流程

文档序号:25100444发布日期:2021-05-18 22:51阅读:63来源:国知局
任务调度方法、网络设备和存储介质与流程

1.本发明实施例涉及通信领域,特别涉及一种任务调度方法、网络设备和存储介质。


背景技术:

2.hadoop是一个由apache基金会所开发的分布式系统基础架构,能够对大量数据进行分布式处理,其核心是分布式文件系统(hadoop distributed file system,hdfs)和mapreduce编程模型。目前在现有mapreduc编程模型计算过程中,主节点通过hadoop异构平台默认算法将任务平均分配给每个从节点,默认调度策略使每个节点的负载率保持一致,这种策略在资源相同的环境下通常有效,hadoop集群会配置相同的资源,默认调度策略会使计算任务在每个节点实际负载率保存一致,不会出现侧重偏差。随着云计算的发展,在应用软件系统运化后,传统硬件资源逐渐释放出来,加入云环境中,合理有效地利用资源。
3.然而,如今资源呈现出多样化发展,每个节点的存储空间、计算能力各不同,hadoop默认调度策略显然不能满足集群负载平衡要求。比如,如果一个节点的计算能力很弱,但存储空间大,默认策略会使该节点成为一个高负载,造成整个集群负载不平衡,降低了整个集群运行效率,使得任务执行时间变长,执行效率降低。


技术实现要素:

4.本发明实施方式的目的在于提供一种任务调度方法、网络设备和存储介质,实现合理分配资源和调度任务,提高任务执行效率。
5.为解决上述技术问题,本发明的实施方式提供了一种任务调度方法,包括:应用于异构平台,所述异构平台包括至少一个主节点,所述主节点包括至少一个从节点,所述方法包括:当监控到主节点接收到任务请求后,根据预设的优先级信息遍历预设的调度表,其中,所述调度表中包含根据预设的调度规则分配的从节点信息;在所述调度表中选择与所述任务请求相匹配的从节点信息;将所述从节点信息发送至所述主节点以供所述主节点将所述任务请求调度至与所述从节点信息对应的从节点。
6.本发明的实施方式还提供了一种网络设备,包括:
7.至少一个处理器;以及,
8.与所述至少一个处理器通信连接的存储器;其中,
9.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上所述的任务调度方法。
10.本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现以上所述的任务调度方法。
11.本发明实施方式相对于现有技术而言,当监控到主节点接收到任务请求后,根据优先级信息遍历预设的调度表,其中,调度表中包含有根据预设的调度规则分配的从节点信息,以此实现了通过不同的调度表将从节点信息进行了分类,根据任务请求选择相应的从节点信息,实现整个集群的负载平衡,从而有效提高任务执行效率。
12.另外,本发明实施方式提供的任务调度方法,所述当监控到所述主节点接收到任务请求后,根据预设的优先级信息遍历预设的调度表之前,还包括:获取主节点资源信息和从节点资源信息;根据所述主节点资源信息和所述从节点资源信息获取从节点负载率、集群负载率和集群最大负载率;根据所述从节点负载率、所述集群负载率和所述集群最大负载率将所述从节点信息按照预设的调度规则分配到所述预设的调度表中。根据从节点负载率、集群负载率和集群最大负载率按照预设的调度规则将从节点信息进行了分类,使得后续能快速根据从节点资源使用状态选择合适的从节点信息进行任务调度。
13.另外,本发明实施方式提供的任务调度方法,所述根据所述从节点负载率、所述集群负载率和所述集群最大负载率将所述从节点信息按照预设的调度规则分配到所述预设的调度表中之后,还包括:根据所述主节点资源信息和所述从节点资源信息获取从节点命中率;根据所述从节点命中率将所述调度表中的从节点信息进行排序。根据从节点命中率将调度表中的从节点进行排序,使得命中率高的从节点能被快速查找到,从而提高任务分配速度和分配成功率。
14.另外,本发明实施方式提供的任务调度方法,所述根据所述从节点负载率、所述集群负载率和所述集群最大负载率将所述从节点信息按照预设的调度规则分配到所述调度表中,包括:当从节点负载率小于等于集群负载率时,将所述从节点信息分配到第一调度表中;当从节点负载率大于集群负载率且小于集群最大负载率时,将所述从节点信息分配到第二调度表中;当从节点负载率大于等于集群最大负载率时,将所述从节点信息分配到第三调度表中。通过从节点负载率、集群负载率和集群最大负载率将从节点信息进行分类,使得在任务分配时能快速选取调度表中合适的从节点,实现任务的快速分配。
15.另外,本发明实施方式提供的任务调度方法,所述当监控到主节点接收到任务请求后,根据预设的优先级信息遍历预设的调度表,包括:当监控到主节点接收到任务请求后,如果所述主节点将所述任务请求按照均匀调度方式调度给多个从节点,且所述多个从节点中包括与所述任务请求不匹配的从节点,针对所述不匹配的从节点,根据预设的优先级信息从高优先级到低优先级依次遍历所述调度表。将均匀调度中与任务请求不匹配的从节点重新调度,可以既不改变异构平台原有调度算法,又保证任务请求的执行效率。
16.另外,本发明实施方式提供的任务调度方法,所述在所述调度表中选择与所述任务请求相匹配的从节点信息之前,还包括:判断所述调度表中是否存在与所述任务请求相匹配的从节点信息;若不存在与所述任务请求相匹配的从节点信息,则等待所述从节点执行完当前任务,并更新从节点信息后选择与所述任务请求相匹配的从节点信息。若存在与所述任务请求相匹配的从节点信息,则选择与所述任务请求相匹配的从节点信息。
17.另外,本发明实施方式提供的任务调度方法,所述将所述从节点信息发送至所述主节点以供所述主节点将所述任务请求调度至与所述从节点信息对应的从节点之后,还包括:获取主节点资源信息和从节点资源信息;根据所述主节点资源信息和所述从节点资源信息更新所述调度表以供所述主节点进行下一次任务调度。每分配完一次任务,重新获取节点资源信息并更新调度表,保证调度表能准确反应每个节点的资源使用状态。
附图说明
18.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说
明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
19.图1是本发明的第一实施方式提供的任务调度方法的流程图;
20.图2是本发明的第二实施方式提供的任务调度方法的流程图一;
21.图3是本发明的第二实施方式提供的任务调度方法的流程图二;
22.图4是本发明的第三实施方式提供的任务调度方法的流程图;
23.图5是本发明的第四实施方式提供的任务调度方法的流程图;
24.图6是本发明的第五实施方式提供的任务调度方法的流程图;
25.图7是本发明的第六实施方式提供的网络设备的结构示意图。
具体实施方式
26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
27.本发明的第一实施方式涉及一种任务调度方法,应用于异构平台,异构平台包括至少一个主节点,主节点至少包括一个从节点。下面以具体应用于hadoop异构平台为例说明本实施方式的任务调度方法,具体流程如图1所示,包括:
28.步骤101,当监控到主节点接收到任务请求后,根据预设的优先级信息遍历预设的调度表,其中,调度表中包含根据预设的调度规则分配的从节点信息。
29.具体地说,预设的优先级信息可以是单纯的依次遍历高优先级的第一调度表,中优先级的第二调度表,低优先级的第三调度表。当然,本实施方式中的调度表有多个,上述第一调度表,第二调度表等只是举例说明。也可以根据任务类型,先选择与任务类型相匹配的调度表集合,然后针对调度表集合根据优先级信息遍历。比如:hadoop异构平台中的任务类型一般可以分为cpu密集型和i/o密集型。cpu密集型任务一般是系统的硬盘、内存性能相对cpu要好很多,或者说该任务需要做大量的计算、逻辑判断等cpu动作。i/o密集型任务一般是cpu性能相对硬盘、内存要好很多,或者说该任务的大部分时间都在等待io操作完成。当监控到主节点接收到cpu密集型任务时,则选择与cpu密集型相匹配的调度表集合,在该集合中根据优先级信息遍历调度表。
30.步骤102,在调度表中选择与任务请求相匹配的从节点信息。
31.需要说明的是,从节点信息可以包括从节点编号、从节点命中率、从节点负载率、从节点cpu性能指标和从节点内存性能指标等等。当然以上仅为举例说明,实际应用时还可根据需要包含其他信息。调度表的形式可以是存储单元、队列、哈希表等等,当然此处仅为具体的举例,实际使用时可以根据应用场景和用户需求选择其他形式。另外,调度表中存储有从节点信息,具体可以通过在调度表中以<key,value>键值对的形式存储从节点信息,比如在调度表中存储<从节点编号,从节点命中率>。当然,<key,value>键值对中也可以是其他节点信息。
32.另外,在hadoop异构平台中,从节点的负载阈值一般默认设置为80%,当从节点的负载超过80%时,主节点不会再分配新任务给从节点,而此时从节点任务执行的成功率也会受到影响。另外,从节点长时间超负荷运行也会对整个集群的性能产生较大影响。当然在实际应用时,对于其他异构平台负载阈值默认设置情况,需要根据实际情况和相关专家经验进行设置。
33.步骤103,将从节点信息发送至主节点以供主节点将任务请求调度至与从节点信息对应的从节点。
34.具体地说,在hadoop异构平台中主节点主要负责管理整个文件系统中文件的元数据信息,管理各个从节点并进行任务分配。从节点主要负责执行任务,存储数据。在选择出与任务请求相匹配的从节点信息后,需要将从节点信息发给主节点以便主节点及时将任务调度至相应从节点。
35.另外,根据预设的优先级信息遍历预设的调度表,还可以包括:当监控到主节点接收到任务请求后,如果主节点将任务请求按照均匀调度方式调度给多个从节点,且多个从节点中包括与任务请求不匹配的从节点,针对不匹配的从节点,根据预设的优先级信息从高优先级到低优先级依次遍历调度表。
36.需要说明的是,本实施方式中的任务调度方法也可以与原有均匀调度算法结合进行任务的动态分配,而不需要完全改变原有异构平台任务调度方法,即当主节点接收到任务请求后,将所有任务均匀分配给多个从节点,同时本实施方式中的任务调度方法可以通过设置监控模块监控所有节点资源使用状态,进行任务的动态调整,如此当任务均匀分配恰好合理时,就无需进行动态调整,减少了工作量。而当任务均匀分配不合理时,进行动态调整,保证了整个集群任务执行效率和资源利用的最大化。
37.本发明实施方式相对于现有技术而言,当监控到主节点接收到任务请求后,根据优先级信息遍历预设的调度表,其中,调度表中包含有根据预设的调度规则分配的从节点信息,以此实现了通过不同的调度表将从节点信息进行了分类,根据任务请求选择相应的从节点信息,实现整个集群的负载平衡,从而有效提高任务执行效率。
38.本发明的第二实施方式涉及一种任务调度方法,该方法与第一实施方式提供的任务调度方法基本相同,其区别在于,如图2所示,步骤101之前,还包括:
39.步骤201,获取主节点资源信息和从节点资源信息。
40.具体地说,主节点的资源信息可以包括主节点cpu频率,主节点cpu核心数,主节点使用的存储容量和主节点内存大小;从节点的资源信息可以包括:从节点编号,从节点cpu频率,从节点cpu核心数,从节点使用的存储容量和从节点内存大小。另外,还可以通过上述信息进一步获取主节点和从节点的cpu性能指标,主节点和从节点的计算能力指标等等。当然以上仅为具体的举例说明实际使用时主节点和从节点的资源信息还可以包含其他信息,此处不一一赘述。
41.步骤202,根据主节点资源信息和从节点资源信息获取从节点负载率、集群负载率、集群最大负载率。
42.在本实施方式,从节点负载率可以通过以下公式获得:
43.44.其中,u
node
(x)表示节点使用的存储容量,s
node
(x)表示集群总存储容量。上述公式表示从节点的负载率等于单个从节点使用的存储容量占集群总存储容量百分比。
45.集群负载率可以通过以下公式获得:
[0046][0047]
其中,u
cluster
表示所有节点使用的存储容量,s
cluster
表示集群中所有节点总容量。r
cluster
是衡量一个集群负载的重要指标,该公式表示集群中所有节点使用的存储容量与集群中所有节点总容量之比。
[0048]
集群最大负载率可以通过以下公式获得:
[0049]
r
max
=[γ+(1

γ)
×
r
cluster
]
×
100%
[0050]
其中,γ参数在hadoop异构平台中默认为0.8。当集群满负载时,γ=1,那么最大负载率自动变为100%。
[0051]
步骤203,根据从节点负载率、集群负载率和集群最大负载率将从节点信息按照预设的调度规则分配到调度表中。
[0052]
具体地说,根据主节点资源信息和从节点资源信息可以获取到整个集群任务负载情况和每个从节点的任务负载情况,根据整个集群的任务负载情况和每个从节点的任务负载情况,即根据从节点负载率、集群负载率和集群最大负载率按照预设的调度规则可以把每个从节点分配到预设的不同的调度表中。比如:第一调度表中包含从节点1、从节点3、从节点9、从节点10,第二调度表包含从节点2、从节点5、从节点6,第一调度表和第二调度表对应的调度规则不同。
[0053]
进一步地,如图3所示,步骤203之后还包括:
[0054]
步骤204,根据主节点资源信息和从节点资源信息获取从节点命中率。
[0055]
步骤205,根据从节点命中率将调度表中的从节点信息进行排序。
[0056]
从节点命中率可以通过以下公式获得:
[0057][0058][0059][0060]
r
ram
(x)=size
ram
(x)
[0061]
其中,r
hit
表示从节点命中率,如果节点计算能力强,使用容量少,则命中率高;max表示所有从节点中计算能力最强,使用容量最少的最大值。p
node
表示从节点计算能力,α,β为资源权重系数,分别表示cpu和内存的比例,根据定义可知α+β=1。hadoop任务类型可以分为cpu密集型和i/o密集型,因此,α、β会随着任务类型的变化而变化;在cpu密集型任务中,α占用比率较高;在i/o密集型任务中,β占用比率较高。p
cpu
表示节点cpu性能指标,节点
总数为n
node
,那么x∈[1,n
node
],f
cpu
为cpu频率,core为cpu核心数,ε是cpu内核不为1时的参数,其合理值通常在之间,代表cpu核数越多,计算能力有0.1~0.2的损耗。p
ram
表示节点内存性能指标,size
ram
表示内存ram的大小,该参数主要用来评估内存性能。
[0062]
本发明实施方式相对于现有技术而言,在实现第一实施方式有益效果的基础上,通过主节点资源信息和从节点的资源信息获取了各个节点资源使用状态和整个集群的负载情况,基于此将从节点信息分配到不同的调度表中,对从节点的资源使用情况进行了分类,使得在任务分配时能快速选取调度表中合适的从节点信息,实现任务的快速分配。另外,本实施方式根据从节点命中率将调度表中的从节点进行排序,使得命中率高的从节点能被快速查找到,从而进一步提高任务分配速度和分配成功率。
[0063]
本发明的第三实施方式涉及一种任务调度方法,该方法与第二实施方式提供的任务调度方法基本相同,其区别在于,如图4所示,步骤203,包括:
[0064]
步骤401,判断从节点负载率是否小于等于集群负载率。
[0065]
具体地说,当从节点负载率小于等于集群负载率时,执行步骤402,否则,执行步骤403。
[0066]
步骤402,将从节点信息分配到第一调度表中。
[0067]
步骤403,判断从节点负载率是否大于集群负载率且小于集群最大负载率。
[0068]
具体地说,当从节点负载率大于集群负载率且小于集群最大负载率时,执行步骤404,否则,执行步骤405。
[0069]
步骤404,将从节点信息分配到第二调度表中。
[0070]
步骤405,将从节点信息分配到第三调度表中。
[0071]
具体地说,当从节点信息不属于前两个调度表时,即不满足前两个判断条件时,则此时从节点负载率大于等于集群最大负载率,将其分配到第三调度表,说明第三调度表中的从节点均已满负荷运行。
[0072]
需要说明的是,以上调度表的划分只是其中一种调度规则,实际应用时还可以将第一调度表和第二调度表合并作为一个调度表,也可以针对第一调度表和第二调度表进一步进行细分,此处不一一赘述。
[0073]
本发明实施方式相对于现有技术而言,在实现第二实施方式有益效果的基础上,通过从节点负载率、集群负载率和集群最大负载率将从节点分配到三个不同的调度表中,对从节点的资源使用情况进行了分类,使得在任务分配时能快速选取调度表中合适的从节点,实现任务的快速分配。另外,通过向主节点发送任务拒绝消息,提前过滤掉超负荷运行的从节点,提高了任务分配的效率。
[0074]
本发明的第四实施方式涉及一种任务调度方法,该方法与第一实施方式提供的任务调度方法基本相同,其区别在于,如图5所示,步骤102之前,还包括:
[0075]
步骤501,判断调度表中是否存在与任务请求相匹配的从节点信息。
[0076]
具体地说,当不存在与任务请求相匹配的从节点信息时,执行步骤502,否则,执行步骤102。
[0077]
步骤502,等待从节点执行完当前任务,并更新从节点信息后选择与任务请求相匹配的从节点信息。
[0078]
在本实施方式中,若调度表中不存在与任务请求相匹配的从节点信息,可能所有
从节点已经满负荷运行,也就是说当前集群可能已经超负荷运行,一般常设置集群负载阈值为80%,此时则需要等待一段时间使从节点执行完当前任务,也就是说等待集群负载率下降到阈值以下,具体等待多长时间则根据待分配的任务要求进行决定。比如:若待分配的任务需要较大的存储空间和较强的计算能力,则需要等待较长时间,待集群负载率下降到一个较小的值(比如集群负载率为30%)。
[0079]
当然,若调度表中不存在与任务请求相匹配的从节点信息,也有可能目前所有从节点虽然没有满负荷运行但该任务请求需要较大的存储空间,当前所有从节点内存资源均不满足该任务需求。此时也需要等待一段时间使从节点执行完当前任务释放出一部分内存空间。
[0080]
本发明实施方式相对于现有技术而言,在实现第一实施方式有益效果的基础上,在选择与任务请求相匹配的从节点信息前,先判断调度表中是否存在与任务请求相匹配的从节点信息,若不存在等待一段时间并通过不断更新从节点信息,保证整个集群不会超负荷运行同时提高任务调度的成功率。
[0081]
本发明的第五实施方式涉及一种任务调度方法,该方法与第一实施方式提供的任务调度方法基本相同,其区别在于,如图6所示,步骤103之后,还包括:
[0082]
步骤601,获取主节点资源信息和从节点资源信息。
[0083]
步骤602,根据主节点资源信息和从节点资源信息更新调度表以供主节点进行下一次任务调度。
[0084]
本发明实施方式相对于现有技术而言,在实现第一实施方式有益效果基础上,每分配完一次任务,需要实时获取一次主节点资源信息和从节点的资源信息,根据每个节点资源使用状态变化及时更新调度表,保证调度表能准确反映每个节点的资源使用状态的负载情况。
[0085]
需要说明的是,以上第一实施方式至第五实施方式所提供的任务调度方法,可以通过在异构平台中设置一个监控模块来实现,该监控模块可以设置在主节点和各个从节点上,也可以设置在客户端节点上,还可以只设置在主节点上,通过主节点来监控各个从节点。当然,该监控模块也可以是其他能实现以上所述任务调度方法的逻辑模块,实际应用时可以是一个具体设备。
[0086]
另外,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0087]
本发明第六实施方式涉及一种网络设备,如图7所示,包括:
[0088]
至少一个处理器701;以及,
[0089]
与所述至少一个处理器701通信连接的存储器702;其中,
[0090]
所述存储器702存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器701执行,以使所述至少一个处理器701能够执行本发明第一至第二实施方式所述的任务调度方法。
[0091]
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围
设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
[0092]
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
[0093]
本发明第七实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
[0094]
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0095]
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1