CN111538681B - Spark平台下基于最大化缓存增益的缓存替换方法 - Google Patents
Spark平台下基于最大化缓存增益的缓存替换方法 Download PDFInfo
- Publication number
- CN111538681B CN111538681B CN202010216293.2A CN202010216293A CN111538681B CN 111538681 B CN111538681 B CN 111538681B CN 202010216293 A CN202010216293 A CN 202010216293A CN 111538681 B CN111538681 B CN 111538681B
- Authority
- CN
- China
- Prior art keywords
- node
- cache
- cached
- gain
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种Spark平台下基于最大化缓存增益的缓存替换方法,该方法首先通过对有向无环图中各种操作的依赖性进行分析,提出了一个用于衡量缓存收益的缓存增益模型,目标是使其缓存增益最大化。然后在作业到达率已知的情况下采用取整舍入方法对该受背包约束的最大化问题求得离线最优近似解。最后在作业到达率未知的情况下,采用投影梯度上升方法获取每个缓存项应放置在缓存中的概率,从而获得满足缓存增益最大化的在线自适应缓存替换策略。此方法充分利用了系统资源,缩短了Spark应用的执行时间,提高了缓存命中率。
Description
技术领域
本发明涉及计算机大数据技术领域,具体涉及一种Spark平台下基于最大化缓存增益的缓存替换方法。
背景技术
随着大数据分析和云计算的兴起,基于集群的大规模数据处理已成为许多应用程序和服务的常见范例。数据并行计算框架如Apache Spark常常被用于大规模执行此类数据处理。在此类数据处理过程中大量输入数据集被运行,其中执行的作业也包括数百个相同的并行子任务。Spark计算框架处理这些大量数据所需的时间和资源是巨大的。然而,在这样的分布式环境中执行的作业通常具有显着的计算重叠,即处理相同数据的不同作业可能涉及共同的中间计算,这种计算重叠在实践中是自然产生的。最近来自行业内的数据记录显示,微软生产集群中有40%~60%的中间结果重计算工作,而Cloudera集群中高达78%的工作涉及数据的重新访问。
Spark最近已成为最有效率的基于内存的分布式数据处理平台之一,其中弹性分布式数据集RDD是一种基于分布式内存的抽象数据结构。RDD可以跨越集群中多个节点而将数据存储在分布式内存中。Spark并行计算框架是以非自动方式在其框架中实现缓存功能的,提交作业的开发人员决定需要缓存的中间计算结果,即决定哪些RDD需要被存储在基于RAM的缓存中。当RAM缓存已满后,进行缓存驱逐时使用最常见的LRU缓存驱逐策略驱逐某些RDD。当然开发人员也可以选择在Hadoop分布式文件系统(HDFS)上存储被驱逐的RDD,但需要额外的开销才能在HDFS上执行写操作。众所周知,缓存在RAM中的RDD可以被更快地检索重利用,但是由于开发人员没有显式缓存RDD,或者已经缓存而随后被驱逐,都会发生缓存未命中现象。在其中任何一种情况下,Spark都不得不承受大量的计算开销,即如果请求的RDD既不在RAM中也不存储在Hadoop分布式文件系统中,Spark会从起点开始进行重新计算。总的来说,缓存未命中现象会导致额外的延迟,无论是从Hadoop分布式文件系统读取还是完全重新计算丢失的RDD。如何在Spark平台下制定有效的缓存替换策略成为亟待解决的问题。目前关于Spark平台下缓存替换的研究普遍存在以下几个问题:①在进行缓存替换时考虑因素过于单一;②处理大规模密集型应用程序时缓存结果的不确定性;③缓存策略选取不当会极大降低Spark应用执行效率。
发明内容
本发明的目的就是针对现有技术的缺陷,提供一种Spark平台下基于最大化缓存增益的缓存替换方法,考虑由于缓存而减少的总工作量、作业到达率、缓存容量和缓存项的重计算成本等因素,有效降低Spark应用的平均执行时间,同时提高系统内存利用率与缓存命中率。
为实现上述目的,本发明所设计的Spark平台下基于最大化缓存增益的缓存替换方法包括如下步骤:
1)通过对Spark作业特有的有向无环图DAG进行分析,制定缓存增益目标函数,其中考虑了作业到达率λG、缓存容量大小K和缓存项的重计算成本tv等因素;
2)在作业到达率已知的情况下,采用取整舍入方法求得缓存增益函数的最优近似解,通过计算结点v被缓存的边缘概率yv将缓存增益函数转化为函数F(Y),从而构造出缓存增益函数F(x)的凸松弛,由于此时目标函数的约束条件不是凹松弛,因此将转化函数F(Y)近似定义为函数L(Y);
3)通过找到两个分数变量yv和yv′对近似函数L(Y)的最优解Y**执行舍入过程,最终产生一个近似整数解x′,并证明该近似整数解的缓存增益收敛于其最优解缓存增益的1-1/e近似范围内;
4)在作业到达率未知的情况下,通过将时间划分为相等长度T>0的时间段,计算每个结点v∈V被缓存的概率pv∈[0,1]|V|及结点后期重计算成本tv,从而生成近似函数L(Y)的一个关于状态向量p的子梯度的无偏估计;
5)收集一段时间内每个缓存项的被访问信息,随着作业的执行对某个缓存项应放置在缓存中的概率进行自适应调整,根据以上的无偏估计值,在每个测量周期结束时自适应调整状态向量p;
优选地,所述步骤1)中Spark应用预期的总工作量具体表现形式为:
其中,G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。缓存增益函数具体表现形式为:
其中,G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。根据Spark并行计算框架的作业处理流程可知,若结点v被缓存,当后续处理过程中再次利用到该结点的输出结果时,无需重新计算该结点及该结点的任何前驱结点。在最大化此函数的求解过程中受缓存容量大小的约束。Xu表示子节点u是否被缓存,若被缓存Xu=1,若不被缓存Xu=0;succ(v)是节点v的子节点,后续节点(子代节点)集合。在该公式中表示u是v的子节点的情况下进行计算。
优选地,所述步骤3)中采用取整舍入方法求得缓存增益函数的最优近似解的具体步骤包括:
3.1)计算结点v被缓存的边缘概率yv,计算方式为:
yv=Pψ[xv=1]=Eψ[xv]
其中ψ表示相应的联合概率分布,Pψ[·]表示结点v被缓存或者未被缓存的概率,Eψ[·]表示结点v被缓存或者未被缓存的期望,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。
3.2)为了构造缓存增益函数F(x)的凸松弛,将缓存增益函数转化为函数F(Y),计算方式如下:
其中作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0,Eψ[·]表示结点v被缓存或者未被缓存的期望。
3.3)此时目标函数限制条件转化为Sub.to:yv∈[0,1],由于此多线性松弛不是凹松弛,因此将转化函数F(Y)近似定义为函数L(Y):
其中作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,此时yv,yu∈[0,1]。
3.4)对近似函数L(Y)的最优解Y**执行舍入过程,给定一个分数解Y,则找到两个分数变量yv和yv′,使此解在这两个分数变量之间变化。
3.5)将至少一个分数变量取值为0或1,并且满足自变量取Y′时的缓存增益不能少于自变量取Y时的缓存增益。
3.6)不断重复步骤3.4)与3.5),直到不存在分数变量,最终产生一个近似整数解x′。
4.1)将时间划分为相等长度T>0的时间段,在此期间收集不同结点的访问统计信息,CG′表示结点历史访问记录,CG表示结点当前作业的结点访问记录。
4.2)根据不同结点的访问统计信息计算每个结点v∈V(每一个RDD)被缓存的概率pv∈[0,1]|V|。
4.3)当每一个长度为T的时间段结束时,需要调整每个结点的状态向量p=[pv]v∈V∈[0,1]|V|。
4.4)使用在一段时间内收集的结点访问信息计算结点后期重计算成本tv,计算方式如下:
tv=∑v∈Vcv(xv+∑u∈succ(v)xu≤1)
其中函数(A)的作用是当不等式A成立时,(A)为1,否则(A)为0。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。
其中Tv代表在一个持续时间段T内在结点v∈V处以上述方式计算的重计算成本tv的集合。
优选地,所述步骤5)中在第k个测量周期结束时,状态向量p自适应调整方式的计算方法为:
p(k+1)←ΦΘ(p(k)+γ(k)*z(p(k)))
其中γ(k)>0是一个增益因子,p(k)为状态向量p在第k个测量周期的状态,ΦΘ是放松约束集Θ对凸多面体的投影,因此其可以在多项式时间内被计算。pv∈[0,1]|V|表示每个结点v∈V被缓存的概率,sv表示结点v∈V的输出数据大小,以MB为单位。
优选地,所述步骤6)具体包括以下步骤:
6.4)证明此整数解的缓存增益可以保证在离线缓存决策最优解x*缓存增益的1-1/e近似范围内。
Spark平台下传统的缓存替换策略在进行缓存替换时考虑因素过于单一,导致这些缓存替换策略在某些特殊场景下并不适用。另外当Spark处理大规模密集型应用程序时,会为整个计算过程选择多个缓存策略。如果用户自行选择存储策略进行计算,结果将充满不确定性,中间结果是否应该缓存完全取决于用户经验。这种不确定性无法充分利用Spark的高性能优势。
本发明通过分析Spark作业有向无环图中各操作间存在依赖性的特点提出来基于最大化缓存增益的缓存替换方法。本调度方法首先通过对有向无环图中各种操作的依赖性进行分析,提出了一个用于衡量缓存收益的缓存增益模型,目标是使其缓存增益最大化。然后在作业到达率已知的情况下采用取整舍入方法对该受背包约束的最大化问题求得离线最优近似解。最后在作业到达率未知的情况下,采用投影梯度上升方法获取每个缓存项应放置在缓存中的概率,从而获得满足缓存增益最大化的在线自适应缓存替换策略。此方法充分利用了系统资源,缩短了Spark应用的执行时间,提高了缓存命中率。
附图说明
图1为本发明Spark平台下作业到达率已知时基于最大化缓存增益的缓存替换方法的流程图。
图2为本发明Spark平台下作业到达率未知时基于最大化缓存增益的缓存替换方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明,便于清楚地了解本发明,但它们不对本发明构成限定。
如图1所示,本发明提出的Spark平台下基于最大化缓存增益的缓存替换方法,是以当前Spark平台下的默认缓存替换方法为基础,结合Spark任务执行的特点而提出来的。如图1所示,本算法包括如下步骤:
1)通过对Spark作业特有的有向无环图DAG进行分析,制定缓存增益目标函数,其中考虑了作业到达率、缓存容量大小和缓存项的重计算成本等因素,具体步骤包括:
1.1)计算重新生成结点v所花费的时间cv,其中包括根据父结点重新计算和从磁盘读取两种情况,所花费的时间分别为cv′和cv *,计算方式如下:
cv′=endTime-startTime
cv *=SPM+DPM)·sv
cv=min(cv,(SPM+DPM)·sv)
其中时间cv为根据父结点重新计算的时间和从磁盘读取所花费的时间的最小值,startTime与endTime表示父结点完成操作的开始时间与结束时间,SPM与DPM分别表示每个结点的每MB数据进行序列化和反序列化所花费的时间,sv表示结点v的输出数据所占缓存空间的大小。
1.2)若所有结点都没有被缓存,计算作业G的总工作量W(G(V,E)):
其中有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。
1.3)计算Spark应用预期的总工作量,计算方式如下:
其中G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。
1.4)通过对Spark作业特有的有向无环图DAG进行分析,制定的衡量缓存增益的目标函数如下所示:
其中G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。sv表示结点v∈V的输出数据大小,以MB为单位,K为给定的缓存空间大小。
2)在作业到达率已知的情况下,采用取整舍入方法求得缓存增益函数的最优近似解,具体步骤包括:
2.1)计算结点v被缓存的边缘概率,计算方式为:
yv=Pψ[xv=1]=Eψ[xv]
其中ψ表示相应的联合概率分布,Pψ[·]表示结点v被缓存或者未被缓存的概率,Eψ[·]表示结点v被缓存或者未被缓存的期望,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。
2.2)为了构造缓存增益函数F(x)的凸松弛,将缓存增益函数转化为函数F(Y),计算方式如下:
其中作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0,Eψ[·]表示结点v被缓存或者未被缓存的期望。
2.3)此时目标函数限制条件转化为Sub.to:yv∈[0,1],由于此多线性松弛不是凹松弛,因此将转化函数F(Y)近似定义为函数L(Y):
其中作业G∈G′根据随机平稳过程以λG>0的速率到达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,此时yv,yu∈[0,1]。
2.4)对近似函数L(Y)的最优解Y**执行舍入过程,给定一个分数解Y,则找到两个分数变量yv和yv′,使此解在这两个分数变量之间变化。
2.5)将至少一个分数变量取值为0或1,并且满足自变量取Y′时的缓存增益不能少于自变量取Y时的缓存增益。
2.6)不断重复步骤2.4)与2.5),直到不存在分数变量,最终产生一个近似整数解x′。
3)证明步骤2)中所得缓存增益函数的近似整数解的缓存增益收敛于其最优解缓存增益的1-1/e近似范围内,如下述不等式所示:
其中x*为函数F(x)的最优解,Y*为函数F(Y)的最优解,Y**为函数L(Y)的最优解。x′为步骤2)得出的近似整数解。
4)在作业到达率未知的情况下,需要生成近似函数L(Y)的子梯度无偏估计,具体步骤如下:
4.1)将时间划分为相等长度T>0的时间段,在此期间收集不同结点的访问统计信息,CG′表示结点历史访问记录,CG表示结点当前作业的结点访问记录。
4.2)根据不同结点的访问统计信息计算每个结点v∈V(每一个RDD)被缓存的概率pv∈[0,1]|V|。
4.3)当每一个长度为T的时间段结束时,需要调整每个结点的状态向量p=[pv]v∈V∈[0,1]|V|。
4.4)使用在一段时间内收集的结点访问信息计算结点后期重计算成本tv,计算方式如下:
tv=∑v∈Vcv(xv+∑u∈succ(v)xu≤1)
其中函数(A)的作用是当不等式A成立时,(A)为1,否则(A)为0。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。
其中Tv代表在一个持续时间段T内在结点v∈V处以上述方式计算的重计算成本tv的集合。
5)收集一段时间内每个缓存项的被访问信息,随着作业的执行对某个缓存项应放置在缓存中的概率进行自适应调整,根据以上的无偏估计值,在第k个测量周期结束时,状态向量p自适应调整方式如下:
p(k+1)←ΦΘ(p(k)+γ(k)*z(p(k)))
其中γ(k)>0是一个增益因子,p(k)为状态向量p在第k个测量周期的状态,ΦΘ是放松约束集Θ对凸多面体的投影,因此其可以在多项式时间内被计算。pv∈[0,1]|V|表示每个结点v∈V被缓存的概率,sv表示结点v∈V的输出数据大小,以MB为单位。
6)计算每个缓存项应放置在缓存中的概率在每个时间段内的变化平均值,并采用概率舍入方法将每个变化平均值舍入为整数解,具体步骤如下:
6.4)证明此整数解的缓存增益可以保证在离线缓存决策最优解x*缓存增益的1-1/e近似范围内。
7)通过步骤6)所得到的每个整数解都代表一个新的缓存策略,基于上述不断调整的概率值不断构造出此时此刻满足缓存增益最大化的缓存策略。下面详述本发明的研究过程:
Spark并行计算框架是以非自动方式在其框架中实现缓存功能的,提交作业的开发人员决定需要缓存的中间计算结果,即决定哪些RDD需要被存储在基于RAM的缓存中。但是在处理由具有复杂依赖性的操作组成的作业时,确定要缓存哪些中间结果是一个亟待解决的难题。虽然目前有很多学者对Spark平台下的缓存替换策略进行研究,但是由于考虑因素单一及处理大规模密集型应用程序时缓存结果选择的不确定性使得这些缓存替换策略在某些特殊场景下并不适用。因此在Spark平台下进行缓存替换操作之前,通过对Spark作业的有向无环图DAG中各种操作的依赖性进行分析,提出一个衡量缓存增益的函数模型是必要的。此外通过最大化该缓存增益函数使得在多种场景下的Spark应用的平均执行时间、系统内存利用率和缓存命中率都得到有效保证。
缓存替换方法中的相关参数定义
(1)重新生成结点v所花费的时间cv:时间cv为根据父结点重新计算的时间和从磁盘读取所花费的时间的最小值,两种情况所花费的时间分别为cv′和cv *,其中startTime与endTime表示父结点完成操作的开始时间与结束时间,SPM与DPM分别表示每个结点的每MB数据进行序列化和反序列化所花费的时间,sv表示结点v的输出数据所占缓存空间的大小。时间cv计算方式如下:
cv′=endTime-startTime (1)
cv *=SPM+DPM)·sv (2)
cv=min|cv′,(SPM+DPM)·sv)
(3)
(2)缓存策略xv∈{0,1}:表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。
tv=∑v∈Vcv(xv+∑u∈succ(v)xu≤1) (5)
其中函数(A)的作用是当不等式A成立时,(A)为1,否则(A)为0。有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间。结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。代表在一个持续时间段T内在结点v∈V处以上述方式计算的tv的集合。
(5)各个结点v替换权值Qv:本发明所提缓存替换方法主要思想是优先考虑具有高请求率(高梯度分量)和低尺寸sv的结点v,且缓存该节点是否会减少大量的总工作量,即如果结点v具有较高的替换权值,则该结点应该进入缓存。
其中表示结点v∈V的请求率,即近似函数L(Y)对xv的偏导数,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结点v被缓存则xv=1,如果结点v不被缓存则xv=0。sv表示结点v∈V的输出数据大小,以MB为单位。G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达。Δ(ω)表示当结点v没有被缓存时,其执行所有作业过程中总工作量的差异。
本专利提出的Spark环境下基于最大化缓存增益的缓存替换方法,是以衡量缓存增益为基础结合取整舍入方法和概率舍入方法而提出来的。本方法首先通过对Spark作业的有向无环图DAG中各种操作的依赖性进行分析,提出了一个基于缓存增益概念的数学模型,旨在准确表明由于某种缓存策略而减少的总工作量,其中每个结点进行操作所花费的时间按照公式(1)-(3)计算。然后在作业到达率已知的情况下采用取整舍入方法对该具有背包约束的子模块最大化问题求得离线最优近似解。在作业到达率未知的情况下,根据公式(4)中的投影梯度上升方法获取每个RDD应放置在缓存中的概率的变化平均值。最后对各结点的变化平均值进行排序,并根据公式(7)-(8)给出的各结点的替换权值确定出满足缓存增益最大化的在线自适应缓存替换策略,并证明此策略的缓存增益收敛于离线缓存替换策略最优解缓存增益的1-1/e近似范围内。
调度方法的伪代码描述
(1)processJobs(G′)
(2)for所有的作业G∈G′
(3)processJob(G(V,E),C)函数执行所有作业G
(4)updateCache(CG,CG′)//CG′表示RDD历史访问记录,CG表示当前作业的RDD访问记录
(5)end for
(6)processJob(G(V,E),C)
(7)清除当前作业的RDD访问记录CG
(8)for所有结点v∈V
(9)将在DAG图中所有具有子结点的结点入栈
(10)while栈中元素不为空do
(11)对每个栈中元素进行出栈操作
(12)执行estimateCost(v)函数来计算结点重计算成本,并将每个结点的计算结果放入集合CG[v]中
(13)if结点v未被缓存then
(14)for结点v的所有子结点u do
(15)if结点u没有子结点then
(16)将结点u入栈
(17)end if
(18)end for
(19)end if
(20)进行结点的迭代执行
(21)end while
(22)end for
(23)estimateCost(v)
(24)结点的计算成本初始化为cost
(25)结点v的所有子结点入栈
(26)while栈内元素不为空时do
(27)栈内子结点进行出栈操作
(28)if该子结点未被缓存or该子结点没有子结点then
(29)cost=cost+该子结点的cost
(30)该子结点的所有子结点入栈
(31)end if
(32)end while
(33)return cost
(34)updateCache(CG,CG′)
(35)for所有属于CG′集合的结点vdo
(36)if v∈CG then
(37)CG′[v]=(1-β)*CG′[v]+β*CG[v]
(38)else
(39)CG′[v]=(1-β)*CG′[v]
(40)end if
(42)end for
由算法的伪代码描述可以看出,第3行在执行每个作业之后根据第4行的updateCache函数进行缓存内容的更新。由第34-42行的updateCache函数可以看出该函数综合考虑了结点历史成本分数和当前成本分数,其首先更新所有被访问的结点的成本,从而确定以使用衰减率β收集的上述状态向量p的变化平均值实现加权移动平均值的计算。由于实验中每个作业平均有6个阶段(stage),因此将衰减率β取值为0.6。第6-22行当以递归方式在每个作业中迭代结点时,调用第23-33行的辅助函数estimateCost来计算和记录该作业中每个结点的时间成本,这将被用来确定updateCache函数中的缓存内容。然后第14-18行遍历每个结点的子结点,一旦其所有子结点准备就绪,第20行开始访问并计算该结点。最后第41行updateCache函数通过对状态向量p的变化平均值进行排序,设定结点权值替换模型来驱逐低分结点并插入新的高分结点,从而刷新整个缓存空间。本说明书未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (7)
1.一种Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于包括以下步骤:
1)通过对Spark作业特有的有向无环图DAG进行分析,制定缓存增益目标函数,其中考虑了作业到达率、缓存容量大小和缓存项的重计算成本因素;
2)在作业到达率已知的情况下,采用取整舍入方法求得缓存增益函数的最优近似解,通过计算结点被缓存的边缘概率将缓存增益函数转化为函数F(Y),将转化后的函数定义为近似函数L(Y);
3)通过找到两个分数变量和对近似函数的最优解执行舍入过程,最终产生一个近似整数解,并证明该近似整数解的缓存增益收敛于其最优解缓存增益的近似范围内;
4)在作业到达率未知的情况下,通过将时间划分为相等长度的时间段,计算每个结点被缓存的概率及结点后期重计算成本,从而生成近似函数的一个关于状态向量的子梯度的无偏估计值;
5)收集一段时间内每个缓存项的被访问信息,随着作业的执行对某个缓存项应放置在缓存中的概率进行自适应调整,根据步骤4得到的无偏估计值,在每个测量周期结束时自适应调整状态向量;
6)计算每个缓存项应放置在缓存中的概率在每个时间段内的变化平均值,并采用概率舍入方法将每个变化平均值舍入为整数解;
7)根据上述状态向量的变化平均值的排序结果做出缓存决策,通过建立结点权重替换模型驱逐低分结点和插入新的高分结点,从而产生一个新的满足背包约束的缓存放置策略。
2.根据权利要求1所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤1)中Spark应用预期的总工作量具体表现形式为:
其中,G表示Spark作业,G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;
缓存增益函数具体表现形式为:
其中,G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;结点u是结点v的子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存;若结点v被缓存则xv=1,如果结点v不被缓存则xv=0;根据Spark并行计算框架的作业处理流程可知,若结点v被缓存,当后续处理过程中再次利用到该结点的输出结果时,无需重新计算该结点及该结点的任何前驱结点;在最大化缓存增益函数的求解过程中受缓存容量大小的约束;xu表示子结点u是否被缓存,若被缓存xu=1,若不被缓存xu=0;succ(v)是结点v的子结点集合。
3.根据权利要求2所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤3)中采用取整舍入方法求得缓存增益函数的最优近似解的具体步骤包括:
3.1)计算结点v被缓存的边缘概率yv,计算方式为:
yv=Pψ[xv=1]=Eψ[xv]
其中ψ表示相应的联合概率分布,Pψ[·]表示结点v被缓存或者未被缓存的概率,Eψ[·]表示结点v被缓存或者未被缓存的期望,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存;若结点v被缓存则xv=1,如果结点v不被缓存则xv=0;
3.2)为了构造缓存增益函数F(x)的凸松弛,将缓存增益函数转化为函数F(Y),计算方式如下:
其中作业G∈G′根据随机平稳过程以λG>0的速率到达;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;结点u是结点v的子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存;若结点v被缓存则xv=1,如果结点v不被缓存则xv=0,Eψ[·]表示结点v被缓存或者未被缓存的期望;
3.3)此时目标函数限制条件转化为Sub.to:yv∈[0,1],将转化函数F(Y)近似定义为函数L(Y):
其中作业G∈G′根据随机平稳过程以λG>0的速率到达;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;结点u是结点v的子结点,此时yv,yu∈[0,1];
3.4)对近似函数L(Y)的最优解Y**执行舍入过程,给定一个分数解Y,找到两个分数变量yv和yv',使此解在这两个分数变量之间变化;
3.5)将至少一个分数变量取值为0或1,并且满足自变量取Y'时的缓存增益不能少于自变量取Y时的缓存增益;
3.6)不断重复步骤3.4)与3.5),直到不存在分数变量。
4.根据权利要求3所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤4)中近似函数L(Y)的关于状态向量p的子梯度的无偏估计zv的计算方法包括以下步骤,其中p(k)表示第k个测量周期的状态向量:
4.1)将时间划分为相等长度T>0的时间段,在此期间收集不同结点的访问统计信息,CG'表示结点历史访问记录,CG表示结点当前作业的结点访问记录;
4.2)根据不同结点的访问统计信息计算每个结点v∈V被缓存的概率pv∈[0,1]|V|;
4.3)当每一个长度为T的时间段结束时,需要调整每个结点的状态向量p=[pv]v∈V∈[0,1]|V|;
4.4)使用在一段时间内收集的结点访问信息计算结点后期重计算成本tv,计算方式如下:
其中函数的作用是当不等式A成立时,为1,否则为0;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;结点u是结点v的子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存;若结点v被缓存则xv=1,如果结点v不被缓存则xv=0;
其中Γv代表在一个持续时间段T内在结点v∈V处以上述方式计算的重计算成本tv的集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216293.2A CN111538681B (zh) | 2020-03-25 | 2020-03-25 | Spark平台下基于最大化缓存增益的缓存替换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216293.2A CN111538681B (zh) | 2020-03-25 | 2020-03-25 | Spark平台下基于最大化缓存增益的缓存替换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538681A CN111538681A (zh) | 2020-08-14 |
CN111538681B true CN111538681B (zh) | 2022-11-01 |
Family
ID=71978746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010216293.2A Active CN111538681B (zh) | 2020-03-25 | 2020-03-25 | Spark平台下基于最大化缓存增益的缓存替换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538681B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433960B (zh) * | 2020-12-08 | 2022-06-21 | 四川长虹电器股份有限公司 | 一种异步基于版本控制的刷新级联缓存的方法 |
CN112597076B (zh) * | 2020-12-22 | 2022-10-14 | 中国科学院软件研究所 | 一种面向Spark的基于数据感知的缓存替换方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134714A (zh) * | 2019-05-22 | 2019-08-16 | 东北大学 | 一种适用于大数据迭代计算的分布式计算框架缓存索引 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631730B (zh) * | 2013-11-01 | 2016-04-27 | 深圳清华大学研究院 | 内存计算的缓存优化方法 |
US10455045B2 (en) * | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
CN108009008B (zh) * | 2016-10-28 | 2022-08-09 | 北京市商汤科技开发有限公司 | 数据处理方法和系统、电子设备 |
CN107220188B (zh) * | 2017-05-31 | 2020-10-27 | 中山大学 | 一种自适应缓冲块替换方法 |
US10671436B2 (en) * | 2018-05-02 | 2020-06-02 | International Business Machines Corporation | Lazy data loading for improving memory cache hit ratio in DAG-based computational system |
-
2020
- 2020-03-25 CN CN202010216293.2A patent/CN111538681B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134714A (zh) * | 2019-05-22 | 2019-08-16 | 东北大学 | 一种适用于大数据迭代计算的分布式计算框架缓存索引 |
Also Published As
Publication number | Publication date |
---|---|
CN111538681A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078395B (zh) | 一种基于张量的深度学习gpu内存管理优化方法及系统 | |
CN112835698B (zh) | 一种基于异构集群的请求分类处理的动态负载均衡方法 | |
CN111124689A (zh) | 一种集群中容器资源动态分配方法 | |
CN111538681B (zh) | Spark平台下基于最大化缓存增益的缓存替换方法 | |
Jacquelin et al. | On optimal tree traversals for sparse matrix factorization | |
CN115994567B (zh) | 一种深度神经网络模型并行计算任务异步调度方法 | |
CN113485826B (zh) | 一种边缘服务器负载均衡方法、系统 | |
CN112632615B (zh) | 基于混合云环境的科学工作流数据布局方法 | |
CN109710372B (zh) | 一种基于猫头鹰搜索算法的计算密集型云工作流调度方法 | |
CN112015765B (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
CN116112563A (zh) | 一种基于流行度预测的双策略自适应缓存替换方法 | |
CN116225708A (zh) | 一种gpu资源调度方法及装置 | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
CN112597076B (zh) | 一种面向Spark的基于数据感知的缓存替换方法及系统 | |
CN116820730B (zh) | 多引擎计算系统的任务调度方法、装置及存储介质 | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
Aksenova et al. | The models and methods of optimal control of three work-stealing deques located in a shared memory | |
EP3859611B1 (en) | Method, apparatus and device for updating convolutional neural network using gpu cluster | |
CN112232401A (zh) | 一种基于差分隐私及随机梯度下降的数据分类方法 | |
CN116737370A (zh) | 一种多资源调度方法、系统、存储介质及终端 | |
CN113434267B (zh) | 云计算工作流动态调度方法、装置、设备及存储介质 | |
CN115391047A (zh) | 资源调度方法及装置 | |
Li et al. | Job placement strategy with opportunistic resource sharing for distributed deep learning clusters | |
Tripathy et al. | Scaling betweenness centrality in dynamic graphs | |
CN112328355B (zh) | 一种针对长寿命容器的自适应最优内存预留估计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |