本发明专利技术公开了一种面向Spark的基于数据感知的缓存替换方法,属于软件技术领域,通过分析Spark框架的应用数据依赖关系和历史执行信息,获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数,基于这些因素建立权重模型,计算出数据块的权重;将数据块权重值从小到大排序,选择权重值较小数据且与待缓存的数据块不属于同一个RDD的数据块进行缓存替换。本发明专利技术针对现有应用负载特征多样性,应用对内存资源需求的持续变化性,动态感知用户负载特征,并根据历史运行信息,计算得到的权重值,衡量缓存替换最合适的数据,并实时结合当前内存资源情况作出替换决定,实现Spark框架缓存管理机制的优化。
【技术实现步骤摘要】
一种面向Spark的基于数据感知的缓存替换方法及系统
本专利技术涉及一种面向Spark框架的基于数据感知的权重模型缓存替换方法及系统,属于软件
技术介绍
伴随海量数据递增及业务日益复杂,人们对数据处理的要求日益增加。相对于早期的通用并行分布式计算框架(例如Hadoop),基于内存的分布式计算框架Spark在处理机器学习、图计算等领域中的迭代计算、交互式数据查询、并行计算等方面非常高效。尤其是基于内存的大数据处理平台往往通过缓存有效的数据在内存中以备复用来提高应用速度。面对CPU密集型应用场景时,创建对象过多会容易填满内存,引起GC(GarbageCollection)问题,系统会寻找不再使用的对象进行回收,降低程序执行性能。同时,当缓存的分区数据占满了内存,系统将启用缓存替换对分区数据作出替换决定:剔除旧数据缓存新数据。维持有价值的数据缓存在内存中,及时剔除不必要数据释放内存空间是提升应用程序执行性能的重要手段之一。缓存替换策略丰富多样,根据不同的历史信息(时间或者频率)预测未来数据的访问模式。LRU(LeastRecentlyUsed)表示基于最少最长时间未被访问的缓存数据块进行淘汰;LRU作是一种常用的缓存置换算法,被广泛应用系统设计中,同时也应用到各个计算框架或者平台上。Spark计算框架中的LRU算法核心思想就是当缓存空间被占满时,如果再次发生缓存失效,就将最近最少使用的数据从缓存空间中剔除以增加可用的缓存空间来缓存新数据。LRU仅仅考虑内存中的数据被访问的时间因素,将长期未被访问的数据被剔除。缓存数据的有效性除了考虑被访问时间的单一因素外,还需要考虑更多其他因素。Spark提供抽象弹性分布式数据集RDD,并通过谱系图(lineagegraph)来记录这些不同RDD之间的依赖关系。用户具体的应用逻辑表现为一系列数据的RDD转换处理。可以动态获取用户应用程序本身的RDD依赖关系,以及其他历史执行信息等。其他传统的缓存替换策略如LFU(LeastFrequencyUsed)缓存的数据块基于最少频率未被访问进行淘汰,决策缓存数据有效性时仅仅考虑被访问频率这一单一因素;LRFU(L.Dongheeetal.,"LRFU:aspectrumofpoliciesthatsubsumestheleastrecentlyusedandleastfrequentlyusedpolicies,"IEEETransactionsonComputers,vol.50,no.12,pp.1352-1361,2001)算法考虑到了数据块的计算成本和大小,但并没有考虑到数据块的使用次数。根据单一维度(时间或频率或使用次数)的缓存替换策略难以适应各种工作负载场景。通过上述分析,LFU、LRFU等机制做出替换决定选择的有效缓存数据优势不明显。大数据应用的负载特征往往是动态的,面对复杂应用时,尤其在有限的内存资源中,集成在Spark框架中的缓存替换策略LRU未考虑分区数据计算代价、数据依赖关系、分区依赖次数等因素,从而难以选择合理的数据持久化在内存中以备后续作业计算所复用。用户程序提交到集群,应用执行表现为对各个节点上的数据进行处理,并且诸多分布式应用很多都是重复地对不同数据进行相同的运算步骤,结合Spark的编程特性,可以基于执行前生成的谱系图进行来评估合理的数据在内存中,以获得更好的性能。因此,由于应用负载的动态变化特性,以及Spark特殊的编程特性,面向Spark分布式计算框架,设计高效的缓存替换方法及系统十分重要并具有技术可实现性。
技术实现思路
本专利技术为克服现有技术的不足,提供一种面向Spark的基于数据感知的缓存替换方法及系统,通过数据块的计算用时、占用内存空间大小、被依赖次数和已被使用次数等影响因素来建立权重模型,根据权重值来定性衡量数据块的缓存重要性程度,权重值越大,缓存的意义越大,权重值越小的数据块更有可能被替换出去。为实现上述目的,本专利技术的技术方案为:一种面向Spark的基于数据感知的缓存替换方法,包括以下步骤:分析Spark框架的应用数据依赖关系和历史执行信息,获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数;根据数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数,计算内存中数据块的权重;对于待缓存的新数据块,选择与该新数据块不属于同一个抽象弹性分布式数据集RDD的内存中数据块进行缓存替换,替换步骤包括:按照内存中数据块权重值从小到大,选出权重值最小且非0的一个内存中数据块并释放,若释放出的内存空间小于该新数据块的占用内存空间大小,则继续释放下一个内存中数据块,直至释放出的内存空间大于等于该新数据块的占用内存空间大小,再将该新数据块缓存至内存,替换掉释放的上述内存中数据块;若依次释放出全部内存中数据块后,其释放的内存空间仍小于该新数据块的占用内存空间大小,则放弃缓存该新数据块,并将全部原内存中数据块返回至内存。进一步地,从Spark框架的有向无环图中获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数。进一步地,通过插桩方法获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数。进一步地,对于数据块的计算用时,将计算用时更久的数据块缓存在内存中。进一步地,对于数据块的被依赖次数,若数据块只被一个作业计算所依赖,则不进行缓存;若数据块被两个或两个以上的不同作业计算所依赖,则进行缓存。进一步地,通过一权重表维护内存中数据块的权重值,权重表中的数据块权重的初始值为0。进一步地,向内存中缓存新数据块后,计算出其权重值,并更新权重表中的值;将内存中数据块释放后,其在权重表中的值置为0;将原内存中数据块返回至内存后,恢复该数据块的权重。进一步地,权重表中按照权重值从小到大排序。进一步地,当释放出多个内存中数据块时,这些内存中数据块属于同一个RDD或属于不同的RDD。进一步地,释放内存中数据块时,先将该内存中数据块从内存中取出,临时存放在等候区列表中,若释放出的内存空间大于等于新数据块的占用内存空间大小,则将该内存中数据块从等候区列表中移除。一种面向Spark的基于数据感知的缓存替换系统,包括:分析器,分析Spark框架的应用数据依赖关系和历史执行信息,获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数;控制器,根据数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数构建数据块的权重模型,通过该权重模型计算内存中数据块的权重;决策器,按照内存中数据块的权重值从小到大,选择与待缓存的新数据块不属于同一个抽象弹性分布式数据集RDD的内存中数据块作为替换对象,决定替换的步骤包括:按照数据块权重值从小到大,选出权重值最小且非0的一个内存中数据块决定释放,若释放出的内存空间小于该新数据块的占用内存空间大小,则决定继续释放下一个内存中数据块,直至释放出的内存空间大于等于该新数据块的占用内存空间大小,再决定将该新数据块本文档来自技高网...
【技术保护点】
1.一种面向Spark的基于数据感知的缓存替换方法,其特征在于,包括以下步骤:/n分析Spark框架的应用数据依赖关系和历史执行信息,获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数;/n根据数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数,计算内存中数据块的权重;/n对于待缓存的新数据块,选择与该新数据块不属于同一个抽象弹性分布式数据集RDD的内存中数据块进行缓存替换,替换步骤包括:/n按照内存中数据块权重值从小到大,选出权重值最小且非0的一个内存中数据块并释放,若释放出的内存空间小于该新数据块的占用内存空间大小,则继续释放下一个内存中数据块,直至释放出的内存空间大于等于该新数据块的占用内存空间大小,再将该新数据块缓存至内存,替换掉释放的上述内存中数据块;/n若依次释放出全部内存中数据块后,其释放的内存空间仍小于该新数据块的占用内存空间大小,则放弃缓存该新数据块,并将全部原内存中数据块返回至内存。/n
【技术特征摘要】
1.一种面向Spark的基于数据感知的缓存替换方法,其特征在于,包括以下步骤:
分析Spark框架的应用数据依赖关系和历史执行信息,获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数;
根据数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数,计算内存中数据块的权重;
对于待缓存的新数据块,选择与该新数据块不属于同一个抽象弹性分布式数据集RDD的内存中数据块进行缓存替换,替换步骤包括:
按照内存中数据块权重值从小到大,选出权重值最小且非0的一个内存中数据块并释放,若释放出的内存空间小于该新数据块的占用内存空间大小,则继续释放下一个内存中数据块,直至释放出的内存空间大于等于该新数据块的占用内存空间大小,再将该新数据块缓存至内存,替换掉释放的上述内存中数据块;
若依次释放出全部内存中数据块后,其释放的内存空间仍小于该新数据块的占用内存空间大小,则放弃缓存该新数据块,并将全部原内存中数据块返回至内存。
2.如权利要求1所述的方法,其特征在于,通过插桩方法获取数据块的被依赖次数、占用内存空间大小、计算用时和被引用次数。
3.如权利要求1所述的方法,其特征在于,计算内存中数据块权重的公式如下:
其中,Weighti表示第i个数据块的权重,costi表示第i个数据块的计算用时,refi表示第i个数据块的被依赖次数,sizei表示第i个数据块的占用内存空间大小,pastmodi表示第i个数据块的被引用次数。
4.如权利要求1所述的方法,其特征在于,对于数据块的计算用时,将计算用时更久的数据块缓存在内存中。
5.如权利要求1所述的方法,其特征在于,对于数据块的被依赖次数,若数据块只被一个作业计算所依赖,则不进行缓存;若数据块被两个或两个以上的不同作业计算所依赖,则进行缓存。
6.如权利要求1所述的...
【专利技术属性】
技术研发人员:黄涛,钟华,魏峻,李慧,郑莹莹,唐震,许利杰,王伟,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。