一种面向Map/Reduce型海量数据处理平台的作业调度方法与流程

文档序号:14302777阅读:来源:国知局
一种面向Map/Reduce型海量数据处理平台的作业调度方法与流程

技术特征:

1.一种面向Map/Reduce型海量数据处理平台的作业调度方法,包括:抢占资源、作业调度模块、应用管理模块、任务执行模块、节点管理模块、任务挂起与恢复方法、面向抢占资源的作业调度方法,其特征在于包括如下步骤:

所述的抢占资源是当Reduce任务等待获取Map任务的输出数据时,该Reduce任务所释放的计算资源;

所述的作业调度模块,对Map/Reduce作业所包含的Map任务和Reduce任务进行任务挂起与恢复决策;以任务为单位进行计算资源分配,并将挂起的Reduce任务所释放的资源分配给待调度的Map任务;

所述的作业调度模块,保存可用抢占资源信息表、抢占资源使用信息表和待调度任务信息表,可用抢占资源信息表用于记录平台当前可以使用的抢占资源,格式如下:

资源号 集群节点号 可使用资源量 挂起Reduce任务号

其中,集群节点号是抢占资源所在集群节点的编号,可使用资源量是抢占资源所包含的可以使用的计算资源的数量,挂起Reduce任务号是释放该抢占资源的Reduce任务编号;

抢占资源使用信息表用于记录平台当前抢占资源的使用情况,格式如下:

资源号 任务号 资源分配量

其中,任务号是使用该抢占资源的任务编号,资源分配量是任务实际占用该抢占资源所包含资源的数量,资源分配量不大于该抢占资源的当前可使用资源量;

待调度任务信息表用于记录平台当前需要分配计算资源的Map任务和Reduce任务,格式如下:

作业号 任务号 任务类型 资源需求量 到达时间

其中,任务号和作业号分别表示需要分配计算资源的任务编号和其所属作业的编号,任务类型包括Map任务和Reduce任务,资源需求量表示任务运行所需要的计算资源数量,到达时间表示该任务所属作业到达Map/Reduce平台的时间;

所述的应用管理模块,对Map/Reduce作业从提交到结束的整个生命周期进行管理,跟踪记录Map/Reduce作业所包含的Map任务及Reduce任务的状态,包括待调度状态、运行状态、挂起状态和结束状态;

所述的应用管理模块保存任务状态信息表,用于记录当前平台中作业的状态及作业运行相关信息,格式如下:

其中,任务号和作业号分别表示任务及其所属作业的编号,任务类型包括Map任务和Reduce任务,集群节点号表示该任务运行所在的集群节点编号,执行代码路径表示任务需要运行的代码的存储路径,处理数据文件表示任务需要处理数据所在文件的存储路径,数据起始偏移量和数据结束偏移量分别表示需要处理数据在文件中的起始和结束偏移量;

所述的任务执行模块,可对其执行的Reduce任务执行挂起操作,针对挂起的Reduce任务记录其还未拷贝其中间结果数据以及中间结果数据的存储路径信息;

所述的节点管理模块,可对所在节点中运行的Map任务和Reduce任务进行监控,触发Reduce任务挂起和释放操作;

所述的任务挂起与恢复方法,包括如下步骤:

步骤1.1:作业调度模块周期性地执行步骤1.2到步骤1.7;

步骤1.2:作业调度模块从应用管理模块获得所有处于运行状态、挂起状态和结束状态的Map和Reduce任务信息,包括任务的任务号、任务所属作业的作业号、任务状态、任务状态记录时间;

步骤1.3:作业调度模块根据步骤1.2收集的任务信息,对每一个处于运行状态的Reduce任务计算其数据拷贝剩余处理时间以及与之属于同一Map/Reduce作业的Map任务的剩余执行时间,根据计算结果,选择需要挂起的Reduce任务,方法如下,若不存在需要挂起的Reduce任务,则转至步骤1.5;

步骤1.3.1:作业调度模块遍历所有处于运行状态的Reduce任务信息,对每个Reduce任务执行步骤1.3.2至步骤1.3.6;

步骤1.3.2:选取所有与该Reduce任务属于同一作业且处于运行状态的Map任务,构成任务集SMap,对于SMap中的每一个Map任务i,计算其剩余执行时间TMLefti,计算方法如下:

其中TMLefti代表Map任务剩余执行时间,以毫秒为单位,TMExecutedi代表Map任务已执行时间,以毫秒为单位,PTaski代表Map任务当前执行进度,进度值在(0,1]区间内,本发明将PTaski设定为Map任务已处理数据量与其所需处理的数据总量的比值,PTaski和TMExecutedi是由对应的i任务执行模块统计得出并发送给作业调度模块;

步骤1.3.3:统计该Reduce任务所属的作业中处于运行状态的Map任务的最短剩余执行时间TMleft_min,方法如下:

TMLeft_min=min{TMLefti|i∈SMap}

其中,TMLeft_min代表Map任务剩余执行时间最小值,min表示为对大括号内的所有数值求最小值;

步骤1.3.4:计算该Reduce任务拷贝剩余处理时间TRLeft,方法如下:

其中TRLeft代表Reduce任务拷贝剩余处理时间,以毫秒为单位,TRFetched代表Reduce任务已执行拷贝操作的时间长度,以毫秒为单位,Numc代表Reduce任务已经拷贝的Map任务的个数,Numt代表与Reduce任务属于同一Map/Reduce作业且已运行结束的Map任务的个数,TRFetched由任务执行模块计算Reduce任务执行拷贝操作的开始时间与当前时间的差值获得,Numc由任务执行模块统计已由Reduce任务完成拷贝其输出数据的Map任务的个数获得,TRFetched和Numc均由任务执行模块推送给作业调度模块,Numt则由作业调度模块根据其收集的任务状态信息,统计与Reduce任务属于同一Map/Reduce作业且处于结束状态的Map任务个数;

步骤1.3.5:根据该Reduce任务对应的Map任务剩余执行时间最小值TMLeft_min和该Reduce任务的拷贝剩余处理时间TRLeft,判断该Reduce任务是否满足挂起条件,判断条件如下:

其中TMLeft_min代表Map任务剩余执行时间最小值,TRLeft代表Reduce任务拷贝剩余处理时间,Dsuspend代表设定的阈值,取值范围在[0,1]区间内;

步骤1.3.6:若该Reduce任务满足挂起条件,则将其标记为“待挂起”;

步骤1.4:作业调度模块对每一个标记为“待挂起”的Reduce任务执行挂起操作,并释放挂起Reduce任务所占用的计算资源,方法如下:

步骤1.4.1:作业调度模块查找Map/Reduce平台中标记为“待挂起“的Reduce任务,对每一个待挂起Reduce任务,通过应用管理模块通知相应的任务执行模块,判断其是否处于空闲等待状态,判断方法为Reduce任务执行模块查看该模块中所有Map任务输出数据读取线程是否均处于空闲状态,任务执行模块通过应用管理模块向作业调度模块返回查询结果,若是,执行步骤1.4.2至步骤1.4.6;

步骤1.4.2:作业调度模块通过应用管理模块向相应的任务执行模块发送Reduce任务挂起的消息,消息格式如下:

任务挂起消息标识 作业号 任务号

其中,任务挂起消息标识表示消息类型,任务号和作业号分别表示被挂起Reduce任务的任务编号及其所属Map/Reduce作业的编号;

步骤1.4.3:任务执行模块接收到挂起Reduce任务的消息后,将该Reduce任务还未拷贝其输出数据的Map任务列表以及输出数据的存储路径信息,保存在其所在节点的节点管理模块;

步骤1.4.4:任务执行模块中止该Reduce任务的运行,并向所在节点的节点管理模块发送Reduce任务挂起消息,消息格式与步骤1.4.2中Reduce任务挂起消息格式相同;

步骤1.4.5:节点管理模块向应用管理模块发送Reduce任务挂起消息,消息格式与步骤1.4.2中Reduce任务挂起消息格式相同,应用管理模块收到消息后,将该Reduce任务的状态修改为挂起状态,并记录任务的挂起时间;

步骤1.4.6:节点管理模块向作业调度模块发送Reduce任务挂起消息,消息格式与步骤1.4.4中Reduce任务挂起消息格式相同; 作业调度模块接收到任务挂起消息后,在可用抢占资源信息表中,为该Reduce任务释放的资源新增一个表记录;

步骤1.5:作业调度模块对Map/Reduce平台中每一个处于挂起状态的Reduce任务,统计自Reduce任务最后一次挂起后新增的与该Reduce任务属于同一Map/Reduce作业且已结束的Map任务个数,根据统计结果以及与该Reduce任务属于同一Map/Reduce作业的Map任务总数,选择可以被释放的Reduce任务,若不存在需要释放的Reduce任务,则转至步骤1.7,选择被释放的Reduce任务的方法如下:

步骤1.5.1:作业调度模块遍历所有处于挂起状态的Reduce任务,对每一个任务执行步骤1.5.2到1.5.3;

步骤1.5.2:对该Reduce任务,判断其是否需要恢复运行,判断条件如下:

其中,Ns代表与该Reduce任务属于同一作业且已执行结束的Map任务数,Nf代表与该Reduce任务属于同一作业且Reduce任务已完成对其输出数据拷贝的Map任务数,Nt代表与该Reduce任务属于同一作业的Map任务总数,Dp代表设定阈值,取值范围在[0,1]区间内;

其中,Ns-Nf以及Nt的值由应用管理模块计算并发送给作业调度模块,Ns-Nf的计算方法是统计在Reduce任务最后一次挂起的时间点之后所有与之属于同一作业且处于结束状态的Map任务的总数,Nt的计算方法是统计该Reduce任务所在作业的Map任务总数;

步骤1.5.3:若该Reduce任务满足释放条件,则将其标记为“待释放”;若不满足释放条件,对该任务的状态不作修改;

步骤1.6:作业调度模块对每一个标记为“待释放”Reduce任务,将正在使用其所释放资源的Map任务挂起,将资源重新分配给该挂起Reduce任务,并恢复该Reduce任务的执行,方法如下;

步骤1.6.1:作业调度模块查找所有标记为“待释放”的Reduce任务,对每一个待释放的Reduce任务,执行步骤1.6.2到步骤1.6.11;

步骤1.6.2:作业调度模块根据Reduce任务号在可用抢占资源信息表中查找该Reduce任务所释放抢占资源的资源号,根据资源号查看抢占资源使用信息表中是否存在使用该Reduce任务所释放抢占资源的记录,若不存在,则转至步骤1.6.9;否则,作业调度模块统计所有正在使用该Reduce任务所释放的抢占资源的Map任务,对每一个Map任务,执行步骤1.6.3到步骤1.6.7;

步骤1.6.3:作业调度模块向应用管理模块发送中止该Map任务执行的消息,应用管理模块将该任务中止消息发送给运行该Map任务的任务执行模块,消息格式如下:

任务中止消息标识 作业号 任务号

其中,任务中止消息标识表示消息类型,任务号和作业号分别表示被中止的Map任务的任务号及其所属Map/Reduce作业的作业号;

步骤1.6.4:任务执行模块接收任务中止消息后,等待Map任务将当前正在处理的数据记录处理完毕后,将Map任务产生的输出数据写入所在计算节点的本地磁盘存储器中,计算该Map任务尚未处理的数据记录在数据文件中的起始偏移量,并将该偏移量信息保存于本节点的节点管理模块中,中止Map任务执行,并向本节点的节点管理模块发送该Map任务中止消息,消息格式与步骤1.6.3相同;

步骤1.6.5:节点管理模块接收Map任务中止消息后,向作业调度模块发送Map任务中止消息,并将中止Map任务消息及Map任务尚未处理数据消息发送给应用管理模块; 其中,Map任务中止消息格式与步骤1.6.3相同,Map任务尚未处理数据消息格式如下:

任务未处理数据消息标识 任务号 数据处理偏移量

其中,任务未处理数据消息标识表示消息类型,任务号表示被中止任务的编号,数据文件偏移量表示该任务尚未处理的数据记录在数据文件中的起始偏移量;

步骤1.6.7:作业调度模块接收到节点管理模块发送的Map任务中止信息后,根据任务号查找抢占资源使用信息表中该Map任务对应的抢占资源使用记录,根据资源使用记录中资源号查找可用抢占资源信息表中对应的抢占资源记录,并将该可用抢占资源信息记录中可使用资源量的值修改为当前值与Map任务资源使用量值的和;从抢占资源使用信息表中删除该Map任务对应的资源使用记录;

步骤1.6.8:应用管理模块接收到Map任务中止消息及尚未处理数据消息后,将该Map 任务的状态改为待调度状态,用所接收的数据处理偏移量信息更新既有的任务数据处理起始偏移量信息,向作业调度模块提交一个计算资源申请消息消息格式如下:

作业号 任务号 资源需求量

其中,任务号和作业号分别表示申请计算资源的任务编号以及其所属Map/Reduce作业的编号,资源需求量表示该任务所需要的计算资源数量;

步骤1.6.9:作业调度模块根据资源号查看抢占资源使用信息表中是否还存在使用该Reduce任务所释放抢占资源的记录,若存在,则执行步骤1.6.3;若不存在,则执行步骤1.6.10到步骤1.6.11;

步骤1.6.10:作业调度模块向管理该Reduce任务的应用管理模块发送任务启动消息,消息格式如下:

任务启动消息标识 作业号 任务号 集群节点号

其中,任务启动消息标识表示消息类型,任务号和作业号分别表示获得Reduce任务及其所属作业的编号,集群节点号表示Reduce任务运行所在的节点编号;

步骤1.6.11:应用管理模块接收任务启动消息,根据作业号和任务号,将任务状态信息表中,对应的任务记录中任务状态修改为运行态,并根据集群节点号向该节点的节点管理模块发送任务执行消息,消息格式如下:

其中,任务号和作业号分别表示需要运行的Map任务及其所属作业的编号,任务执行代码路径表示任务需要运行的代码的存储路径,任务处理数据文件表示该Map任务需要处理数据所在文件的存储路径,数据处理起始偏移量和数据以及需要处理数据在文件中的起始偏移量;

步骤1.6.12:节点管理模块接收任务启动消息后,启动任务执行模块;任务执行模块从节点管理模块读取Reduce任务挂起时保存的数据拷贝信息,继续从已执行结束且还未拷贝其输出数据的Map任务的运行节点上拷贝输出数据,并根据输出数据存储路径信息存放所拷的数据;

步骤1.7:作业调度模块查看是否存在可用的抢占资源;若存在,则执行一次新的面向抢占资源的作业调度;

所述的面向抢占资源的作业调度,包括如下步骤:

步骤2.1:作业调度模块查看可用抢占资源信息表是否存在可用抢占资源记录,若存在,对每一个可用的抢占资源记录顺序执行步骤2.2到步骤2.4,若不存在,则结束该轮调度;

步骤2.2:作业调度模块根据待调度任务信息表,对包含待调度Map任务的作业按照到达时间进行排序,选取最早到达的作业;

步骤2.3:对步骤2.2所选取的作业,在其所包含的待调度Map任务中,按照数据本地化、数据本机柜化、数据本交换化的优先级顺序选择Map任务;为所选择的Map任务分配资源且运行任务,直至该可用的抢占资源的可使用资源量均小于作业剩余的待调度Map任务的资源需求量,或该作业中所有待调度Map任务均已获得所需的计算资源,方法如下:

步骤2.3.1:在步骤2.2选取作业所包含的待调度Map任务中,选取满足数据本地化条件的Map任务集,数据本地化是Map任务所处理的数据存储于可用资源所在计算节点上;遍历该Map任务集,对每一个Map任务判断该抢占资源的可使用资源量是否大于Map任务的资源需求量,若大于,则为该Map任务在抢占资源使用信息表中增加一个资源使用记录,其中资源使用份额即为该Map任务计算资源需求的数量,并在可用抢占资源信息表中,将该抢占资源的可使用资源量值修改为当前值与Map任务资源使用份额的差值;将该任务的资源需求记录删除;

步骤2.3.2:在该作业所包含的待调度Map任务中,选取满足数据本机柜化条件的Map任务集,数据本机柜化是存储Map任务所需处理数据的节点与可用抢占资源所在的计算节点同处于一个机柜中,遍历该Map任务集,对每一个Map任务判断该抢占资源的可使用资源量是否大于Map任务的资源需求,若大于,则为该Map任务在抢占资源使用信息表中增加一个资源使用记录,其中资源使用份额即为该Map任务计算资源需求的数量,并在可用抢占资源信息表中,将该抢占资源的可使用资源量值修改为当前值与Map任务资源使用份额的差值;并将该任务的资源需求记录删除;

步骤2.3.3:在该作业所包含的待调度Map任务中,选取满足数据本交换化条件的Map任务集,数据本交换化是存储Map任务处理数据的节点与可用抢占资源所在的计算节点处于不同的机柜中,但可通过同一交换机互连,遍历该Map任务集,对每一个Map任务判断该抢占资源的可使用资源量是否大于Map任务的资源需求,若大于,则为该Map任务在抢占资源使用信息表中增加一个资源使用记录,其中资源使用份额即为该Map任务计算资源需求的数量,并在可用抢占资源信息表中,将该抢占资源的可使用资源量值修改为当前值与Map任务资源使用份额的差值;并将该任务的资源需求记录删除;

步骤2.3.4:作业调度模块对步骤2.3.1至步骤2.3.3中所有获得抢占资源的Map任务,向管理该Map任务的应用管理模块发送任务启动消息,消息格式如下:

任务启动消息标识 作业号 任务号 集群节点号

其中,任务启动消息标识表示消息类型,任务号和作业号分别表示获得抢占资源的Map任务及其所属作业的编号,集群节点号表示Map任务获得资源所在的节点编号;

步骤2.3.5:应用管理模块接收任务启动消息,根据作业号和任务号,将任务状态信息表中,对应的任务记录中任务状态修改为运行态,并根据集群节点号向该节点的节点管理模块发送任务执行消息,消息格式如下:

其中,任务号和作业号分别表示需要运行的Map任务及其所属作业的编号,任务执行代码路径表示任务需要运行的代码的存储路径,任务处理数据文件表示该Map任务需要处理数据所在文件的存储路径,数据处理起始偏移量和数据以及需要处理数据在文件中的起始偏移量;

步骤2.3.6:节点管理模块接收任务执行消息,为Map任务启动一个任务执行模块,任务执行模块根据任务执行消息中所需处理数据文件及起始偏移量的信息,读取数据文件,执行该Map任务;

步骤2.4:若该作业中所有待调度Map任务均已获得所需的计算资源,则重复执行步骤2.2到步骤2.3,否则,结束调度。

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