首页> 中国专利> 一种Hadoop集群中的作业调度方法和作业调度器

一种Hadoop集群中的作业调度方法和作业调度器

摘要

本发明公开了一种Hadoop集群中的作业调度方法和作业调度器,根据作业的优先级、提交时间和任务运行数对Hadoop集群中的作业进行评价,并根据评价结果自适应地选择作业,缩短了优先级较高的小作业的等待时间,保证了对优先级高的小作业的公平性,同时缩短了多作业的整体运行时间,避免了局部最优的出现,提高了作业调度的适应性和调度合理性,改善了Hadoop集群处理任务的效率和整体性能。

著录项

  • 公开/公告号CN104239154A

    专利类型发明专利

  • 公开/公告日2014-12-24

    原文格式PDF

  • 申请/专利权人 浪潮(北京)电子信息产业有限公司;

    申请/专利号CN201410528405.2

  • 发明设计人 宗栋瑞;郭美思;吴楠;

    申请日2014-10-09

  • 分类号G06F9/50(20060101);

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

  • 代理人王丹;李丹

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

  • 入库时间 2023-12-17 04:44:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-09-14

    专利权的转移 IPC(主分类):G06F9/50 登记生效日:20180827 变更前: 变更后: 申请日:20141009

    专利申请权、专利权的转移

  • 2017-08-11

    授权

    授权

  • 2015-01-14

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20141009

    实质审查的生效

  • 2014-12-24

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种Hadoop集群中的作业调度 方法和作业调度器。

背景技术

Hadoop集群是一种具有高可靠性和良好的扩展性的分布式系统,在数据 处理领域得到了广泛的应用。在Hadoop集群得到应用的初期阶段,使用FIFO (First In First Out,先入先出)调度机制分配任务,将所有作业统一提交到 一个队列中,并按照提交的先后顺序依次运行队列中的作业。但随着Hadoop 用户及应用程序种类的不断增加,FIFO调度机制无法有效地利用集群中的资 源,也不能满足不同应用程序的服务质量要求。

现有技术中,通常使用公平调度机制和计算能力调度机制分配任务,按 照应用需求对用户或应用程序分组,对不同的分组分配不同的资源量,同时 通过添加各种约束条件防止单个用户或者应用程序独占资源。

然而,公平调度机制会导致负载不均衡,影响系统的响应时间,同时, 配置文件的配置影响整个系统的性能。而在计算能力调度机制中,无法自动 进行队列设置和队列分组,并且存在局部最优现象,从而影响系统的整体性 能。

发明内容

本发明提供了一种Hadoop集群中的作业调度方法和作业调度器,用以 解决现有作业调度机制中的负载不均衡和系统的整体性能受到影响的缺陷。

本发明提供了一种Hadoop集群中的作业调度方法,包括以下步骤:

S1、获取所述Hadoop集群中的各个队列占用的资源量,根据各个队列 占用的资源量,计算各个队列的资源使用率;

S2、根据各个队列的资源使用率,选择资源使用率最低的队列作为当前 队列;

S3、获取当前队列中的各个作业的优先级、提交时间、未完成任务数和 总任务数,根据各个作业的优先级、提交时间、未完成任务数和总任务数, 计算当前队列中的各个作业的评价值;

S4、根据当前队列中的各个作业的评价值,从当前队列中选择当前作业;

S5、从当前作业中选择任务,并向选择的任务分配资源。

可选地,所述根据各个作业的优先级、提交时间、未完成任务数和总任 务数,计算当前队列中的各个作业的评价值,具体为:

计算当前队列中的各个作业的优先级与当前队列中的所有作业的优先级 之和的比值,将该比值作为各个作业的优先级因子;计算当前时间与当前队 列中的各个作业的提交时间的差值,将该差值与当前时间的比值作为各个作 业的时间因子;计算当前队列中的各个作业的未完成任务数和总任务数的比 值,将该比值作为各个作业的任务量因子,并根据各个作业的优先级因子、 时间因子和任务量因子,计算各个作业的评价值。

可选地,所述根据各个作业的优先级、提交时间、未完成任务数和总任 务数,计算当前队列中的各个作业的评价值,具体为:

使用以下公式计算各个作业的评价值:

Worth[i]=p[i]Σj=1np[j]*nowtime-submittimenowtime*untaskstotaltasks

其中,Worth[i]为作业i的评价值,p[i]为作业i的优先级的分值,为 当前队列中的所有作业的优先级的分值之和,nowtime为当前时间,submittime 为作业i的提交时间,untasks为作业i的未完成任务数,totaltasks为作业i的 总任务数。

可选地,所述步骤S4之后,还包括:

判断当前作业所在的用户占用的资源是否达到资源使用上限;

所述步骤S5,具体为:

如果当前作业所在的用户占用的资源未达到资源使用上限,从当前作业 中选择任务,并向选择的任务分配资源。

可选地,所述步骤S4之后,还包括:

所述步骤S4之后,还包括:

判断TaskTracker节点的剩余资源是否足以运行当前作业中的一个任务;

所述步骤S5,具体为:

如果所述TaskTracker节点的剩余资源足以运行当前作业中的一个任务, 从当前作业中选择任务,并向选择的任务分配资源。

本发明还提供了一种Hadoop集群中的作业调度器,包括:

第一获取模块,用于获取所述Hadoop集群中的各个队列占用的资源量;

第一计算模块,用于根据所述第一获取模块获取到的各个队列占用的资 源量,计算各个队列的资源使用率;

第一选择模块,用于根据所述第一计算模块计算得到的各个队列的资源 使用率,选择资源使用率最低的队列作为当前队列;

第二获取模块,用于获取所述第一选择模块选择的当前队列中的各个作 业的优先级、提交时间、未完成任务数和总任务数;

第二计算模块,用于根据所述第二获取模块获取到的各个作业的优先级、 提交时间、未完成任务数和总任务数,计算当前队列中的各个作业的评价值;

第二选择模块,用于根据所述第二计算模块计算得到的当前队列中的各 个作业的评价值,从当前队列中选择当前作业;

分配模块,用于从所述第二选择模块选择的当前作业中选择任务,并向 选择的任务分配资源。

可选地,所述第二计算模块,具体用于计算当前队列中的各个作业的优 先级与当前队列中的所有作业的优先级之和的比值,将该比值作为各个作业 的优先级因子;计算当前时间与当前队列中的各个作业的提交时间的差值, 将该差值与当前时间的比值作为各个作业的时间因子;计算当前队列中的各 个作业的未完成任务数和总任务数的比值,将该比值作为各个作业的任务量 因子,并根据各个作业的优先级因子、时间因子和任务量因子,计算各个作 业的评价值。

可选地,所述第二计算模块,具体用于使用以下公式计算各个作业的评 价值:

Worth[i]=p[i]Σj=1np[j]*nowtime-submittimenowtime*untaskstotaltasks

其中,Worth[i]为作业i的评价值,p[i]为作业i的优先级的分值,为 当前队列中的所有作业的优先级的分值之和,nowtime为当前时间,submittime 为作业i的提交时间,untasks为作业i的未完成任务数,totaltasks为作业i的 总任务数。

可选地,所述的作业调度器,还包括:

第一判断模块,用于判断所述第二选择模块选择的当前作业所在的用户 占用的资源是否达到资源使用上限;

所述分配模块,具体用于当所述第一判断模块判断出当前作业所在的用 户占用的资源未达到资源使用上限时,从当前作业中选择任务,并向选择的 任务分配资源。

可选地,所述的作业调度器,还包括:

第二判断模块,用于判断TaskTracker节点的剩余资源是否足以运行当 前作业中的一个任务;

所述分配模块,具体用于当所述第二判断模块判断出所述TaskTracker 节点的剩余资源足以运行当前作业中的一个任务,从当前作业中选择任务, 并向选择的任务分配资源。

本发明根据作业的优先级、提交时间和任务运行数对Hadoop集群中的 作业进行评价,并根据评价结果自适应地选择作业,缩短了优先级较高的小 作业的等待时间,保证了对优先级高的小作业的公平性,同时缩短了多作业 的整体运行时间,避免了局部最优的出现,提高了作业调度的适应性和调度 合理性,改善了Hadoop集群处理任务的效率和整体性能。

附图说明

图1为本发明实施例中的一种Hadoop集群中的作业调度方法流程图;

图2为本发明实施例中的一种Hadoop集群中的作业调度器的结构示意 图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可 以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻 辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的 步骤。

本发明实施例中提出了一种Hadoop集群中的作业调度方法,在安装 Hadoop组件并开启HDFS(Hadoop Distributed File System,Hadoop分布式 文件系统)服务后,配置调度文件中的参数,并构建队列数据结构。

其中,队列数据结构中的元素可以包括作业的编号、优先级、提交时间、 任务总数、未完成任务数和评价值。调度文件中的参数可以包括优先级标识、 Hadoop集群中的队列、用户和作业的资源使用上限等参数。

相应地,配置调度文件中的参数,包括:设置调度文件中的队列、用户 和作业的资源使用上限等参数,将优先级标识设置为true,表示在作业调度 方法中支持作业的优先级。

在完成上述设置后,可对Hadoop集群进行作业调度,具体流程如图1 所示,包括以下步骤:

步骤101,获取Hadoop集群中的各个队列占用的资源量,根据各个队列 占用的资源量,计算各个队列的资源使用率。

具体地,可以从队列数据结构中获取各个队列占用的资源量,并计算各 个队列占用的资源量与总资源量的比值,将计算得到的比值作为各个队列的 资源使用率。

步骤102,根据各个队列的资源使用率,选择资源使用率最低的队列作 为当前队列。

具体地,可以对各个队列的资源使用率进行对比和排序,选择资源使用 率最低的队列作为当前队列。

步骤103,获取当前队列中的各个作业的优先级、提交时间、未完成任 务数和总任务数,根据各个作业的优先级、提交时间、未完成任务数和总任 务数,计算当前队列中的各个作业的评价值。

具体地,可以计算当前队列中的各个作业的优先级与当前队列中的所有 作业的优先级之和的比值,将该比值作为各个作业的优先级因子;计算当前 时间与当前队列中的各个作业的提交时间的差值,将该差值与当前时间的比 值作为各个作业的时间因子;计算当前队列中的各个作业的未完成任务数和 总任务数的比值,将该比值作为各个作业的任务量因子,并根据各个作业的 优先级因子、时间因子和任务量因子,计算各个作业的评价值。

本实施例中,可使用公式1计算各个作业的评价值:

公式1:Worth[i]=p[i]Σj=1np[j]*nowtime-submittimenowtime*untaskstotaltasks

其中,Worth[i]为作业i的评价值,p[i]为作业i的优先级的分值,为 当前队列中的所有作业的优先级的分值之和,nowtime为当前时间,submittime 为作业i的提交时间,untasks为作业i的未完成任务数,totaltasks为作业i的 总任务数。作业的优先级可分为低优先级、正常优先级、较高优先级和非常 高优先级,对应分值为1、2、3和4。

步骤104,根据当前队列中的各个作业的评价值,从当前队列中选择当 前作业。

具体地,可以根据当前队列中的各个作业的评价值,对当前队列中的各 个作业进行排序,选择评价值最高或最低的作业作为当前作业。

本实施例中,当使用公式1计算各个作业的评价值时,选择评价值最高 的作业作为当前作业。

步骤105,判断当前作业所在的用户占用的资源是否达到资源使用上限, 如果是,则执行步骤108;否则,执行步骤106。

步骤106,判断TaskTracker节点的剩余资源是否足以运行当前作业中的 一个任务,如果是,则执行步骤107;否则,执行步骤108。

步骤107,从当前作业中选择任务,并向选择的任务分配资源。

步骤108,判断当前队列中是否存在未被选择过的作业,如果是,则执 行步骤109;否则,执行步骤110。

步骤109,根据当前队列中未被选择过的作业的评价值,从当前队列中 选择一个未被选择过的作业作为更新后的当前作业,并执行步骤105。

具体地,可以根据当前队列中未被选择过的作业的评价值,对当前队列 中未被选择过的作业进行排序,选择评价值最高或最低的作业作为当前作业。

本实施例中,当使用公式1计算各个作业的评价值时,选择评价值最高 的作业作为当前作业。

步骤110,判断Hadoop集群中是否存在未被选择过的队列,如果是,则 执行步骤111;否则,结束流程。

步骤111,根据Hadoop集群中未被选择过的队列的资源使用率,从未被 选择过的队列中选择资源使用率最低的队列作为更新后的当前队列,并执行 步骤103。

具体地,可以对Hadoop集群中未被选择过的队列的资源使用率进行对 比和排序,从未被选择过的队列中选择资源使用率最低的队列作为更新后的 当前队列。

本发明实施例根据作业的优先级、提交时间和任务运行数对Hadoop集 群中的作业进行评价,并根据评价结果自适应地选择作业,缩短了优先级较 高的小作业的等待时间,保证了对优先级高的小作业的公平性,同时缩短了 多作业的整体运行时间,避免了局部最优的出现,提高了作业调度的适应性 和调度合理性,改善了Hadoop集群处理任务的效率和整体性能。

基于上述作业调度方法,本发明实施例还提出了一种Hadoop集群中的 作业调度器,如图2所示,包括:

第一获取模块201,用于获取所述Hadoop集群中的各个队列占用的资源 量;

第一计算模块202,用于根据第一获取模块201获取到的各个队列占用 的资源量,计算各个队列的资源使用率;

第一选择模块203,用于根据第一计算模块202计算得到的各个队列的 资源使用率,选择资源使用率最低的队列作为当前队列;

第二获取模块204,用于获取第一选择模块203选择的当前队列中的各 个作业的优先级、提交时间、未完成任务数和总任务数;

第二计算模块205,用于根据第二获取模块204获取到的各个作业的优 先级、提交时间、未完成任务数和总任务数,计算当前队列中的各个作业的 评价值;

具体地,上述第二计算模块205,具体用于计算当前队列中的各个作业 的优先级与当前队列中的所有作业的优先级之和的比值,将该比值作为各个 作业的优先级因子;计算当前时间与当前队列中的各个作业的提交时间的差 值,将该差值与当前时间的比值作为各个作业的时间因子;计算当前队列中 的各个作业的未完成任务数和总任务数的比值,将该比值作为各个作业的任 务量因子,并根据各个作业的优先级因子、时间因子和任务量因子,计算各 个作业的评价值。

本实施例中,上述第二计算模块205,具体用于使用以下公式计算各个 作业的评价值:

Worth[i]=p[i]Σj=1np[j]*nowtime-submittimenowtime*untaskstotaltasks

其中,Worth[i]为作业i的评价值,p[i]为作业i的优先级的分值,为 当前队列中的所有作业的优先级的分值之和,nowtime为当前时间,submittime 为作业i的提交时间,untasks为作业i的未完成任务数,totaltasks为作业i的 总任务数。

第二选择模块206,用于根据第二计算模块205计算得到的当前队列中 的各个作业的评价值,从当前队列中选择当前作业;

分配模块207,用于从第二选择模块206选择的当前作业中选择任务, 并向选择的任务分配资源。

进一步地,上述作业调度器,还包括:

第一判断模块208,用于判断第二选择模块206选择的当前作业所在的 用户占用的资源是否达到资源使用上限;

相应地,上述分配模块207,具体用于当第一判断模块208判断出当前 作业所在的用户占用的资源未达到资源使用上限时,从当前作业中选择任务, 并向选择的任务分配资源。

进一步地,上述作业调度器,还包括:

第二判断模块209,用于判断TaskTracker节点的剩余资源是否足以运行 第二选择模块206选择的当前作业中的一个任务;

相应地,上述分配模块207,具体用于当第二判断模块209判断出所述 TaskTracker节点的剩余资源足以运行当前作业中的一个任务,从当前作业中 选择任务,并向选择的任务分配资源。

本发明实施例根据作业的优先级、提交时间和任务运行数对Hadoop集 群中的作业进行评价,并根据评价结果自适应地选择作业,缩短了优先级较 高的小作业的等待时间,保证了对优先级高的小作业的公平性,同时缩短了 多作业的整体运行时间,避免了局部最优的出现,提高了作业调度的适应性 和调度合理性,改善了Hadoop集群处理任务的效率和整体性能。

结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理 器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器 (RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程 ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意 其它形式的存储介质中。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限 于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应所述以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号