一种HADOOP集群中的作业调度方法和作业调度器.pdf

上传人:e2 文档编号:4530254 上传时间:2018-10-18 格式:PDF 页数:15 大小:1.92MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410486616.4

申请日:

2014.09.22

公开号:

CN104268018A

公开日:

2015.01.07

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/48申请日:20140922|||公开

IPC分类号:

G06F9/48; G06F9/50

主分类号:

G06F9/48

申请人:

浪潮(北京)电子信息产业有限公司

发明人:

宗栋瑞; 郭美思; 吴楠

地址:

100085 北京市海淀区上地信息路2号2-1号C栋1层

优先权:

专利代理机构:

北京安信方达知识产权代理有限公司 11262

代理人:

王丹;李丹

PDF下载: PDF下载
内容摘要

本发明公开了一种Hadoop集群中的作业调度方法和作业调度器,该方法包括以下步骤:S1、获取Hadoop集群中的各个资源池的资源使用量,根据各个资源池的资源使用量,选择当前资源池;S2、选择所述当前资源池中任务权重比最小的作业作为当前作业;S3、判断所述当前作业是否是小作业,如果是,则执行步骤S4;否则,执行步骤S5;S4、从所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;S5、根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。本发明能够避免将非本地节点的空闲资源资源分配给小作业带来的数据传输延迟和带宽消耗,提高了小作业的运行效率和系统的整体性能。

权利要求书

权利要求书
1.  一种Hadoop集群中的作业调度方法,其特征在于,包括以下步骤:
S1、获取Hadoop集群中的各个资源池的资源使用量,根据各个资源池的资源使用量,选择当前资源池;
S2、选择所述当前资源池中任务权重比最小的作业作为当前作业;
S3、判断所述当前作业是否是小作业,如果是,则执行步骤S4;否则,执行步骤S5;
S4、从所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;
S5、根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。

2.  如权利要求1所述的方法,其特征在于,所述根据各个资源池的资源使用量,选择当前资源池,具体为:
判断所述Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池,如果是,则选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;否则,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。

3.  如权利要求2所述的方法,其特征在于,所述选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池之前,还包括:
根据最小资源使用量和各个资源池中正在运行的任务数量,计算所述各个资源池的资源使用率;
所述选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池之前,还包括:
根据各个资源池中的任务的优先级,计算所述各个资源池的任务权重比。

4.  如权利要求1所述的方法,其特征在于,所述选择所述当前资源池中任务权重比最小的作业作为当前作业之前,还包括:
获取当前资源池中的各个作业的任务权重比。

5.  如权利要求1所述的方法,其特征在于,所述步骤S5,具体包括:
S51、对当前资源池中各个作业的等待时间进行初始化,并对各个作业的等待时间进行计时;
S52、判断当前资源池中是否存在空闲资源,如果是,则执行步骤S53;否则,结束流程;
S53、判断当前资源池中的空闲资源是否为本地节点的空闲资源,如果是,则执行步骤S54;否则,执行步骤S55;
S54、将当前资源池中的空闲资源分配给当前作业的任务;
S55、对当前资源池中各个作业的等待时间进行判断,如果等待时间小于第一预设时长,则执行步骤S56;如果等待时间不小于第一预设时长且小于第二预设时长,则执行步骤S57;如果等待时间不小于第二预设时长,则执行步骤S54;
S56、将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并返回步骤S52;
S57、判断当前资源池中的空闲资源是否为本机架节点的空闲资源,如果是,则执行步骤S54;否则,执行步骤S56。

6.  一种Hadoop集群中的作业调度器,其特征在于,包括:
第一获取模块,用于获取Hadoop集群中的各个资源池的资源使用量;
第一选择模块,根据所述第一获取模块获取到的各个资源池的资源使用量,选择当前资源池;
第二选择模块,用于从所述第一选择模块选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业;
判断模块,用于判断所述第二选择模块选择出的所述当前作业是否是小作业;
第三选择模块,用于在所述判断模块判断出当前作业不是小作业时,从 所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;
分配模块,用于在所述判断模块判断出当前作业是小作业时,根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。

7.  如权利要求6所述的作业调度器,其特征在于,所述第一选择模块,包括:
第一判断子模块,用于判断所述Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池;
选择子模块,用于在所述第一判断子模块判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在所述第一判断子模块判断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。

8.  如权利要求7所述的作业调度器,其特征在于,所述第一选择模块,还包括:
第一计算子模块,用于根据最小资源使用量和各个资源池中正在运行的任务数量,计算所述各个资源池的资源使用率;
第二计算子模块,用于根据各个资源池中的任务的优先级,计算所述各个资源池的任务权重比;
所述选择子模块,具体用于在所述第一判断子模块判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,根据所述第一计算子模块计算得到的各个资源池的资源使用率,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在所述第一判断子模块判断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,根据所述第二计算子模块计算出的各个资源池的任务权重比,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。

9.  如权利要求6所述的作业调度器,其特征在于,还包括:
第二获取模块,用于获取当前资源池中的各个作业的任务权重比;
所述第二选择模块,具体用于根据所述第二获取模块获取到的所述当前资源池中的各个作业的任务权重比,从所述第一选择模块选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业。

10.  如权利要求6所述的作业调度器,其特征在于,所述分配模块,包括:
初始化子模块,用于对当前资源池中各个作业的等待时间进行初始化;
计时子模块,用于在所述初始化子模块对各个作业的等待时间进行初始化后,对各个作业的等待时间进行计时;
第二判断子模块,用于判断当前资源池中是否存在空闲资源;
第三判断子模块,用于在所述第二判断子模块判断出当前资源池中存在空闲资源,判断当前资源池中的空闲资源是否为本地节点的空闲资源;
第四判断子模块,用于在所述第三判断子模块判断出当前资源池中的空闲资源不是本地节点的空闲资源时,对当前资源池中各个作业的等待时间进行判断;
第五判断子模块,用于在所述第四判断子模块判断出等待时间不小于第一预设时长且小于第二预设时长时,判断当前资源池中的空闲资源是否为本机架节点的空闲资源;
分配子模块,用于在所述第三判断子模块判断出当前资源池中的空闲资源是本地节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第四判断子模块判断出等待时间小于第一预设时长时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发所述第二判断子模块;在所述第四判断子模块判断出等待时间不小于第二预设时长时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第五判断子模块判断出当前资源池中的空闲资源是本机架节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第五判断子模块判断出当前资源池中的空闲资源不是本机架节点的空闲资源时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发所述第二判断子模块。

说明书

说明书一种Hadoop集群中的作业调度方法和作业调度器
技术领域
本发明涉及计算机技术领域,具体涉及一种Hadoop集群中的作业调度方法和作业调度器。
背景技术
Hadoop集群是一种具有高可靠性和良好的扩展性的分布式系统,在数据处理领域得到了广泛的应用。在Hadoop集群得到应用的初期阶段,使用FIFO(First In First Out,先入先出)调度机制分配任务,将所有作业统一提交到一个队列中,并按照提交的先后顺序依次运行队列中的作业。但随着Hadoop用户及应用程序种类的不断增加,FIFO调度机制无法有效地利用集群中的资源,也不能满足不同应用程序的服务质量要求。
现有技术中,通常使用公平调度机制分配任务,按照资源池来组织作业,使得每个用户拥有独立的资源池,并通过设置各种约束条件防止单个用户或者应用程序独占资源。
然而,当集群中出现很多小作业时,会出现满足资源条件的节点不是本地节点的情况,导致整个集群的吞吐率会出现明显的下降。
发明内容
本发明提供了一种Hadoop集群中的作业调度方法和作业调度器,用以解决现有技术中小作业调度影响集群的整体吞吐率的问题
本发明提供了一种Hadoop集群中的作业调度方法,包括以下步骤:
S1、获取Hadoop集群中的各个资源池的资源使用量,根据各个资源池的资源使用量,选择当前资源池;
S2、选择所述当前资源池中任务权重比最小的作业作为当前作业;
S3、判断所述当前作业是否是小作业,如果是,则执行步骤S4;否则,执行步骤S5;
S4、从所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;
S5、根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。
可选地,所述根据各个资源池的资源使用量,选择当前资源池,具体为:
判断所述Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池,如果是,则选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;否则,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。
可选地,所述选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池之前,还包括:
根据最小资源使用量和各个资源池中正在运行的任务数量,计算所述各个资源池的资源使用率;
所述选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池之前,还包括:
根据各个资源池中的任务的优先级,计算所述各个资源池的任务权重比。
可选地,所述选择所述当前资源池中任务权重比最小的作业作为当前作业之前,还包括:
获取当前资源池中的各个作业的任务权重比。
可选地,所述步骤S5,具体包括:
S51、对当前资源池中各个作业的等待时间进行初始化,并对各个作业的等待时间进行计时;
S52、判断当前资源池中是否存在空闲资源,如果是,则执行步骤S53;否则,结束流程;
S53、判断当前资源池中的空闲资源是否为本地节点的空闲资源,如果是,则执行步骤S54;否则,执行步骤S55;
S54、将当前资源池中的空闲资源分配给当前作业的任务;
S55、对当前资源池中各个作业的等待时间进行判断,如果等待时间小于第一预设时长,则执行步骤S56;如果等待时间不小于第一预设时长且小于第二预设时长,则执行步骤S57;如果等待时间不小于第二预设时长,则执行步骤S54;
S56、将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并返回步骤S52;
S57、判断当前资源池中的空闲资源是否为本机架节点的空闲资源,如果是,则执行步骤S54;否则,执行步骤S56。
本发明还提供了一种Hadoop集群中的作业调度器,包括:
第一获取模块,用于获取Hadoop集群中的各个资源池的资源使用量;
第一选择模块,根据所述第一获取模块获取到的各个资源池的资源使用量,选择当前资源池;
第二选择模块,用于从所述第一选择模块选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业;
判断模块,用于判断所述第二选择模块选择出的所述当前作业是否是小作业;
第三选择模块,用于在所述判断模块判断出当前作业不是小作业时,从所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;
分配模块,用于在所述判断模块判断出当前作业是小作业时,根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。
可选地,所述第一选择模块,包括:
第一判断子模块,用于判断所述Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池;
选择子模块,用于在所述第一判断子模块判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在所述第一判断子模块判断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。
可选地,所述第一选择模块,还包括:
第一计算子模块,用于根据最小资源使用量和各个资源池中正在运行的任务数量,计算所述各个资源池的资源使用率;
第二计算子模块,用于根据各个资源池中的任务的优先级,计算所述各个资源池的任务权重比;
所述选择子模块,具体用于在所述第一判断子模块判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,根据所述第一计算子模块计算得到的各个资源池的资源使用率,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在所述第一判断子模块判断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,根据所述第二计算子模块计算出的各个资源池的任务权重比,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。
可选地,所述的作业调度器,还包括:
第二获取模块,用于获取当前资源池中的各个作业的任务权重比;
所述第二选择模块,具体用于根据所述第二获取模块获取到的所述当前资源池中的各个作业的任务权重比,从所述第一选择模块选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业。
可选地,所述分配模块,包括:
初始化子模块,用于对当前资源池中各个作业的等待时间进行初始化;
计时子模块,用于在所述初始化子模块对各个作业的等待时间进行初始化后,对各个作业的等待时间进行计时;
第二判断子模块,用于判断当前资源池中是否存在空闲资源;
第三判断子模块,用于在所述第二判断子模块判断出当前资源池中存在 空闲资源,判断当前资源池中的空闲资源是否为本地节点的空闲资源;
第四判断子模块,用于在所述第三判断子模块判断出当前资源池中的空闲资源不是本地节点的空闲资源时,对当前资源池中各个作业的等待时间进行判断;
第五判断子模块,用于在所述第四判断子模块判断出等待时间不小于第一预设时长且小于第二预设时长时,判断当前资源池中的空闲资源是否为本机架节点的空闲资源;
分配子模块,用于在所述第三判断子模块判断出当前资源池中的空闲资源是本地节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第四判断子模块判断出等待时间小于第一预设时长时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发所述第二判断子模块;在所述第四判断子模块判断出等待时间不小于第二预设时长时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第五判断子模块判断出当前资源池中的空闲资源是本机架节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在所述第五判断子模块判断出当前资源池中的空闲资源不是本机架节点的空闲资源时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发所述第二判断子模块。
本发明将本地节点的空闲资源资源分配给小作业,避免将非本地节点的空闲资源资源分配给小作业带来的数据传输延迟和带宽消耗,缩短了小作业的执行时间,优化了小作业的选择策略,提高了小作业的运行效率,增加了Hadoop集群的整体吞吐率,提高了系统的整体性能。
附图说明
图1为本发明实施例中的一种Hadoop集群中的作业调度方法流程图;
图2为本发明实施例中的一种分配空闲资源的方法流程图;
图3为本发明实施例中的一种Hadoop集群中的作业调度器的结构示意图;
图4为本发明实施例中的一种分配模块360的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例中提出了一种Hadoop集群中的作业调度方法,在安装Hadoop组件并开启HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)服务后,使用资源池来组织作业,并将集群资源分配到资源池中。每个用户拥有一个独立的资源池,以使所有用户都能获得等同的集群资源。
在完成上述设置后,可对Hadoop集群进行作业调度,具体流程如图1所示,包括以下步骤:
步骤101,获取Hadoop集群中的各个资源池的资源使用量。
步骤102,根据Hadoop集群中的各个资源池的资源使用量,判断Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池,如果是,则执行步骤103;否则,执行步骤105。
步骤103,根据最小资源使用量和各个资源池中正在运行的任务数量,计算各个资源池的资源使用率。
具体地,可以获取Hadoop集群中的各个资源池中正在运行的任务数量与最小资源使用量的比值,将该比值作为各个资源池的资源使用率。
步骤104,选择Hadoop集群中资源使用率最低的资源池作为当前资源池,并执行步骤107。
具体地,可以对各个队列的资源使用率进行对比和排序,选择资源使用率最低的队列作为当前队列。
步骤105,根据各个资源池中的任务的优先级,计算各个资源池的任务权重比。
具体地,可以获取Hadoop集群中的各个资源池中所有正在运行的任务的优先级之和与各个资源池中所有任务的优先级之和的比值,将该比值作为各个资源池的任务权重比。其中,各个任务的优先级是预先设定的。
步骤106,选择Hadoop集群中任务权重比最小的资源池作为当前资源池,并执行步骤107。
步骤107,获取当前资源池中的各个作业的任务权重比。
具体地,可以获取当前资源池中的各个作业正在运行的任务数量与各个作业的权重的比值,将该比值作为各个作业的任务权重比。其中,各个作业的权重是预先设定的。
步骤108,选择当前资源池中任务权重比最小的作业作为当前作业。
步骤109,判断当前作业是否是小作业,如果是,则执行步骤111;否则,执行步骤110。
具体地,可以判断当前作业对应的标志位是否为预设值,如果是,则确定当前作业是小作业;否则,确定当前作业不是小作业。例如,预设值为“true”。
相应地,本发明实施例中,在提交小作业时,设置该小作业对应的标志位为预设值。
步骤110,从当前作业中选择一个本地任务,向选择的本地任务分配空闲资源。
步骤111,根据当前资源池中的空闲资源的位置以及当前作业的等待时间,向当前作业分配空闲资源。
具体地,向当前作业分配空闲资源的具体流程,如图2所示,包括以下步骤:
步骤201,对当前资源池中各个作业的等待时间进行初始化,并对各个作业的等待时间进行计时。
步骤202,判断当前资源池中是否存在空闲资源,如果是,则执行步骤 203;否则,结束流程。
步骤203,判断当前资源池中的空闲资源是否为本地节点的空闲资源,如果是,则执行步骤204;否则,执行步骤205。
步骤204,将当前资源池中的空闲资源分配给当前作业的任务。
步骤205,对当前资源池中各个作业的等待时间进行判断,如果等待时间小于第一预设时长,则执行步骤206;如果等待时间不小于第一预设时长且小于第二预设时长,则执行步骤207;如果等待时间不小于第二预设时长,则执行步骤204。
其中,第一预设时长小于第二预设时长。
步骤206,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并返回步骤202。
步骤207,判断当前资源池中的空闲资源是否为本机架节点的空闲资源,如果是,则执行步骤204;否则,执行步骤206。
本发明实施例将本地节点的空闲资源资源分配给小作业,避免将非本地节点的空闲资源资源分配给小作业带来的数据传输延迟和带宽消耗,缩短了小作业的执行时间,优化了小作业的选择策略,提高了小作业的运行效率,增加了Hadoop集群的整体吞吐率,提高了系统的整体性能。
基于上述作业调度方法,本发明实施例还提出了一种Hadoop集群中的作业调度器,如图3所示,包括:
第一获取模块310,用于获取Hadoop集群中的各个资源池的资源使用量;
第一选择模块320,根据第一获取模块310获取到的各个资源池的资源使用量,选择当前资源池;
第二选择模块330,用于从第一选择模块320选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业;
判断模块340,用于判断第二选择模块330选择出的所述当前作业是否是小作业;
第三选择模块350,用于在判断模块340判断出当前作业不是小作业时,从所述当前作业中选择一个本地任务,向选择的本地任务分配空闲资源;
分配模块360,用于在判断模块340判断出当前作业是小作业时,根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间,向所述当前作业分配空闲资源。
具体地,上述第一选择模块320,包括:
第一判断子模块321,用于判断所述Hadoop集群中是否存在资源使用量小于预定的最小资源使用量的资源池;
选择子模块322,用于在第一判断子模块321判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在第一判断子模块321判断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。
进一步,上述第一选择模块320,还包括:
第一计算子模块323,用于根据最小资源使用量和各个资源池中正在运行的任务数量,计算各个资源池的资源使用率;
具体地,第一计算子模块323,具体用于获取Hadoop集群中的各个资源池中正在运行的任务数量与最小资源使用量的比值,将该比值作为各个资源池的资源使用率。
第二计算子模块324,用于根据各个资源池中的任务的优先级,计算各个资源池的任务权重比;
具体地,第二计算子模块324,具体用于获取Hadoop集群中的各个资源池中所有正在运行的任务的优先级之和与各个资源池中所有任务的优先级之和的比值,将该比值作为各个资源池的任务权重比。
相应地,上述选择子模块322,具体用于在第一判断子模块321判断出所述Hadoop集群中存在资源使用量小于最小资源使用量的资源池时,根据第一计算子模块323计算得到的各个资源池的资源使用率,选择所述Hadoop集群中资源使用率最低的资源池作为当前资源池;在第一判断子模块321判 断出所述Hadoop集群中不存在资源使用量小于最小资源使用量的资源池时,根据第二计算子模块324计算出的各个资源池的任务权重比,选择所述Hadoop集群中任务权重比最小的资源池作为当前资源池。
进一步地,上述作业调度器,还包括:
第二获取模块370,用于获取当前资源池中的各个作业的任务权重比;
相应地,上述第二选择模块330,具体用于根据第二获取模块370获取到的所述当前资源池中的各个作业的任务权重比,从第一选择模块320选择出的所述当前资源池中,选择任务权重比最小的作业作为当前作业。
进一步地,上述分配模块360,如图4所示,包括:
初始化子模块361,用于对当前资源池中各个作业的等待时间进行初始化;
计时子模块362,用于在初始化子模块361对各个作业的等待时间进行初始化后,对各个作业的等待时间进行计时;
第二判断子模块363,用于判断当前资源池中是否存在空闲资源;
第三判断子模块364,用于在第二判断子模块363判断出当前资源池中存在空闲资源,判断当前资源池中的空闲资源是否为本地节点的空闲资源;
第四判断子模块365,用于在第三判断子模块364判断出当前资源池中的空闲资源不是本地节点的空闲资源时,对计时子模块362计时得到的当前资源池中各个作业的等待时间进行判断;
第五判断子模块366,用于在第四判断子模块365判断出等待时间不小于第一预设时长且小于第二预设时长时,判断当前资源池中的空闲资源是否为本机架节点的空闲资源;
分配子模块367,用于在第三判断子模块364判断出当前资源池中的空闲资源是本地节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在第四判断子模块365判断出等待时间小于第一预设时长时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发第二判断子模块363;在第四判断子模块365判断出等待时间不小于第二预设时长时,将当前资源池中的空闲资源分配给当前作业的任务;在第五判断子 模块366判断出当前资源池中的空闲资源是本机架节点的空闲资源时,将当前资源池中的空闲资源分配给当前作业的任务;在第五判断子模块366判断出当前资源池中的空闲资源不是本机架节点的空闲资源时,将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务,并触发第二判断子模块363。
本发明实施例将本地节点的空闲资源资源分配给小作业,避免将非本地节点的空闲资源资源分配给小作业带来的数据传输延迟和带宽消耗,缩短了小作业的执行时间,优化了小作业的选择策略,提高了小作业的运行效率,增加了Hadoop集群的整体吞吐率,提高了系统的整体性能。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

一种HADOOP集群中的作业调度方法和作业调度器.pdf_第1页
第1页 / 共15页
一种HADOOP集群中的作业调度方法和作业调度器.pdf_第2页
第2页 / 共15页
一种HADOOP集群中的作业调度方法和作业调度器.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种HADOOP集群中的作业调度方法和作业调度器.pdf》由会员分享,可在线阅读,更多相关《一种HADOOP集群中的作业调度方法和作业调度器.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104268018 A (43)申请公布日 2015.01.07 CN 104268018 A (21)申请号 201410486616.4 (22)申请日 2014.09.22 G06F 9/48(2006.01) G06F 9/50(2006.01) (71)申请人 浪潮 (北京) 电子信息产业有限公司 地址 100085 北京市海淀区上地信息路 2 号 2-1 号 C 栋 1 层 (72)发明人 宗栋瑞 郭美思 吴楠 (74)专利代理机构 北京安信方达知识产权代理 有限公司 11262 代理人 王丹 李丹 (54) 发明名称 一种 Hadoop 集群中的作业调度。

2、方法和作业 调度器 (57) 摘要 本发明公开了一种 Hadoop 集群中的作业调 度方法和作业调度器, 该方法包括以下步骤 : S1、 获取 Hadoop 集群中的各个资源池的资源使用量, 根据各个资源池的资源使用量, 选择当前资源池 ; S2、 选择所述当前资源池中任务权重比最小的作 业作为当前作业 ; S3、 判断所述当前作业是否是 小作业, 如果是, 则执行步骤 S4 ; 否则, 执行步骤 S5 ; S4、 从所述当前作业中选择一个本地任务, 向 选择的本地任务分配空闲资源 ; S5、 根据所述当 前资源池中的空闲资源的位置以及所述当前作业 的等待时间, 向所述当前作业分配空闲资源。 。

3、本发 明能够避免将非本地节点的空闲资源资源分配给 小作业带来的数据传输延迟和带宽消耗, 提高了 小作业的运行效率和系统的整体性能。 (51)Int.Cl. 权利要求书 3 页 说明书 7 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书7页 附图4页 (10)申请公布号 CN 104268018 A CN 104268018 A 1/3 页 2 1. 一种 Hadoop 集群中的作业调度方法, 其特征在于, 包括以下步骤 : S1、 获取 Hadoop 集群中的各个资源池的资源使用量, 根据各个资源池的资源使用量, 选择当前资源池 ; S2、。

4、 选择所述当前资源池中任务权重比最小的作业作为当前作业 ; S3、 判断所述当前作业是否是小作业, 如果是, 则执行步骤 S4 ; 否则, 执行步骤 S5 ; S4、 从所述当前作业中选择一个本地任务, 向选择的本地任务分配空闲资源 ; S5、 根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间, 向所述 当前作业分配空闲资源。 2. 如权利要求 1 所述的方法, 其特征在于, 所述根据各个资源池的资源使用量, 选择当 前资源池, 具体为 : 判断所述 Hadoop 集群中是否存在资源使用量小于预定的最小资源使用量的资源池, 如果是, 则选择所述 Hadoop 集群中资源使用率最低。

5、的资源池作为当前资源池 ; 否则, 选择 所述 Hadoop 集群中任务权重比最小的资源池作为当前资源池。 3. 如权利要求 2 所述的方法, 其特征在于, 所述选择所述 Hadoop 集群中资源使用率最 低的资源池作为当前资源池之前, 还包括 : 根据最小资源使用量和各个资源池中正在运行的任务数量, 计算所述各个资源池的资 源使用率 ; 所述选择所述 Hadoop 集群中任务权重比最小的资源池作为当前资源池之前, 还包括 : 根据各个资源池中的任务的优先级, 计算所述各个资源池的任务权重比。 4. 如权利要求 1 所述的方法, 其特征在于, 所述选择所述当前资源池中任务权重比最 小的作业作为。

6、当前作业之前, 还包括 : 获取当前资源池中的各个作业的任务权重比。 5. 如权利要求 1 所述的方法, 其特征在于, 所述步骤 S5, 具体包括 : S51、 对当前资源池中各个作业的等待时间进行初始化, 并对各个作业的等待时间进行 计时 ; S52、 判断当前资源池中是否存在空闲资源, 如果是, 则执行步骤 S53 ; 否则, 结束流程 ; S53、 判断当前资源池中的空闲资源是否为本地节点的空闲资源, 如果是, 则执行步骤 S54 ; 否则, 执行步骤 S55 ; S54、 将当前资源池中的空闲资源分配给当前作业的任务 ; S55、 对当前资源池中各个作业的等待时间进行判断, 如果等待时。

7、间小于第一预设时 长, 则执行步骤 S56 ; 如果等待时间不小于第一预设时长且小于第二预设时长, 则执行步骤 S57 ; 如果等待时间不小于第二预设时长, 则执行步骤 S54 ; S56、 将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务, 并返回步骤 S52 ; S57、 判断当前资源池中的空闲资源是否为本机架节点的空闲资源, 如果是, 则执行步 骤 S54 ; 否则, 执行步骤 S56。 6. 一种 Hadoop 集群中的作业调度器, 其特征在于, 包括 : 第一获取模块, 用于获取 Hadoop 集群中的各个资源池的资源使用量 ; 第一选择模块, 根据所述第一获取模块获取到的。

8、各个资源池的资源使用量, 选择当前 权 利 要 求 书 CN 104268018 A 2 2/3 页 3 资源池 ; 第二选择模块, 用于从所述第一选择模块选择出的所述当前资源池中, 选择任务权重 比最小的作业作为当前作业 ; 判断模块, 用于判断所述第二选择模块选择出的所述当前作业是否是小作业 ; 第三选择模块, 用于在所述判断模块判断出当前作业不是小作业时, 从所述当前作业 中选择一个本地任务, 向选择的本地任务分配空闲资源 ; 分配模块, 用于在所述判断模块判断出当前作业是小作业时, 根据所述当前资源池中 的空闲资源的位置以及所述当前作业的等待时间, 向所述当前作业分配空闲资源。 7. 。

9、如权利要求 6 所述的作业调度器, 其特征在于, 所述第一选择模块, 包括 : 第一判断子模块, 用于判断所述 Hadoop 集群中是否存在资源使用量小于预定的最小 资源使用量的资源池 ; 选择子模块, 用于在所述第一判断子模块判断出所述 Hadoop 集群中存在资源使用量 小于最小资源使用量的资源池时, 选择所述 Hadoop 集群中资源使用率最低的资源池作为 当前资源池 ; 在所述第一判断子模块判断出所述 Hadoop 集群中不存在资源使用量小于最 小资源使用量的资源池时, 选择所述 Hadoop 集群中任务权重比最小的资源池作为当前资 源池。 8. 如权利要求 7 所述的作业调度器, 其。

10、特征在于, 所述第一选择模块, 还包括 : 第一计算子模块, 用于根据最小资源使用量和各个资源池中正在运行的任务数量, 计 算所述各个资源池的资源使用率 ; 第二计算子模块, 用于根据各个资源池中的任务的优先级, 计算所述各个资源池的任 务权重比 ; 所述选择子模块, 具体用于在所述第一判断子模块判断出所述 Hadoop 集群中存在资 源使用量小于最小资源使用量的资源池时, 根据所述第一计算子模块计算得到的各个资源 池的资源使用率, 选择所述 Hadoop 集群中资源使用率最低的资源池作为当前资源池 ; 在所 述第一判断子模块判断出所述 Hadoop 集群中不存在资源使用量小于最小资源使用量的。

11、资 源池时, 根据所述第二计算子模块计算出的各个资源池的任务权重比, 选择所述 Hadoop 集 群中任务权重比最小的资源池作为当前资源池。 9. 如权利要求 6 所述的作业调度器, 其特征在于, 还包括 : 第二获取模块, 用于获取当前资源池中的各个作业的任务权重比 ; 所述第二选择模块, 具体用于根据所述第二获取模块获取到的所述当前资源池中的各 个作业的任务权重比, 从所述第一选择模块选择出的所述当前资源池中, 选择任务权重比 最小的作业作为当前作业。 10. 如权利要求 6 所述的作业调度器, 其特征在于, 所述分配模块, 包括 : 初始化子模块, 用于对当前资源池中各个作业的等待时间进。

12、行初始化 ; 计时子模块, 用于在所述初始化子模块对各个作业的等待时间进行初始化后, 对各个 作业的等待时间进行计时 ; 第二判断子模块, 用于判断当前资源池中是否存在空闲资源 ; 第三判断子模块, 用于在所述第二判断子模块判断出当前资源池中存在空闲资源, 判 断当前资源池中的空闲资源是否为本地节点的空闲资源 ; 权 利 要 求 书 CN 104268018 A 3 3/3 页 4 第四判断子模块, 用于在所述第三判断子模块判断出当前资源池中的空闲资源不是本 地节点的空闲资源时, 对当前资源池中各个作业的等待时间进行判断 ; 第五判断子模块, 用于在所述第四判断子模块判断出等待时间不小于第一预。

13、设时长且 小于第二预设时长时, 判断当前资源池中的空闲资源是否为本机架节点的空闲资源 ; 分配子模块, 用于在所述第三判断子模块判断出当前资源池中的空闲资源是本地节点 的空闲资源时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在所述第四判断子模 块判断出等待时间小于第一预设时长时, 将前资源池中的空闲资源分配给当前资源池中的 其他作业中的任务, 并触发所述第二判断子模块 ; 在所述第四判断子模块判断出等待时间 不小于第二预设时长时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在所述第五 判断子模块判断出当前资源池中的空闲资源是本机架节点的空闲资源时, 将当前资源池中 的空闲资源。

14、分配给当前作业的任务 ; 在所述第五判断子模块判断出当前资源池中的空闲资 源不是本机架节点的空闲资源时, 将前资源池中的空闲资源分配给当前资源池中的其他作 业中的任务, 并触发所述第二判断子模块。 权 利 要 求 书 CN 104268018 A 4 1/7 页 5 一种 Hadoop 集群中的作业调度方法和作业调度器 技术领域 0001 本发明涉及计算机技术领域, 具体涉及一种 Hadoop 集群中的作业调度方法和作 业调度器。 背景技术 0002 Hadoop 集群是一种具有高可靠性和良好的扩展性的分布式系统, 在数据处理领域 得到了广泛的应用。 在Hadoop集群得到应用的初期阶段, 使。

15、用FIFO(First In First Out, 先入先出 ) 调度机制分配任务, 将所有作业统一提交到一个队列中, 并按照提交的先后顺 序依次运行队列中的作业。但随着 Hadoop 用户及应用程序种类的不断增加, FIFO 调度机 制无法有效地利用集群中的资源, 也不能满足不同应用程序的服务质量要求。 0003 现有技术中, 通常使用公平调度机制分配任务, 按照资源池来组织作业, 使得每个 用户拥有独立的资源池, 并通过设置各种约束条件防止单个用户或者应用程序独占资源。 0004 然而, 当集群中出现很多小作业时, 会出现满足资源条件的节点不是本地节点的 情况, 导致整个集群的吞吐率会出现。

16、明显的下降。 发明内容 0005 本发明提供了一种 Hadoop 集群中的作业调度方法和作业调度器, 用以解决现有 技术中小作业调度影响集群的整体吞吐率的问题 0006 本发明提供了一种 Hadoop 集群中的作业调度方法, 包括以下步骤 : 0007 S1、 获取 Hadoop 集群中的各个资源池的资源使用量, 根据各个资源池的资源使用 量, 选择当前资源池 ; 0008 S2、 选择所述当前资源池中任务权重比最小的作业作为当前作业 ; 0009 S3、 判断所述当前作业是否是小作业, 如果是, 则执行步骤 S4 ; 否则, 执行步骤 S5 ; 0010 S4、 从所述当前作业中选择一个本地。

17、任务, 向选择的本地任务分配空闲资源 ; 0011 S5、 根据所述当前资源池中的空闲资源的位置以及所述当前作业的等待时间, 向 所述当前作业分配空闲资源。 0012 可选地, 所述根据各个资源池的资源使用量, 选择当前资源池, 具体为 : 0013 判断所述 Hadoop 集群中是否存在资源使用量小于预定的最小资源使用量的资源 池, 如果是, 则选择所述 Hadoop 集群中资源使用率最低的资源池作为当前资源池 ; 否则, 选 择所述 Hadoop 集群中任务权重比最小的资源池作为当前资源池。 0014 可选地, 所述选择所述 Hadoop 集群中资源使用率最低的资源池作为当前资源池 之前,。

18、 还包括 : 0015 根据最小资源使用量和各个资源池中正在运行的任务数量, 计算所述各个资源池 的资源使用率 ; 0016 所述选择所述 Hadoop 集群中任务权重比最小的资源池作为当前资源池之前, 还 包括 : 说 明 书 CN 104268018 A 5 2/7 页 6 0017 根据各个资源池中的任务的优先级, 计算所述各个资源池的任务权重比。 0018 可选地, 所述选择所述当前资源池中任务权重比最小的作业作为当前作业之前, 还包括 : 0019 获取当前资源池中的各个作业的任务权重比。 0020 可选地, 所述步骤 S5, 具体包括 : 0021 S51、 对当前资源池中各个作业。

19、的等待时间进行初始化, 并对各个作业的等待时间 进行计时 ; 0022 S52、 判断当前资源池中是否存在空闲资源, 如果是, 则执行步骤 S53 ; 否则, 结束 流程 ; 0023 S53、 判断当前资源池中的空闲资源是否为本地节点的空闲资源, 如果是, 则执行 步骤 S54 ; 否则, 执行步骤 S55 ; 0024 S54、 将当前资源池中的空闲资源分配给当前作业的任务 ; 0025 S55、 对当前资源池中各个作业的等待时间进行判断, 如果等待时间小于第一预设 时长, 则执行步骤 S56 ; 如果等待时间不小于第一预设时长且小于第二预设时长, 则执行步 骤 S57 ; 如果等待时间不。

20、小于第二预设时长, 则执行步骤 S54 ; 0026 S56、 将前资源池中的空闲资源分配给当前资源池中的其他作业中的任务, 并返回 步骤 S52 ; 0027 S57、 判断当前资源池中的空闲资源是否为本机架节点的空闲资源, 如果是, 则执 行步骤 S54 ; 否则, 执行步骤 S56。 0028 本发明还提供了一种 Hadoop 集群中的作业调度器, 包括 : 0029 第一获取模块, 用于获取 Hadoop 集群中的各个资源池的资源使用量 ; 0030 第一选择模块, 根据所述第一获取模块获取到的各个资源池的资源使用量, 选择 当前资源池 ; 0031 第二选择模块, 用于从所述第一选择。

21、模块选择出的所述当前资源池中, 选择任务 权重比最小的作业作为当前作业 ; 0032 判断模块, 用于判断所述第二选择模块选择出的所述当前作业是否是小作业 ; 0033 第三选择模块, 用于在所述判断模块判断出当前作业不是小作业时, 从所述当前 作业中选择一个本地任务, 向选择的本地任务分配空闲资源 ; 0034 分配模块, 用于在所述判断模块判断出当前作业是小作业时, 根据所述当前资源 池中的空闲资源的位置以及所述当前作业的等待时间, 向所述当前作业分配空闲资源。 0035 可选地, 所述第一选择模块, 包括 : 0036 第一判断子模块, 用于判断所述 Hadoop 集群中是否存在资源使用。

22、量小于预定的 最小资源使用量的资源池 ; 0037 选择子模块, 用于在所述第一判断子模块判断出所述 Hadoop 集群中存在资源使 用量小于最小资源使用量的资源池时, 选择所述 Hadoop 集群中资源使用率最低的资源池 作为当前资源池 ; 在所述第一判断子模块判断出所述 Hadoop 集群中不存在资源使用量小 于最小资源使用量的资源池时, 选择所述 Hadoop 集群中任务权重比最小的资源池作为当 前资源池。 0038 可选地, 所述第一选择模块, 还包括 : 说 明 书 CN 104268018 A 6 3/7 页 7 0039 第一计算子模块, 用于根据最小资源使用量和各个资源池中正在。

23、运行的任务数 量, 计算所述各个资源池的资源使用率 ; 0040 第二计算子模块, 用于根据各个资源池中的任务的优先级, 计算所述各个资源池 的任务权重比 ; 0041 所述选择子模块, 具体用于在所述第一判断子模块判断出所述 Hadoop 集群中存 在资源使用量小于最小资源使用量的资源池时, 根据所述第一计算子模块计算得到的各 个资源池的资源使用率, 选择所述 Hadoop 集群中资源使用率最低的资源池作为当前资源 池 ; 在所述第一判断子模块判断出所述 Hadoop 集群中不存在资源使用量小于最小资源使 用量的资源池时, 根据所述第二计算子模块计算出的各个资源池的任务权重比, 选择所述 H。

24、adoop 集群中任务权重比最小的资源池作为当前资源池。 0042 可选地, 所述的作业调度器, 还包括 : 0043 第二获取模块, 用于获取当前资源池中的各个作业的任务权重比 ; 0044 所述第二选择模块, 具体用于根据所述第二获取模块获取到的所述当前资源池中 的各个作业的任务权重比, 从所述第一选择模块选择出的所述当前资源池中, 选择任务权 重比最小的作业作为当前作业。 0045 可选地, 所述分配模块, 包括 : 0046 初始化子模块, 用于对当前资源池中各个作业的等待时间进行初始化 ; 0047 计时子模块, 用于在所述初始化子模块对各个作业的等待时间进行初始化后, 对 各个作业。

25、的等待时间进行计时 ; 0048 第二判断子模块, 用于判断当前资源池中是否存在空闲资源 ; 0049 第三判断子模块, 用于在所述第二判断子模块判断出当前资源池中存在空闲资 源, 判断当前资源池中的空闲资源是否为本地节点的空闲资源 ; 0050 第四判断子模块, 用于在所述第三判断子模块判断出当前资源池中的空闲资源不 是本地节点的空闲资源时, 对当前资源池中各个作业的等待时间进行判断 ; 0051 第五判断子模块, 用于在所述第四判断子模块判断出等待时间不小于第一预设时 长且小于第二预设时长时, 判断当前资源池中的空闲资源是否为本机架节点的空闲资源 ; 0052 分配子模块, 用于在所述第三。

26、判断子模块判断出当前资源池中的空闲资源是本地 节点的空闲资源时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在所述第四判断 子模块判断出等待时间小于第一预设时长时, 将前资源池中的空闲资源分配给当前资源池 中的其他作业中的任务, 并触发所述第二判断子模块 ; 在所述第四判断子模块判断出等待 时间不小于第二预设时长时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在所述 第五判断子模块判断出当前资源池中的空闲资源是本机架节点的空闲资源时, 将当前资源 池中的空闲资源分配给当前作业的任务 ; 在所述第五判断子模块判断出当前资源池中的空 闲资源不是本机架节点的空闲资源时, 将前资源池中。

27、的空闲资源分配给当前资源池中的其 他作业中的任务, 并触发所述第二判断子模块。 0053 本发明将本地节点的空闲资源资源分配给小作业, 避免将非本地节点的空闲资源 资源分配给小作业带来的数据传输延迟和带宽消耗, 缩短了小作业的执行时间, 优化了小 作业的选择策略, 提高了小作业的运行效率, 增加了 Hadoop 集群的整体吞吐率, 提高了系 统的整体性能。 说 明 书 CN 104268018 A 7 4/7 页 8 附图说明 0054 图 1 为本发明实施例中的一种 Hadoop 集群中的作业调度方法流程图 ; 0055 图 2 为本发明实施例中的一种分配空闲资源的方法流程图 ; 0056 。

28、图 3 为本发明实施例中的一种 Hadoop 集群中的作业调度器的结构示意图 ; 0057 图 4 为本发明实施例中的一种分配模块 360 的结构示意图。 具体实施方式 0058 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 0059 需要说明的是, 如果不冲突, 本发明实施例以及实施例中的各个特征可以相互结 合, 均在本发明的保护范围之内。另外, 虽然在流程图。

29、中示出了逻辑顺序, 但是在某些情况 下, 可以以不同于此处的顺序执行所示出或描述的步骤。 0060 本发明实施例中提出了一种 Hadoop 集群中的作业调度方法, 在安装 Hadoop 组件 并开启HDFS(Hadoop Distributed File System, Hadoop分布式文件系统)服务后, 使用资 源池来组织作业, 并将集群资源分配到资源池中。 每个用户拥有一个独立的资源池, 以使所 有用户都能获得等同的集群资源。 0061 在完成上述设置后, 可对Hadoop集群进行作业调度, 具体流程如图1所示, 包括以 下步骤 : 0062 步骤 101, 获取 Hadoop 集群中的。

30、各个资源池的资源使用量。 0063 步骤 102, 根据 Hadoop 集群中的各个资源池的资源使用量, 判断 Hadoop 集群中是 否存在资源使用量小于预定的最小资源使用量的资源池, 如果是, 则执行步骤 103 ; 否则, 执行步骤 105。 0064 步骤 103, 根据最小资源使用量和各个资源池中正在运行的任务数量, 计算各个资 源池的资源使用率。 0065 具体地, 可以获取 Hadoop 集群中的各个资源池中正在运行的任务数量与最小资 源使用量的比值, 将该比值作为各个资源池的资源使用率。 0066 步骤 104, 选择 Hadoop 集群中资源使用率最低的资源池作为当前资源池,。

31、 并执行 步骤 107。 0067 具体地, 可以对各个队列的资源使用率进行对比和排序, 选择资源使用率最低的 队列作为当前队列。 0068 步骤 105, 根据各个资源池中的任务的优先级, 计算各个资源池的任务权重比。 0069 具体地, 可以获取 Hadoop 集群中的各个资源池中所有正在运行的任务的优先级 之和与各个资源池中所有任务的优先级之和的比值, 将该比值作为各个资源池的任务权重 比。其中, 各个任务的优先级是预先设定的。 0070 步骤 106, 选择 Hadoop 集群中任务权重比最小的资源池作为当前资源池, 并执行 步骤 107。 说 明 书 CN 104268018 A 8。

32、 5/7 页 9 0071 步骤 107, 获取当前资源池中的各个作业的任务权重比。 0072 具体地, 可以获取当前资源池中的各个作业正在运行的任务数量与各个作业的权 重的比值, 将该比值作为各个作业的任务权重比。其中, 各个作业的权重是预先设定的。 0073 步骤 108, 选择当前资源池中任务权重比最小的作业作为当前作业。 0074 步骤 109, 判断当前作业是否是小作业, 如果是, 则执行步骤 111 ; 否则, 执行步骤 110。 0075 具体地, 可以判断当前作业对应的标志位是否为预设值, 如果是, 则确定当前作业 是小作业 ; 否则, 确定当前作业不是小作业。例如, 预设值为。

33、 “true” 。 0076 相应地, 本发明实施例中, 在提交小作业时, 设置该小作业对应的标志位为预设 值。 0077 步骤 110, 从当前作业中选择一个本地任务, 向选择的本地任务分配空闲资源。 0078 步骤 111, 根据当前资源池中的空闲资源的位置以及当前作业的等待时间, 向当前 作业分配空闲资源。 0079 具体地, 向当前作业分配空闲资源的具体流程, 如图 2 所示, 包括以下步骤 : 0080 步骤 201, 对当前资源池中各个作业的等待时间进行初始化, 并对各个作业的等待 时间进行计时。 0081 步骤 202, 判断当前资源池中是否存在空闲资源, 如果是, 则执行步骤 。

34、203 ; 否则, 结束流程。 0082 步骤 203, 判断当前资源池中的空闲资源是否为本地节点的空闲资源, 如果是, 则 执行步骤 204 ; 否则, 执行步骤 205。 0083 步骤 204, 将当前资源池中的空闲资源分配给当前作业的任务。 0084 步骤 205, 对当前资源池中各个作业的等待时间进行判断, 如果等待时间小于第一 预设时长, 则执行步骤 206 ; 如果等待时间不小于第一预设时长且小于第二预设时长, 则执 行步骤 207 ; 如果等待时间不小于第二预设时长, 则执行步骤 204。 0085 其中, 第一预设时长小于第二预设时长。 0086 步骤 206, 将前资源池中。

35、的空闲资源分配给当前资源池中的其他作业中的任务, 并 返回步骤 202。 0087 步骤 207, 判断当前资源池中的空闲资源是否为本机架节点的空闲资源, 如果是, 则执行步骤 204 ; 否则, 执行步骤 206。 0088 本发明实施例将本地节点的空闲资源资源分配给小作业, 避免将非本地节点的空 闲资源资源分配给小作业带来的数据传输延迟和带宽消耗, 缩短了小作业的执行时间, 优 化了小作业的选择策略, 提高了小作业的运行效率, 增加了 Hadoop 集群的整体吞吐率, 提 高了系统的整体性能。 0089 基于上述作业调度方法, 本发明实施例还提出了一种 Hadoop 集群中的作业调度 器,。

36、 如图 3 所示, 包括 : 0090 第一获取模块 310, 用于获取 Hadoop 集群中的各个资源池的资源使用量 ; 0091 第一选择模块 320, 根据第一获取模块 310 获取到的各个资源池的资源使用量, 选 择当前资源池 ; 0092 第二选择模块 330, 用于从第一选择模块 320 选择出的所述当前资源池中, 选择任 说 明 书 CN 104268018 A 9 6/7 页 10 务权重比最小的作业作为当前作业 ; 0093 判断模块 340, 用于判断第二选择模块 330 选择出的所述当前作业是否是小作业 ; 0094 第三选择模块 350, 用于在判断模块 340 判断出。

37、当前作业不是小作业时, 从所述当 前作业中选择一个本地任务, 向选择的本地任务分配空闲资源 ; 0095 分配模块 360, 用于在判断模块 340 判断出当前作业是小作业时, 根据所述当前资 源池中的空闲资源的位置以及所述当前作业的等待时间, 向所述当前作业分配空闲资源。 0096 具体地, 上述第一选择模块 320, 包括 : 0097 第一判断子模块 321, 用于判断所述 Hadoop 集群中是否存在资源使用量小于预定 的最小资源使用量的资源池 ; 0098 选择子模块 322, 用于在第一判断子模块 321 判断出所述 Hadoop 集群中存在资源 使用量小于最小资源使用量的资源池时。

38、, 选择所述 Hadoop 集群中资源使用率最低的资源 池作为当前资源池 ; 在第一判断子模块321判断出所述Hadoop集群中不存在资源使用量小 于最小资源使用量的资源池时, 选择所述 Hadoop 集群中任务权重比最小的资源池作为当 前资源池。 0099 进一步, 上述第一选择模块 320, 还包括 : 0100 第一计算子模块 323, 用于根据最小资源使用量和各个资源池中正在运行的任务 数量, 计算各个资源池的资源使用率 ; 0101 具体地, 第一计算子模块 323, 具体用于获取 Hadoop 集群中的各个资源池中正在 运行的任务数量与最小资源使用量的比值, 将该比值作为各个资源池。

39、的资源使用率。 0102 第二计算子模块 324, 用于根据各个资源池中的任务的优先级, 计算各个资源池的 任务权重比 ; 0103 具体地, 第二计算子模块 324, 具体用于获取 Hadoop 集群中的各个资源池中所有 正在运行的任务的优先级之和与各个资源池中所有任务的优先级之和的比值, 将该比值作 为各个资源池的任务权重比。 0104 相应地, 上述选择子模块322, 具体用于在第一判断子模块321判断出所述Hadoop 集群中存在资源使用量小于最小资源使用量的资源池时, 根据第一计算子模块 323 计算得 到的各个资源池的资源使用率, 选择所述 Hadoop 集群中资源使用率最低的资源。

40、池作为当 前资源池 ; 在第一判断子模块321判断出所述Hadoop集群中不存在资源使用量小于最小资 源使用量的资源池时, 根据第二计算子模块 324 计算出的各个资源池的任务权重比, 选择 所述 Hadoop 集群中任务权重比最小的资源池作为当前资源池。 0105 进一步地, 上述作业调度器, 还包括 : 0106 第二获取模块 370, 用于获取当前资源池中的各个作业的任务权重比 ; 0107 相应地, 上述第二选择模块 330, 具体用于根据第二获取模块 370 获取到的所述当 前资源池中的各个作业的任务权重比, 从第一选择模块 320 选择出的所述当前资源池中, 选择任务权重比最小的作。

41、业作为当前作业。 0108 进一步地, 上述分配模块 360, 如图 4 所示, 包括 : 0109 初始化子模块 361, 用于对当前资源池中各个作业的等待时间进行初始化 ; 0110 计时子模块 362, 用于在初始化子模块 361 对各个作业的等待时间进行初始化后, 对各个作业的等待时间进行计时 ; 说 明 书 CN 104268018 A 10 7/7 页 11 0111 第二判断子模块 363, 用于判断当前资源池中是否存在空闲资源 ; 0112 第三判断子模块 364, 用于在第二判断子模块 363 判断出当前资源池中存在空闲 资源, 判断当前资源池中的空闲资源是否为本地节点的空闲。

42、资源 ; 0113 第四判断子模块 365, 用于在第三判断子模块 364 判断出当前资源池中的空闲资 源不是本地节点的空闲资源时, 对计时子模块 362 计时得到的当前资源池中各个作业的等 待时间进行判断 ; 0114 第五判断子模块 366, 用于在第四判断子模块 365 判断出等待时间不小于第一预 设时长且小于第二预设时长时, 判断当前资源池中的空闲资源是否为本机架节点的空闲资 源 ; 0115 分配子模块 367, 用于在第三判断子模块 364 判断出当前资源池中的空闲资源是 本地节点的空闲资源时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在第四判断 子模块 365 判断出等。

43、待时间小于第一预设时长时, 将前资源池中的空闲资源分配给当前资 源池中的其他作业中的任务, 并触发第二判断子模块 363 ; 在第四判断子模块 365 判断出等 待时间不小于第二预设时长时, 将当前资源池中的空闲资源分配给当前作业的任务 ; 在第 五判断子模块 366 判断出当前资源池中的空闲资源是本机架节点的空闲资源时, 将当前资 源池中的空闲资源分配给当前作业的任务 ; 在第五判断子模块 366 判断出当前资源池中的 空闲资源不是本机架节点的空闲资源时, 将前资源池中的空闲资源分配给当前资源池中的 其他作业中的任务, 并触发第二判断子模块 363。 0116 本发明实施例将本地节点的空闲资。

44、源资源分配给小作业, 避免将非本地节点的空 闲资源资源分配给小作业带来的数据传输延迟和带宽消耗, 缩短了小作业的执行时间, 优 化了小作业的选择策略, 提高了小作业的运行效率, 增加了 Hadoop 集群的整体吞吐率, 提 高了系统的整体性能。 0117 结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、 处理器执行的 软件模块, 或者二者的结合来实施。 软件模块可以置于随机存储器(RAM)、 内存、 只读存储器 (ROM)、 电可编程 ROM、 电可擦除可编程 ROM、 寄存器、 硬盘、 可移动磁盘、 CD-ROM、 或技术领域 内所公知的任意其它形式的存储介质中。 0118 以上所。

45、述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于此, 任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到变化或替换, 都应涵 盖在本发明的保护范围之内。 因此, 本发明的保护范围应所述以权利要求的保护范围为准。 说 明 书 CN 104268018 A 11 1/4 页 12 图 1 说 明 书 附 图 CN 104268018 A 12 2/4 页 13 图 2 说 明 书 附 图 CN 104268018 A 13 3/4 页 14 图 3 说 明 书 附 图 CN 104268018 A 14 4/4 页 15 图 4 说 明 书 附 图 CN 104268018 A 15 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1