一种数据感知的任务调度方法与流程

文档序号:22626646发布日期:2020-10-23 19:35阅读:175来源:国知局
一种数据感知的任务调度方法与流程

本发明属于数据中心技术领域,具体涉及一种数据感知的任务调度方法。



背景技术:

hadoop是一个能够对海量数据进行分布式处理的软件框架。其中的核心组件并行编程模型mapreduce为大数据处理提供并行处理能力。mapreduce作业执行过程的reduce阶段需要复制map阶段产生的中间数据作为输入并计算产生最终的结果。针对现有hadoop平台默认reduce调度策略的不足,本发明提出了调度reduce任务的优化策略。

hadoop平台中的调度过程是一个三级调度模型,已有的fifo调度算法、capacity调度算法和fair调度算法的区别主要在于队列的选择和作业的选择这两个层面上,而在任务的选择这一调度层面上三种调度算法的策略是相同的,即从一个特定作业中选择一个map任务或者reduce任务调度到任务调度器节点上去执行时所考虑的因素和所做的权衡都是相同的。现有的有关reduce任务调度策略较少且简单,目前的任务调度策略是当一个任务调度器节点上有空闲的reduce目标节点时,节点请求reduce任务,作业调度器会尽快从作业队列中选择第一个满足条件的作业的任务分配给该节点。

hadoop平台上已有的三种调度算法对于运行reduce任务的节点并没有做区分,也即是将合适的reduce任务在适当的时间调度到恰好申请reduce任务的节点上去执行,而不能保证该节点是执行这个任务最合适的节点。调度的节点不是执行该任务最优的节点可能会导致map产生的中间数据需要经过更多的跳数进行转发,数据在网络上传输的链路长度更长,对带宽的消耗也越多,从而导致单个作业的执行时间延长。本发明通过选择最优的节点执行reduce任务,使传输中间数据经过的链路长度最短,达到提高任务执行效率的目的。



技术实现要素:

本发明公开的数据感知的任务调度方法,通过嵌入采用map任务调度策略的形式,实现了对作业调度算法的改进,从而解决了现有reduce阶段任务调度策略效率较低的问题,进一步缩短mapreduce作业的执行时间。

本方案术语释义:

hadoop:设计用来部署在低廉的(low-cost)硬件上,进行高速运算和可靠存储的分布式系统框架。

任务调度:指根据一定的约束规定,将待计算资源分配给符合条件的任务使用。

mapreduce:一种面向大规模数据处理的并行计算模型和方法。计算模型分为map和reduce两个阶。map将键值对映射成新的键值对,指定并发的reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

本发明公开的数据感知的任务调度方法,包括如下步骤:

步骤1基于分布式系统基础架构建立n-1级调度模型并确定对应的调度策略,针对第n级调度模型嵌入执行mapreduce,为map任务调度策略选中特定任务队列并选则的特定作业,启动map任务并执行,其中n为大于1的正整数;

步骤2获得执行map任务的任务调度器节点的信息,任务调度器节点的信息至少包括包括节点的编号以及节点在拓扑图中的位置层次;

步骤3判断作业的map任务是否分布在集群拓扑图中的同一层次上,若是,则从这一层的节点中选择出最优的节点,选择时优先选择执行map任务的节点,若执行map任务的节点上没有空闲的资源,则选择这一层上有空闲资源的其他节点并输出,跳转到步骤6执行;若否,则进行下一步的判断;

步骤4若作业的map任务在根节点的两棵子树中分布不均衡,则剪掉执行map任务数量少的分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤5若作业的map任务在根节点的两棵子树中分布均衡,则剪掉子树深度较大的一个分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤6准备调度作业的reduce任务到输出的最优节点上执行;

步骤7reduce任务获得reduce资源队列执行直至运行结束。

本发明公开的数据感知的任务调度方法的一种改进,步骤1中分布式系统基础架构为hadoop。

本发明公开的数据感知的任务调度方法的一种改进,步骤1中n=3,在分布式系统基础架构为hadoop时,使用hadoop默认的公平调度器作为第一级调度策略、第二级调度策略并嵌入map任务调度策略为第三级,map任务调度策略选中特定队列中的特定作业,启动map任务并执行。

本发明公开的数据感知的任务调度方法的一种改进,步骤1执行时,在同一阶段下map任务调度策略在特定任务队列中选择的特定任务数量为1。

本发明公开的数据感知的任务调度方法的一种改进,同一阶段为同一时钟节点或同一次算法执行过程(这里的同一次算法执行过程可以指执行完整的本方法的步骤1-步骤7直至运行结束的一个循环)。

本发明公开的数据感知的任务调度方法的一种改进,步骤3中判断作业的map任务是否分布在集群拓扑图中的同一层次上限定为非终端节点的左子树、右子树的深度差的绝对值不超过1。

本发明公开的数据感知的任务调度方法的一种改进,步骤3中判断作业的map任务是否分布在集群拓扑图中的同一层次上包括如下情形两棵子树的深度相同或者其中一棵子树的深度比另一棵子树的深度多1。

本发明公开的数据感知的任务调度方法的一种改进,步骤2中执行map任务的任务调度器节点为tasktracker节点,并构成tasktracker节点集合。

本发明公开的数据感知的任务调度方法的一种改进,tasktracker节点集合中每个tasktracker节点均含有空闲的reduceslot资源。

本发明提出的优化的任务调度策略属于调度模型的第三个层次,是一个通用的优化调度策略,可以嵌入其他的作业调度算法中去。本发明提出的任务调度策略解决了现有reduce阶段任务调度策略效率较低的问题,进一步缩短mapreduce作业的执行时间。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明申请方案的一种实施例的任务调度流程图。

具体实施方式

以下将结合各实施方式对本发明进行详细描述。但该等实施方式并不限制本发明,本领域的普通技术人员根据该等实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

本发明公开的数据感知的任务调度方法在实施过程中,其可以包括如下步骤:

步骤1通过选择合适的分布式系统基础架构,并以此为基础建立n-1级调度模型并确定各级调度模型对应的调度策略,在此基础上针对第n级调度模型嵌入执行mapreduce,以此构建一个总级数为n的调度模型,这里的n为至少为2的正整数,在第n级为map任务调度策略选中特定任务队列并选则的特定作业,启动map任务并执行;

步骤2获得执行map任务的任务调度器节点的信息,任务调度器节点的信息至少包括包括节点的编号以及节点在拓扑图中的位置层次;这里可以通过这些信息来依据预设的优先级判定条件可以来筛选节点或者判定节点的优先级,如处于拓扑图上的层次等,用于在后续执行中参与map任务与节点之间的优化筛选。优选的,本步骤中执行map任务的任务调度器节点为tasktracker节点,并构成tasktracker节点集合。更进一步优选的,tasktracker节点集合中每个tasktracker节点均含有空闲的reduceslot资源。这基本就是一个最优的理想情形,因为只有一个task在获取到一个slot后才有机会运行,而hadoop调度器的作用就是将各个tasktracker上的空闲slot分配给task使用。这种情况下,本方案的调度方法的策略效率才最高。

步骤3判断作业的map任务是否分布在集群拓扑图中的同一层次上,若是,则从这一层的节点中选择出最优的节点,由此实现了map任务与节点策略的高效优化,从而解决调度策略效率较低的问题,在执行时,优先选择执行map任务的节点,若执行map任务的节点上没有空闲的资源,则选择这一层上有空闲资源的其他节点并输出,跳转到步骤6执行;若否,则进行下一步的判断;

步骤4若作业的map任务在根节点的两棵子树中分布不均衡,则剪掉执行map任务数量少的分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤5若作业的map任务在根节点的两棵子树中分布均衡,则剪掉子树深度较大的一个分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤6准备调度作业的reduce任务到输出的最优节点上执行;

步骤7reduce任务获得reduce资源队列执行直至运行结束,则继续进行下一任务。

在上述方案中,为了获得较高的执行效率,步骤1执行时,在同一阶段下map任务调度策略在特定任务队列中选择的特定任务数量为1,由此满足在任务调度中每个任务都能获得最优的调度方案。优选的,同一阶段为同一时钟节点或同一次算法执行过程(这里的同一次算法执行过程可以指执行完整的本方法的步骤1-步骤7直至运行结束的一个循环)。

在上述方案中,步骤3中判断作业的map任务是否分布在集群拓扑图中的同一层次上限定为非终端节点(如路由器等)的左子树、右子树的深度差的绝对值不超过1,这就使得在执行中map任务的在集群拓扑图上的深度接近。优选的,步骤3中判断作业的map任务是否分布在集群拓扑图中的同一层次上包括如下情形两棵子树的深度相同或者其中一棵子树的深度比另一棵子树的深度多1。

我们知道,提交到hadoop平台上的作业其reduce任务的调度和map任务的调度是两个分离的部分,互不影响,因此我们可以认为在调度reduce任务之前map任务已经按照相应的调度策略调度好了。并且可以从系统中获得map任务的分布信息以作为调度reduce任务时的已知条件,而集群的拓扑结构可以从集群的配置文件中获得。

本发明的任务调度策略流程如下,如图1所示:

步骤1使用hadoop默认的公平调度器作为第一、第二级调度策略以及map任务调度策略选中特定队列中的特定作业,启动map任务并执行;

步骤2获得执行map任务的任务调度器节点的信息,主要包括节点的编号以及节点在拓扑图中的位置层次等信息,利用这些信息进行下一步的分析;

步骤3判断作业的map任务是否分布在集群拓扑图中的同一层次上,若是,则从这一层的节点中选择出最优的节点,选择时优先选择执行map任务的节点,若执行map任务的节点上没有空闲的资源,则选择这一层上有空闲资源的其他节点并输出,跳转到步骤6执行;若否,则进行下一步的判断;

步骤4若作业的map任务在根节点的两棵子树中分布不均衡,则剪掉执行map任务数量少的分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤5若作业的map任务在根节点的两棵子树中分布均衡,则剪掉子树深度较大的一个分枝,以剩下的分枝的祖先节点为新的根节点,跳转到步骤3继续执行;

步骤6准备调度作业的reduce任务到输出的最优节点上执行;

步骤7reduce任务获得reduce资源队列执行直至运行结束。

本发明的任务调度策略的约束条件有:

1.集群中的拓扑结构已知,且有这样的特点:非终端节点即路由器节点的左右子树的深度差的绝对值不超过1,即两棵子树的深度相同或者其中一棵子树的深度比另一棵子树的深度多1,计算节点处在拓扑图中的叶子节点的位置。若一个非终端节点的路由器同时以一个路由器节点和若干计算节点为孩子节点,则所有的计算节点统一担任根节点的一个计算分枝,也即是使得非终端节点在逻辑上仍然只有左右两棵子树。

2.被选择的tasktracker节点集合中每一个节点均含有空闲的reduceslot资源。

3.每次算法的执行只调度作业的一个reduce任务。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。

此外,应当理解,虽然本说明书按照实施例加以描述,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1