本发明提供了一种MapReduce任务调度方法及系统,通过引入基于Docker容器的抢占机制,弥补了Yarn现有的基于Kill的抢占机制直接杀死任务的缺点。基于Docker容器的抢占机制可以在保留任务进度的同时,释放出被任务占用的资源,结合服务等级协议感知的任务策略,可以实现高优先级的任务抢占其他任务的运行资源,保证作业的完成时间达到服务等级协议(SLA)的目标,通过本发明中的调度方法可以保证较高的集群资源利用率,同时兼顾了作业的低延迟和即时响应速度。
1.一种MapReduce任务调度方法,其特征在于,包括以下步骤: S1:客户端创建JobSummiter实例,通过JobSummiter的内部方法,计算作业的输入分片,将作业运行所需的资源复制到分布式文件系统中,并将MapReduce作业提交到资源调度器ResourceManger; S2:资源调度器ResourceManger接收到作业提交消息后,将请求消息传递到中心资源调度器,中心资源调度器通过内部的作业解析方法,解析这个作业有关的详细信息,分析达到服务等级协议所需的最晚截止日期; S3:中心资源调度器将新任务加入到中心任务队列中,根据每个任务的截止日期不同,将所有任务按截止日期从近到远重新排序; S4:中心资源调度器接受来自节点资源调度器的心跳信息,获取各个节点资源调度器已分配的任务数量,依次从中选取任务量最少的节点,将当前截止日期最近的任务指派过去执行; S5:节点资源调度器接收到新任务后,将新任务加入本地任务队列,并根据截止日期对任务队列进行重新排序; S6:节点资源调度器检查新任务在任务队列中的位置,如果新任务的截止日期比正在执行的任务近,则新任务抢占正在执行的任务。
2.根据权利要求1所述的MapReduce任务调度方法,其特征在于,步骤S2中,中心资源调度器获取CPU资源总量C和内存资源总量M,根据作业数量得到长作业的作业份额根据公平原则,周期性地计算中心任务队列中每个作业的资源份额/>
3.根据权利要求2所述的MapReduce任务调度方法,其特征在于,步骤S3中,中心资源调度器在接收一个作业的资源请求后,会结合截止日期约束、集群的资源情况以及所述作业的资源需求,对所述作业是否可以在截止日期之前完成进行分析,如果中心资源调度器判断所述作业可以在其截止日期前完成,则将其加入中心任务队列;否则,中心资源调度器会拒绝所述作业的执行。
4.根据权利要求1所述的MapReduce任务调度方法,其特征在于,步骤S4中,当某一作业到达时,中心资源调度器会根据由各个节点资源调度器发送的心跳信息确定当下的集群资源量,并根据所述作业运行的历史日志分析作业请求的资源量,如果所述作业没有在集群上执行过,调度器则会使用原始数据集的一小部分作为预测试集来执行所述作业。
5.根据权利要求4所述的MapReduce任务调度方法,其特征在于,步骤S4中,如果所述作业请求的资源量不超过集群中的可用资源量,则中心资源调度器将所述作业加入中心任务队列; 否则,需要再分成两种情况:一种情况包括,如果将所述作业直接抢占当前正在运行的作业的资源,并且在立即执行的情况下可以及时完成作业,则执行所述作业; 另一种情况包括,即使所述作业抢占其他作业的资源,所述作业也无法满足截止日期要求,则中心资源调度器会直接拒绝所述作业的执行。
6.根据权利要求4所述的MapReduce任务调度方法,其特征在于,步骤S4中,基于服务等级协议的抢占资源量通过以下方案确定: 当W个map任务执行完毕后,才开始执行reduce任务,Tup代表所述W个map任务的执行时间上限,可得: 其中,Mavg为作业j中的map任务的平均执行时间,为作业j中的map任务数量,Mmax为作业j中的map任务的最大执行时间;当有Q个作业可以在时间上限Tup之前执行完成,且这些作业完成后释放的资源量为R,可通过以下公式计算R的值: 其中,j代表某一个作业,代表作业j的reduce任务个数; reduce阶段需要的资源量为E,可由以下公式计算E的值: 其中Cr表示当下时刻集群中的可用资源量,代表作业j的map任务需要的资源量。
7.根据权利要求6所述的MapReduce任务调度方法,其特征在于,步骤S6中,当需要进行作业抢占时,先计算需要被抢占的作业k额外占用的资源份额其中/>代表作业k在执行过程中实际占用的资源,/>代表按照资源的公平分配原则,作业k应该得到的资源量;然后获取需要执行的作业j请求的资源份额/>若/>则可计算出需要抢占的资源
8.根据权利要求7所述的MapReduce任务调度方法,其特征在于,步骤S6中,若则通过算法计算需要抢占的资源/>需要抢占的资源/>的计算包括:先比较CPU资源和内存资源,将其分为主要资源和次要资源,然后根据主要资源的回收量,按比例得到次要资源的资源回收量,计算公式包括: 其中,Cj,Mj分别代表作业j请求的CPU资源量和内存资源量,Ca,Ma分别代表集群中当前作业k实际额外占用的CPU资源量和内存资源量; 代表需要进行抢占的资源量,如果/>则代表作业j请求的CPU资源为主要资源,进而抢占作业k额外占用的全部CPU资源,并且按比例抢占作业k额外占用的内存资源;否则,视内存为作业j请求的主要资源,抢占作业k额外占用的全部内存资源,并按比例抢占作业k额外占用的CPU资源。
9.根据权利要求8所述的MapReduce任务调度方法,其特征在于,所述MapReduce任务调度方法根据基于服务等级协议的调度策略进行,所述基于服务等级协议的调度策略的步骤包括: 当作业j到达后,分析这个作业的截止日期、需要的吞吐量以及需要的资源量; 中心资源调度器分析集群当下的资源量是否满足判断作业j的资源需求量,若满足则将作业j加入中心任务队列; 若不满足,判断集群的资源量是否可以满足作业j的map任务的资源需求量,以及在map任务执行结束后所释放的资源是否可以满足reduce任务的资源需求量; 若上述两个条件都满足,则将作业j加入中心任务队列,标记作业j为高优先级,从而使作业j在执行过程中可以抢占其他作业的资源;若不能同时满足这两个条件,则中心资源调度器拒绝执行作业j; 中心资源调度器对中心任务队列中的作业按照截止日期进行排序,对每一个作业分别进行遍历处理;对于中心任务队列中的作业j,中心资源调度器判断作业j的map任务是否已经全部执行,若没有全部执行,判断作业j的优先级,如果是高优先级作业,立即与节点资源调度器进行通信,从集群中抢占指定的资源以执行作业j的map任务,否则等待集群产生空闲资源,分配给作业j的map任务; 节点资源调度器通过心跳信息向中心资源调度器报告任务执行的状态,如果map任务已经全部执行,则中心资源调度器判断已经执行完成的map任务个数是否超过了阈值W,若超过了阈值W,则开始执行作业j的reduce任务,同样判断作业j的优先级,若是优先执行的作业,则与节点资源调度器一起完成作业抢占,否则等待有空闲的资源进行分配。
10.一种采用权利要求1-9中任一项所述MapReduce任务调度方法的MapReduce任务调度系统,其特征在于,包括:分布式数据中心集群,所述分布式数据中心集群中包括一台中心资源调度器以及多台节点资源调度器; 所述中心资源调度器中维护着一个中心任务队列,当有新的作业到达时,中心资源调度器分析作业特性,得到作业的运行时间以及截止日期; 所述节点资源调度器中维护着一个正在运行的任务队列,以及一个暂停任务队列,两个队列根据截止日期的先后排序,通过心跳机制不断向所述中心资源调度器汇报节点上的任务信息以及资源使用情况。
请联系平台
请联系平台