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

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

【发明内容】

[0022]鉴于此,本发明所要解决的技术问题是提供一种细粒度工作槽感知的Storm平台作业均分调度方法。由于在Storm集群出现负载不均衡的情况下,Storm目前提供的A/B类均分调度器不仅不能减轻该问题反而会加重。本发明提出了一种基于工作槽感知的细粒度排序算法,设计了实施工作槽级别的均分调度策略,称为Slot-aware策略。本发明不仅能够保证集群正常情况下,实现单个拓扑和多个拓扑任务被均匀分配到集群中可利用的工作节点上,即正常情况下资源的负载均衡。而且,本发明也能保证集群出现负载不均衡的情况下,将新拓扑任务适当合并分配到资源负载较轻的部分工作节点上,即负载不均衡时动态调整使得集群负载均衡。
[0023]本发明最明显的特点是,单个拓扑任务不再被循环分配到每个工作节点上的一个工作槽上,而是细粒度地感知每个工作节点上的工作槽剩余量,适当合并拓扑任务到负载较轻的工作节点上,保证集群负载均衡。值得说明的是,实施的Slot-aware均分调度器修改了 sort-slots方法,加入了新的概念-槽感知排序队列和拓扑任务单节点合并因子。本发明提出的均分调度策略属于工作槽级别的细粒度调度策略,不涉及到工作槽端口号排序分组,普遍适用于工作节点间端口号设置一致或者不一致的集群中。如图1所示,一种细粒度的工作槽感知的Storm平台作业均分调度方法(slot-aware scheduling policy, Slot-aware策略),其实现流程如下:
[0024]I)首先,获取集群中需要任务调度的拓扑集合,及集群中所有空闲可利用的工作槽集合。
[0025]2)其次,对于集群中可利用的工作槽资源,使用工作槽感知的sort-slots排序算法进行排序。该过程详细为:
[0026]①将工作槽集合内的元素(工作槽)按照工作槽的第一个字段(工作节点编号)进行分组,工作槽集合被分为若干组,同一工作节点的工作槽被分为同一组。说明,工作槽表示为二元组〈supervisor-1d, port〉,其中supervisor-1d为工作节点编号,用于标识工作槽属于哪个工作节点。
[0027]②将分组后的工作槽集合根据各分组内的元素数(工作槽数)进行组间降序排列。至此,属于同一工作节点的工作槽被分为同一分组,且工作槽空闲最多的工作节点分组排序在前。
[0028]③从第一个分组内取第一个元素(即第一个工作槽),即从将工作槽剩余最多的工作节点上取出一个工作槽,将其放入槽感知排序队列。槽感知排序队列是一个将集群中可利用地空闲工作槽按照工作槽感知排序算法排序后形成的slots队列。
[0029]④判断剩余的工作槽集合是否为空,重复①②③,递归直到工作槽集合为空。
[0030]3)再次,获取槽感知排序队列中的工作槽排序结果和工作槽数目Nq。从需要调度的拓扑集合队列中,获取一拓扑所设置的进程数、线程数和任务数。并利用Round-Robin策略使得线程任务均分到各进程,保证各组件Spout/Bolt任务均匀分布,防止同质资源竞争。
[0031]4)然后,获取该拓扑所设置的工作槽总数目Nw和已经分配的工作槽数目N1,计算该拓扑需要再申请的工作槽数目Nr = Nw-N1,实际再分配的工作槽数目Na=Min(Nr,Nq)。
[0032]5)接着,从槽感知排序队列中陆续取出前1个工作槽。根据集群预先设置已知的拓扑任务单节点合并因子α,实时判断分给该拓扑的全部工作槽中属于同一个工作节点的工作槽η所占百分比Θ不能超过合并因子α。具体的,合并因子α被设置为系统级别的参数,由系统管理员设置,默认值为I,取值范围为(0,I]。若超过,则从槽感知排序队列中取后续工作槽,调整Θ值使其不超过合并因子α,直至取出1个工作槽分配给该拓扑。特殊地,如果工作槽集合中工作槽有限且比较集中在某一分组中,无法取出满足θ<α的仏个工作槽,那么取出满足条件的部分工作槽先分配给该拓扑。合并因子α的设置限制了某个拓扑作业在单个工作节点上所占的资源比例,防止该拓扑任务过多地运行在同一节点上,出现同质资源竞争而减弱了负载平衡带来的优势。
[0033]6)最后,判断槽感知队列中的工作槽数目是否大于零,若为真则返回I),否则调度结束。
[0034]本发明的有益效果
[0035]本发明提出了一种细粒度地工作槽感知的Storm平台作业调度方法,其主要优势在于:它采用工作槽级别的sort-slots排序算法,细粒度递归地进行工作槽排序,每次排序出资源剩余最多地工作节点上的一个工作槽,将其放入槽感知排序队列,直至全部工作槽排序结束。然后再从工作槽排序队列中取出固定数目且满足合并因子α条件下的工作槽。对比Storm集群目前提供的Α/Β类均分调度器,无论集群工作节点上的工作槽端口号设置是否一致的情况下,它不仅考虑到集群出现负载不均衡时,通过所设置的合并因子α合并部分拓扑任务到资源空闲最多的工作节点,而且也尽量使得拓扑任务均分到资源空闲最多的工作节点上,这样不仅能够使得集群保持动态的负载均衡,减少拓扑任务间的通信流量,而且也能够避免过多的拓扑任务运行在同一工作节点造成同质资源竞争,提高集群资源利用率。
[0036]由此可见,本发明考虑到了工作槽之间的分配和依赖关系,每排序出一个工作槽会影响剩余工作槽集合的排序结果。实施Slot-aware策略的大数据流式计算平台在正常运行的情况下,它能够达到Storm集群(实施B类均分调度器)相同的吞吐量和资源利用率。但是,当集群出现负载不均衡时,它能够改善集群的负载情况,调度新拓扑使得集群负载均衡而不至于更糟糕。实验验证表明,在负载不均衡的情况下,本发明Slot-aware策略通过将新拓扑按照槽感知的排序方法分配到集群中负载较轻的某几台机器上,以减轻负载较重机器的压力,降低对集群机器的硬件和软件要求,达到负载均衡。实验结果显示,在负载不均衡的情况下,本发明相比之前的Storm集群,首先各计算节点上工作槽资源的占用率(使用率)维持均勾,此外,WordCount流式拓扑(进程数-4,任务数-25)在1min内的吞吐量增长了1.2x,该拓扑作业的Tuple平均处理时间降低了 16.7%。
【附图说明】
[0037]图1为本发明一种工作槽感知的Storm作业均分调度策略流程图;
[0038]图2为本发明在正常运行场景下三类集群分别先后调度3个拓扑的工作槽分配实施例图;
[0039](a)A类Storm集群,(b)B类Storm集群,(C)F-Storm集群;
[0040]图3为本发明Kill掉拓扑2后造成负载不均衡的场景下两类集群调度新拓扑4的实施例图;[0041 ] (a)B类Storm集群,(b)F_Storm集群;
[0042]图4为本发明加入新工作节点S4且端口号设置不一致后造成负载不均衡的场景下两类集群调度新拓扑5的实施例图。
[0043](a)B类Storm集群,(b)F_Storm集群;
[0044]图5为本发明在实施例场景二下拓扑4的tuple平均处理时间和Imin内吞吐量的实验数据对比图;
[0045](a)场景二:新提交拓扑4的平均处理时间(/元组)对比图,
[0046](b)场景二:新提交拓扑4的吞吐量(/分钟)对比图,
[0047](c)场景二:新提交拓扑4的1min内累计吞吐量散列图。
【具体实施方式】
[0048]本发明不仅保证在集群正常运行时,单个拓扑和多个拓扑作业均分Storm集群资源。而且,在集群由于节点故障、Worker进程失败、Ki 11掉某拓扑、加入新工作节点等情况造成集群负载不均衡时,以及工作节点间工作槽端口号设置不一致时,本发明也能将单个或者多个拓扑作业均分调度到资源空闲较多的工作节点上,使得集群恢复负载均衡。
[0049]在具体实施时,本发明基于S t ο rm - 0.1 0.0源码,修改均分调度器的EvenScheduler.cl j和util.cl j源码文件,实现细粒度地工作槽感知的sort-slots排序算法(Clo jure语言),使用Maven工具重新编译打包Storm大数据流式计算项目,替换Storm-0.10.0发行版中storm-core.jar包。另外,基于Storm-0.10.0源码,修改均分调度器的EvenScheduler.clj源码文件中的分组排序方式,实现A类均分调度器。然后,在大数据环境下部署分布式的Storm大数据流式计算框架,设计三组大数据实施例场景,分别对比每种场景下大数据流式计算平台的不同作业调度情况,分析集群资源负载均衡问题,对比拓扑作业在不同平台负载下的Tuple平均处理时间。需要说明,基于Storm-0.10.0源码,A类Storm集群默认实施A类均分调度器,B类Storm集群默认实施B类均分调度器,F-Storm集群默认实施Slot-aware策略,合并因子为α(默认I)。
[0050]实施例:
[0051 ] I)场景一:在正常运行场景下,々类31:0;?!集群、B类Storm集群和F-Storm集群等三类集群分别先后调度拓扑1、拓扑2、拓扑3后的工作槽分配,如图2所示。
[0052]初始时,各Storm集群中启动3台工作节点,每台工作节点上工作槽的可用端口号都是6700、6701、6702、6703,即每台工作节点可用的工作槽数目为4。
[0053]①A类 Storm集群。
[°°54] 先提交拓扑l(4worker),占用4个SlotSc3A类均分调度器中sort-slots方法的传入集合为:{[S1 6700][S1 6701][S1 6702][S1 6703][S2 6700][S2 6701][S2 6702][S26703][S3 6700][S3 6701][S3 6702] [S3 6703]},按照工作节点编号进行分组,分成三组:{[[SI 6700][S1 6701][S1 6702][S1 6703]][[S2 6700][S2 6701][S2 6702][S2 6703]][[S3 6700][S3 6701][S3 6702][S3 6703]]}。然后调用interleave-all方法递归交叉存取,排序结果为:{[S1 6700][S2 6700][S3 6700][S1 6701][S2 6701][S3 6701][S1
6702][S2 6702] [S3 6702][S1 6703] [S2 6703] [S3 6703]}。最后,从sort-slots返回的排序结果中取出前4个工作槽:{[SI 6700][S2 6700][S3 6700][S1 6701] },将拓扑I的线程任务均分到4个进程中,并启动对应工作节点上的4个工作槽。
[0055]然后提交拓扑2(2worker),占用2个slots。同理,初始传入A类均分调度器中sort-slots方法的集合为:{[SI 6702][S1 6703][S2 6701][S2 6702][S2 6703][S3 6701][S3
6702][S3 6703]},最后排序结果为:{[SI 6702][S2 6701][S3 6701][S1 6703][S2 6702][S3 6702][S2 6703][S3 6703] },该拓扑占用前 2 个工作槽:{[SI 6702][S2 6701]}。提交拓扑3(2worker),再次排序占用排序结果的前2个工作槽:{[SI 6703] [S2 6702]}。如图2(a)所示,A类调度器总是将拓扑分配到排序靠前的工作节点上,造成集群正常运转情况下节点间负载不均衡的状况。
[0056]②B类Storm集群
[°°57]先提交拓扑l(4worker),占用4个slots。该拓扑在B类Storm集群的调度结果与①中拓扑I的调度结果相同。为拓扑I分配4个工作槽后,集群剩余的工作槽集合为:{ [SI
6702][S16703][S2 6701][S2 6702][S2 6703][S3 6701][S3 6702][S3 6703]}。
[0058]然后提交拓扑2(2worker),占用2个slots。初始传入B类均分调度器中sort-slots方法的集合为:{[SI 6702][S1 6703] [S2 6701][S2 6702] [S2 6703] [S3 6701][S3 6702][S3 6703]}。其次按照工作节点编号进行分组且分组间按照分组内元素个数降序排列,结果为:{[S2 6701][S2 6702][S2 6703]][S3 6701][S3 6702] [S3 6703]][[S1 6702][S16703 ] ]},然后调用inter leave-al I方法递归交叉存取,排序结果为:{[S2 6701 ][ S3 6701][SI 6702] [S2 6702][S3 6702][S1 6703] [S2 6703][S3 6703]}。最后,从 sort-slots 返回的排序结果中取出前2个工作槽:{[S2 6701][S3 6701 ]},将拓扑2线程均分到这2个进程中,并启动对应工作节点上的2个工作槽。
[0059]最后提交拓扑3(2worker),占用2个slots。同理sort-slots方法返回的排序结果为:{[SI 6702][S2 6702][S3 6702][S1 6703][S2 6703][S3 6703] },该拓扑占用前 2 个slots: {[SI 6702] [S2 6702]}。如图2(b)所示,B类调度器总是将拓扑均匀分配到集群中每个工作节点上,实现集群正常运转情况下节点间的负载均衡。
[0060]③F-Storm 集群
[0061]先后提交拓扑1、拓扑2和拓扑3,如图2(c)所示,集群正常运转的情况下,三个拓扑作业的调度情况同2(b)完全相同,维持节点间的负载均衡。
[0062]2)场景二: B类Storm集群和F-Storm集群在I)场景基础上,分别kill掉正在运行的拓扑作业2后,两类集群均出现负载不均衡的情况,提交新拓扑4的调度场景。
[0063]该场景初始时,两类Storm集群的节点SI被占用3个slots{[Sl 6700][S1 6701][SI 6702]},节点S2被占用2个slots{[S2 6700] [S2 6702]},节点S3被占用I个slots{ [S3
6700]} ο
[0064]①B类Storm集群
[0065]提交新拓扑4(3worker),占用3个slots。排序结果:{[S36701][S2 6701][S1
6703][S36702][S2 6703][S3 6703] },分配前 3 个 slots: {[S3 6701][S2 6701][S16703]},如图3(a)所示。
[0066]②F-Storm 集群
[0067]提交新拓扑4(3worker),占用3个slots。初始传入Slot-awareScheduler Rule中sort-slots 方法的集合为:{[SI 6703][S2 6701][S2 6703][S3 6701][S3 6702][S36703]},按照工作节点编号进行分组且分组间按照分组内元素个数降序排列,经过一次排序后的结果:{[[S3 6701][S3 6702][S3 6703]][[S2 6701][S2 6703]][[S1 6703]]},取出第一个分组内的第一个元素[S3 6701]。然后再对剩余的工作槽集合递归分组排序过程,每次排序取出的第一个元素均是集群中资源空闲最多地工作节点上的一个工作槽,最终返回槽感知的排序队列结果为:{[S3 6701][S2 6701][S3 6702][S1 6703][S2 6703][S3
6703]},分配给该拓扑4前3个工作槽:{[S3 6701][S2 6701][S3 6702]},如图3(b)所示。对比图3(a)和3(b),可知F-Storm集群在负载不均衡的情况下使工作节点间负载均衡,B类Storm集群反而使负载不均衡加重。
[0068]3)场景三:B类Storm集群和F-Storm集群在I)场景下,分别都加入新的工作节点S4后,且S4工作节点上的工作槽端口号与集群中其他工作节点上的工作槽端口号设置不一致。在两类Storm集群均出现负载不均衡的情况下,提交新拓扑作业5的调度场景。
[0069]该场景初始时,两类Storm集群的工作节点SI被占用3个slots{[Sl6700][S1
6701][S16702]},工作节点S2被占用3个slots{[S2 6700][S2 6701][S2 6702]},工作节点S3被占用2个slots{[S3 6700][S3 6701]},工作节点S4空闲。
[0070]①B类Storm集群
[0071 ] 提交新拓扑5(4worker),占用4个slots。!?类均分调度器中sort-slots方法的排序结果为:{[S4 6700][S3 6702][S2 6703][S1 6703][S4 6701][S3 6703][S4 6702][S4
6702]}。分配给该拓扑5前4个slots:{{[S46700][S3 6702][S2 6703][S1 6703]},如图4(a)所示。
[0072]②F-Storm 集群
[0073]提交新拓扑5(4worker),占用4个slotSaSlot-awareScheduler Rule中sort-slots方法的槽感知排序队列结果为:{[S4 6700][S4 6701][S3 6702][S4 6702][S1
6703][S26703] [S3 6703] [S4 6703]},分配给该拓扑前4个工作槽:{[S4 6700] [S4 6701][S3 6702][S4 6702]},如图4(b)所示。对比图4(a)和4(b),可知F-Storm集群在负载不均衡的情况下,在合并因子α约束内将新拓扑尽可能均分到资源空闲较多的工作节点,达到工作节点间负载均衡。相反,B类Storm集群使得新拓扑尽可能分配到每个工作节点上,势必会造成SI和S2工作节点负载更严重。
【主权项】
1.一种工作槽感知的Storm平台作业均分调度方法,其步骤为: 1)获取集群中需要任务调度的拓扑集合,及集群中所有空闲可利用的工作槽集合; 2)对该工作槽集合中的工作槽资源进行排序,将同一工作节点的工作槽分为同一组; 3)从当前工作槽剩余最多的分组中取出工作槽放入槽感知排序队列,然后更新每组工作槽的数量,直到工作槽集合为空; 4)对于该拓扑集合中的拓扑,根据该拓扑所设置的进程数、工作槽总数目Nw和已经分配的工作槽数目N1,计算该拓扑需要再申请的工作槽数目Nr = Nw-N1和需实际再分配的工作槽数目Na=Min(Nr,Nq) ;Nq为工作槽集合中的工作槽数目; 5)从该槽感知排序队列中顺序取出工作槽,并实时控制分配给该拓扑的工作槽中属于同一工作节点的工作槽数η占该拓扑工作槽总数Nw的比例不超过设定比例α,直至取出1个工作槽分配给该拓扑。2.如权利要求1所述的方法,其特征在于,步骤4)中,还获取该拓扑所设置的线程数和任务数;将线程、任务均分到各进程。3.如权利要求2所述的方法,其特征在于,利用Round-Robin策略使得线程、任务均分到各进程。4.如权利要求1所述的方法,其特征在于,α为拓扑任务单节点合并因子,取值范围为(0,1]。5.如权利要求4所述的方法,其特征在于,α由系统管理员设置,默认值为I。6.如权利要求1-5任一所述的方法,其特征在于,步骤5)中,如果满足工作槽数η占该拓扑工作槽总数Nw的比例不超过设定比例α,则取出满足条件的部分工作槽先分配给该拓扑。7.如权利要求1-5任一所述的方法,其特征在于,将该工作槽集合内的工作槽按照工作槽的工作节点编号进行分组。8.如权利要求1-5任一的方法,其特征在于,所述集群为Storm集群。9.如权利要求8所述的方法,其特征在于,所述集群为Storm集群包括A类Storm集群、B类Storm集群和F-Storm集群。10.如权利要求9所述的方法,其特征在于,所述A类Storm集群默认实施A类均分调度器,B类Storm集群默认实施B类均分调度器,F-Storm集群默认实施Slot-aware策略,α为合并因子。
【文档编号】G06F9/48GK106095573SQ201610404619
【公开日】2016年11月9日
【申请日】2016年6月8日
【发明人】沈晴霓, 钱文君, 杨雅辉, 吴中海
【申请人】北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1