当前位置: 首页 > 专利查询>北京大学专利>正文

一种工作槽感知的Storm平台作业均分调度方法技术

技术编号:13980996 阅读:63 留言:0更新日期:2016-11-12 11:27
本发明专利技术公开了一种工作槽感知的Storm平台作业均分调度方法。本方法为:1)获取集群中需要任务调度的拓扑集合,及集群中所有空闲可利用的工作槽集合;2)对该工作槽集合中同一工作节点的工作槽分为同一组;3)从当前工作槽剩余最多的分组中取出工作槽放入槽感知排序队列,然后更新每组工作槽的数量,直到工作槽集合为空;4)对于该拓扑集合中的拓扑,根据该拓扑所设置的进程数、工作槽总数目和已经分配的工作槽数目,计算该拓扑需分配的工作槽数目Na;5)从该队列中顺序取出工作槽,并实时控制分配给该拓扑的工作槽中属于同一工作节点的工作槽数n占该拓扑工作槽总数的比例不超过设定比例α,直至取出Na个工作槽分配给该拓扑。

【技术实现步骤摘要】

本专利技术属于主流的大数据实时流式计算平台Storm,涉及Storm平台作业调度的负载均衡问题,特别涉及一种细粒度工作槽感知的Storm平台作业均分调度方法
技术介绍
在大数据时代,实时地从大规模的、快速持续产生的数据集中提取出有价值的信息成为挑战。传统的分布式大数据处理系统Hadoop主要进行批量计算,适合静态数据的离线批处理,要求预先将处理的输入数据存储在分布式文件系统中。Storm作为实时分布式大数据流式计算平台,适合动态数据的实时流处理,不要求数据的预先存储而是在内存中直接进行数据的实时计算。由于数据流式计算区别于数据批量计算,因此大数据流式计算平台在架构设计上也区别于MapReduce的编程模式。为了满足数据的实时流处理,大数据流式计算平台在消息处理机制、容错机制和资源调度机制方面均做出了特殊设计。随着大数据流式计算技术的发展和应用,研究人员对流式计算平台的作业调度机制、可靠机制、容错性、负载均衡、数据吞吐量等方面进行了分析优化。尤其考虑到Storm平台的作业调度机制,调度器(Scheduler)负责为拓扑作业(拓扑)分配当前集群可用资源。从Storm-0.8.2版本开始,Storm提供三种调度器:均分资源调度器(EvenScheduler)、释放-再均分资源调度器(DefaultScheduler)和隔离-独占资源调度器(SolationScheduler)。并且也提供了IScheduler接口,用户可基于该接口实现自定义的调度器。术语说明1)均分调度器(EvenScheduler):它是Storm的基础调度器,负责将集群中的可用资源均匀地分配给当前需要任务分配的多个拓扑。2)拓扑(Topology):它是Storm中运行的一个实时应用程序,也称拓扑作业。3)主控节点(Nimbus):它负责在集群中分发代码,对节点分配任务,并监视主机故障。4)工作节点(Supervisor):它监听、启动和停止其主机上已经分配的工作进程及任务。5)工作槽(slot):它是工作节点上资源分配的基本单位,一个工作槽上有且仅启动一个进程。工作槽表示为二元组<supervisor-id,port>,supervisor-id为工作节点编号,port为端口号。6)进程(worker):它是运行具体处理逻辑的进程,也称工作进程。每个进程是一个物理的JVM,可启动多个线程,且仅运行一个拓扑作业的子集,即一个进程仅属于一个拓扑。7)执行器(executor):它由工作进程启动,也被称为物理线程。8)任务(task):它是物理上执行拓扑的单元,默认进程中每个线程上运行一个任务。A类均分调度器为了便于区分,本专利技术将Storm-0.9.2以前版本(包括Storm-0.9.2)提供的均分调度器统称为A类均分调度器,它将每个拓扑的进程和线程均匀地分配到集群中可利用的工作节点上。具体的,为了实现将某拓扑作业的进程均分到工作节点的工作槽上,A类均分调度器利用sort-slots方法首先将集群中可利用的slots按照supervisor-id进行分组,然后分组间交叉存取(interleave-all)每个分组内的第一个slot,并递归交叉存取过程返回slots排序队列,最后从队列中取出固定数目的slots分配给工作进程。为了实现将拓扑的线程均匀地分配到进程,A类均分调度器采用循环(Round-Robin)策略将同一组件(Spout/Bolt)的线程分配到不同工作节点的进程,减少同质资源竞争。由此不难发现,A类均分调度器排序方法中的分组顺序都是固定的,由supervisor-id决定。B类均分调度器为了便于区分,本专利技术将Storm 0.9.3以上版本(包括Storm-0.9.3)提供的均分调度器统称为B类均分调度器,它和A类均分调度器都实现均分资源的目标。唯一不同在于B类均分调度器在sort-slots方法上做了修改,它保证工作槽资源剩余多的工作节点上被优先调度,并保证每个拓扑尽可能运行在所有工作节点上。具体的,B类均分调度器的sort-slots方法,首先将集群中可利用的slots按照supervisor-id分组后再组间降序排列,然后分组间交叉存取每个分组内的第一个slot,并递归交叉存取过程返回slots排序队列。由此,不难发现,B类均分调度器多了分组间降序排序过程,分组的先后顺序是根据工作节点资源剩余量动态变化的。但是,A类和B类调度器中的排序方法都是节点级别的分组交叉排序。现有几种方法的缺点和局限性1)A类均分调度器提供的sort-slots排序方法仅仅考虑将集群中可利用的资源按照工作节点编号进行分组,然后按照组间交叉-循环排序得到slots排序队列。通过分析排序结果可知,该sort-slots方法存在局限性,排序结果中某些工作节点总是排序在前,某些工作节点排序在后。2)由于A类均分调度器的sort-slots方法存在问题1),在多个拓扑被调度分配时,拓扑任务总是会被分配到某几台排序靠前的工作节点上。对于每个拓扑而言,A类均分调度器将单个拓扑作业任务均分到集群的工作节点上。但是对于多个拓扑而言,A类均分调度器并没有真正实现大数据集群资源地均匀分配,一些机器空转造成资源浪费,一些机器却负载严重。甚至造成集群负载不均衡的极端情况:某些机器上slot全部被占用,但是某些机器上slot全部空闲。3)B类均分调度器虽然改进了sort-slots方法,使得资源剩余量较多的工作节点上工作槽被优先分配,但是仍旧是属于节点级别的排序调度。考虑到集群资源负载的问题,Storm流式计算平台在此方面存在着明显不足。Storm集群在运行过程中,工作节点在出现故障(快速失败的)、工作进程运行失败、拓扑被用户Kill或者扩展新的工作节点等情况,均会释放-回收集群中的工作槽资源,造成拓扑任务不再均衡地分布在集群中的工作节点上,出现集群资源负载不均衡的状况。该状况一旦被集群中的恶意用户利用,将会造成Storm集群的安全威胁。4)在Storm集群正常使用的情况下,虽然B类均分调度器能够实现单个拓扑和多个拓扑均分集群资源,但是它仍旧属于节点级别的调度策略。特殊的,如若集群出现3)中提到的情况,显然目前Storm自带的A/B类均分调度器都不能解决负载不均衡的问题。这种节点级别的循环调度策略仍旧将新拓扑任务均分到每个工作节点上,反而会加重负载不均衡。
技术实现思路
鉴于此,本专利技术所要解决的技术问题是提供一种细粒度工作槽感知的Storm平台作业均分调度方法。由于在Storm集群出现负载不均衡的情况下,Storm目前提供的A/B类均分调度器不仅不能减轻该问题反而会加重。本专利技术提出了一种基于工作槽感知的细粒度排序算法,设计了实施工作槽级别的均分调度策略,称为Slot-aware策略。本专利技术不仅能够保证集群正常情况下,实现单个拓扑和多个拓扑任务被均匀分配到集群中可利用的工作节点上,即正常情况下资源的负载均衡。而且,本专利技术也能保证集群出现负载不均衡的情况下,将新拓扑任务适当合并分配到资源负载较轻的部分工作节点上,即负载不均衡时动态调整使得集群负载均衡。本专利技术最明显的特点是,单个拓扑任务不再被循环分配到每个工作节点上的一个工作槽上,而是细粒度地感知每个工本文档来自技高网
...

【技术保护点】
一种工作槽感知的Storm平台作业均分调度方法,其步骤为:1)获取集群中需要任务调度的拓扑集合,及集群中所有空闲可利用的工作槽集合;2)对该工作槽集合中的工作槽资源进行排序,将同一工作节点的工作槽分为同一组;3)从当前工作槽剩余最多的分组中取出工作槽放入槽感知排序队列,然后更新每组工作槽的数量,直到工作槽集合为空;4)对于该拓扑集合中的拓扑,根据该拓扑所设置的进程数、工作槽总数目Nw和已经分配的工作槽数目Nl,计算该拓扑需要再申请的工作槽数目Nr=Nw‑Nl和需实际再分配的工作槽数目Na=Min(Nr,Nq);Nq为工作槽集合中的工作槽数目;5)从该槽感知排序队列中顺序取出工作槽,并实时控制分配给该拓扑的工作槽中属于同一工作节点的工作槽数n占该拓扑工作槽总数Nw的比例不超过设定比例α,直至取出Na个工作槽分配给该拓扑。

【技术特征摘要】
1.一种工作槽感知的Storm平台作业均分调度方法,其步骤为:1)获取集群中需要任务调度的拓扑集合,及集群中所有空闲可利用的工作槽集合;2)对该工作槽集合中的工作槽资源进行排序,将同一工作节点的工作槽分为同一组;3)从当前工作槽剩余最多的分组中取出工作槽放入槽感知排序队列,然后更新每组工作槽的数量,直到工作槽集合为空;4)对于该拓扑集合中的拓扑,根据该拓扑所设置的进程数、工作槽总数目Nw和已经分配的工作槽数目Nl,计算该拓扑需要再申请的工作槽数目Nr=Nw-Nl和需实际再分配的工作槽数目Na=Min(Nr,Nq);Nq为工作槽集合中的工作槽数目;5)从该槽感知排序队列中顺序取出工作槽,并实时控制分配给该拓扑的工作槽中属于同一工作节点的工作槽数n占该拓扑工作槽总数Nw的比例不超过设定比例α,直至取出Na个工作槽分配给该拓扑。2.如权利要求1所述的方法,其特征在于,步骤4)中,还获取该拓扑所设置的线程数和任务数;将线程、任务均分到各进程。3.如权利要求2所述的方法,其特征在于,...

【专利技术属性】
技术研发人员:沈晴霓钱文君杨雅辉吴中海
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1