分布式数据处理系统中缓解内存压力的调度方法和系统技术方案

技术编号:16037982 阅读:77 留言:0更新日期:2017-08-19 19:48
本发明专利技术公开了一种分布式数据处理系统中减缓内存压力的调度方法,包括:根据用户编程接口对键值对的操作特点分析内存使用规律,建立数据处理系统中的用户编程接口的内存使用模型;根据任务调用编程接口的顺序推测任务的内存使用模型;利用内存占用增长率区分不同的模型;根据当前运行的任务的内存使用模型和处理数据量,在内存压力大时预估每个任务对内存压力的影响,挂起影响大的任务,直到影响小的任务执行完成或者内存压力被释放。本发明专利技术通过在数据处理系统中实时监控和分析运行时的所有任务对内存压力的影响,提高了服务系统的可扩展性。

【技术实现步骤摘要】
分布式数据处理系统中缓解内存压力的调度方法和系统
本专利技术属于分布式系统领域,更具体地,涉及一种分布式数据处理系统中缓解内存压力的调度方法和系统。
技术介绍
分布式数据处理系统在大数据处理上的应用越来越广泛,发展也非常迅速,这得益于大多类型的数据处理系统都以高级面向对象语言开发,如Java,C#等。然而,一方面是硬件内存空间的限制,一方面是这类面向对象语言具有托管的执行环境,如JVM,.NET等,数据以对象形式存在内存,引入额外的引用、修饰数据等数据结构,导致内存膨胀问题突出。同时,托管环境通过垃圾回收操作自动管理内存,在内存膨胀的问题下,大量长生命周期对象存活在内存,导致托管环境频繁执行垃圾回收,内存资源利用率非常低,内存压力非常大。随着分布式数据处理系统的发展,基于内存的计算系统,如Spark、Flink等,将大量重要的中间数据缓存在内存来加速迭代计算应用。因此,在内存计算系统中,内存压力显得越来越突出。目前,主要采用的缓解内存计算系统中内存压力的方法是当内存压力较大时,从所有的任务重随机选择一部分任务,将任务持有的数据拆分为四个部分:本地数据结构、已处理的输入、未处理的输入、本文档来自技高网...
分布式数据处理系统中缓解内存压力的调度方法和系统

【技术保护点】
一种分布式数据处理系统中缓解内存压力的调度方法,其特征在于,包括以下步骤:(1)获取数据处理系统中的所有任务信息和内存信息,其中任务信息包括输入信息和输出信息,输入信息包括磁盘/网络输入信息、洗牌输入信息、缓存输入信息、以及联合输入信息,输出信息包括磁盘/网络输出信息、洗牌输出信息、以及缓存输出信息,内存信息包括任务的内存占用空间、JVM堆内存的占用空间、以及JVM堆内存的剩余空间;(2)从数据处理系统中获取所有正在运行的任务、以及每个任务所对应的输出信息和内存信息,并根据获取的输出信息和内存信息计算每个任务的内存占用增长;(3)针对所有任务中的每一个,判断其输入源是否是缓存输入或洗牌输入,如...

【技术特征摘要】
1.一种分布式数据处理系统中缓解内存压力的调度方法,其特征在于,包括以下步骤:(1)获取数据处理系统中的所有任务信息和内存信息,其中任务信息包括输入信息和输出信息,输入信息包括磁盘/网络输入信息、洗牌输入信息、缓存输入信息、以及联合输入信息,输出信息包括磁盘/网络输出信息、洗牌输出信息、以及缓存输出信息,内存信息包括任务的内存占用空间、JVM堆内存的占用空间、以及JVM堆内存的剩余空间;(2)从数据处理系统中获取所有正在运行的任务、以及每个任务所对应的输出信息和内存信息,并根据获取的输出信息和内存信息计算每个任务的内存占用增长;(3)针对所有任务中的每一个,判断其输入源是否是缓存输入或洗牌输入,如果是缓存输入或洗牌输入,则转入步骤(4),否则转入步骤(5);(4)获取该任务对应的数据集的总大小和数据总条数,获取该任务中已经被处理的数据的条数,并根据已经被处理的数据的条数计算对应的已处理的数据大小,然后转入步骤(6);(5)判断该任务的输入源是否是联合输入,如果不是,则直接获取该任务中已经被处理的数据的大小,然后转入步骤(6);如果是则分别统计每个输入源中已经被处理的数据的大小,并将统计得到的不同数据的大小进行累加,得到的和作为已处理的数据大小,然后转入步骤(6);(6)根据得到的已处理的数据大小和内存占用增长得到对应任务的内存占用增长率=内存占用增长/已处理的数据大小;(7)判断数据处理系统中内存信息中的JVM堆内存的占用空间是否超过溢出阈值,如果超过则转入步骤(8),否则转入步骤(9);(8)判断每个任务的内存占用空间是否超过JVM可分配给该任务的最大内存占用空间,如果超过,则挂起该任务,并将该任务添加到挂起队列,过程结束,否则转入下一个任务重复本步骤;(9)判断数据处理系统中内存信息中的JVM堆内存的占用空间是否大于等于压力阈值,如果是则转入步骤(10),否则执行挂起队列中的全部任务;(10)将所有任务按照其内存占用增长率进行升序排列得到任务集合,并获取JVM堆内存的剩余空间;(11)判断JVM堆内存的剩余空间是否大于0,如果是则从升序排列的所有任务中选取第一个任务,用JVM堆内存的剩余空间减去该任务所需剩余内存空间得到新的JVM堆内存的剩余空间,然后转入步骤(12),,否则将剩余的任务全部挂起,并将剩余的任务依次添加到挂起队列,然后转入步骤(13);(12)将当前任务从升序排列的任务集合中移除,并返回步骤(11)。(13)在一个任务被执行完毕时,从挂起队列中取出位于队首的任务执行。2.根据权利要求1所述的调度方法,其特征在于,任务信息是位于数据处理系统中的,内存信息是同时存在于数据处理系统和Java虚拟机中。3.根据权利要求1所述的调度方法,其特征在于,如果一个任务对应的输出信息是磁盘/网络输出信息,则该任务的内存占用增长为0;如果一个任务对应的输出信息是洗牌输出信息或缓存输出信息,则首先从数据处理系统中得到该任务的内存信息中的内存占用空间,然后用该值减去该任务上一次的内存占用空间,从而得到内存占用增长。4.根据权利要求...

【专利技术属性】
技术研发人员:石宣化金海张雄柯志祥
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

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

1