[go: up one dir, main page]

CN111538681A - Spark平台下基于最大化缓存增益的缓存替换方法 - Google Patents

Spark平台下基于最大化缓存增益的缓存替换方法 Download PDF

Info

Publication number
CN111538681A
CN111538681A CN202010216293.2A CN202010216293A CN111538681A CN 111538681 A CN111538681 A CN 111538681A CN 202010216293 A CN202010216293 A CN 202010216293A CN 111538681 A CN111538681 A CN 111538681A
Authority
CN
China
Prior art keywords
node
cache
cached
function
gain
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.)
Granted
Application number
CN202010216293.2A
Other languages
English (en)
Other versions
CN111538681B (zh
Inventor
李春林
张梦莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University of Technology WUT
Original Assignee
Wuhan University of Technology WUT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University of Technology WUT filed Critical Wuhan University of Technology WUT
Priority to CN202010216293.2A priority Critical patent/CN111538681B/zh
Publication of CN111538681A publication Critical patent/CN111538681A/zh
Application granted granted Critical
Publication of CN111538681B publication Critical patent/CN111538681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches 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平台下基于最大化缓存增益的缓存替换方法
技术领域
本发明涉及计算机大数据技术领域,具体涉及一种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的子梯度
Figure BDA0002424551240000031
的无偏估计;
5)收集一段时间内每个缓存项的被访问信息,随着作业 的执行对某个缓存项应放置在缓存中的概率进行自适应调整, 根据以上的无偏估计值,在每个测量周期结束时自适应调整状 态向量p;
6)计算每个缓存项应放置在缓存中的概率在每个时间段 内的变化平均值
Figure BDA0002424551240000041
并采用概率舍入方法将每个变化平均值 舍入为整数解;
7)根据上述状态向量p的变化平均值
Figure BDA0002424551240000042
的排序结果做出 缓存决策,即通过建立结点权重替换模型驱逐低分结点和插入 新的高分结点,从而产生一个新的满足背包约束x(k)∈{0,1}|V|的 缓存放置策略。
优选地,所述步骤1)中Spark应用预期的总工作量具体 表现形式为:
Figure BDA0002424551240000043
其中,G′表示要在Spark并行计算框架上运行的所有可能 作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到 达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重 新生成结点v所花费的时间。缓存增益函数具体表现形式为:
Figure BDA0002424551240000044
其中,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),计算方式如下:
Figure BDA0002424551240000061
其中作业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):
Figure BDA0002424551240000062
其中作业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)中近似函数L(Y)的关于状态向量p 的子梯度的无偏估计zv的计算方法为:
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。
4.5)根据重计算成本tv得出近似函数L(Y)的一个关于状 态向量p的子梯度
Figure BDA0002424551240000081
的无偏估计,计算方式如下:
Figure BDA0002424551240000082
其中Γv代表在一个持续时间段T内在结点v∈V处以上述 方式计算的重计算成本tv的集合。
优选地,所述步骤5)中在第k个测量周期结束时,状态 向量p自适应调整方式的计算方法为:
p(k+1)←ΦΘ(p(k)(k)*z(p(k)))
Figure BDA0002424551240000083
其中γ(k)>0是一个增益因子,p(k)为状态向量p在第k个测 量周期的状态,ΦΘ是放松约束集Θ对凸多面体的投影,因此 其可以在多项式时间内被计算。pv∈[0,1]|V|表示每个结点v∈V 被缓存的概率,sv表示结点v∈V的输出数据大小,以MB为单 位。
优选地,所述步骤6)具体包括以下步骤:
6.1)计算每个缓存项应放置在缓存中的概率在每个时间 段内的变化平均值
Figure BDA0002424551240000084
6.2)在每一个时间段T结束时,采用概率舍入方法将变化 平均值
Figure BDA0002424551240000085
舍入为整数解;
6.3)根据上述状态向量p的变化平均值
Figure BDA0002424551240000086
的排序结果做 出缓存决策,即通过建立结点权重替换模型驱逐低分结点和插 入新的高分结点,从而产生一个新的满足背包约束x(k)∈{0,1}|V|的缓存放置策略;
6.4)证明此整数解的缓存增益可以保证在离线缓存决策 最优解x*缓存增益的1-1/e近似范围内。
优选地,所述步骤6)中每个缓存项应放置在缓存中的概 率在每个时间段内的变化平均值
Figure BDA0002424551240000091
的计算方式为:
Figure BDA0002424551240000092
其中k表示第k个测量周期,p(l)表示状态向量p在第l个 测量周期的状态,γ(l)>0是一个增益因子。此时变化平均值满 足
Figure BDA0002424551240000093
并且是Θ中所有结点的凸组合。
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)):
Figure BDA0002424551240000111
其中有向无环图中的结点v用集合V表示,即v∈V,cv表 示重新生成结点v所花费的时间。
1.3)计算Spark应用预期的总工作量,计算方式如下:
Figure BDA0002424551240000112
其中G′表示要在Spark并行计算框架上运行的所有可能 作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到 达。有向无环图中的结点v用集合V表示,即v∈V,cv表示重 新生成结点v所花费的时间。
1.4)通过对Spark作业特有的有向无环图DAG进行分析, 制定的衡量缓存增益的目标函数如下所示:
Figure BDA0002424551240000121
Sub.to:
Figure BDA0002424551240000122
其中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),计算方式如下:
Figure BDA0002424551240000131
其中作业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):
Figure BDA0002424551240000132
其中作业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近似范围内,如下述 不等式所示:
Figure BDA0002424551240000141
其中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。
4.5)根据重计算成本tv得出近似函数L(Y)的一个关于状 态向量p的子梯度
Figure BDA0002424551240000155
的无偏估计,计算方式如下:
Figure BDA0002424551240000156
其中Γv代表在一个持续时间段T内在结点v∈V处以上述 方式计算的重计算成本tv的集合。
5)收集一段时间内每个缓存项的被访问信息,随着作业 的执行对某个缓存项应放置在缓存中的概率进行自适应调整, 根据以上的无偏估计值,在第k个测量周期结束时,状态向量 p自适应调整方式如下:
p(k+1)←ΦΘ(p(k)(k)*z(p(k)))
Figure BDA0002424551240000157
其中γ(k)>0是一个增益因子,p(k)为状态向量p在第k个测 量周期的状态,ΦΘ是放松约束集Θ对凸多面体的投影,因此 其可以在多项式时间内被计算。pv∈[0,1]|V|表示每个结点v∈V 被缓存的概率,sv表示结点v∈V的输出数据大小,以MB为单 位。
6)计算每个缓存项应放置在缓存中的概率在每个时间段 内的变化平均值,并采用概率舍入方法将每个变化平均值舍入 为整数解,具体步骤如下:
6.1)每个缓存项应放置在缓存中的概率在每个时间段内 的变化平均值
Figure BDA0002424551240000161
计算方式如下:
Figure BDA0002424551240000162
其中k表示第k个测量周期,p(l)表示状态向量p在第l个 测量周期的状态,γ(l)>0是一个增益因子。此时变化平均值满 足
Figure BDA0002424551240000163
并且是Θ中所有结点的凸组合。
6.2)在每一个时间段T结束时,本发明采用概率舍入方法 将变化平均值
Figure BDA0002424551240000164
舍入为整数解。
6.3)根据上述状态向量p的变化平均值
Figure BDA0002424551240000165
的排序结果做 出缓存决策,即通过建立结点权重替换模型驱逐低分结点和插 入新的高分结点,从而产生一个新的满足背包约束x(k)∈{0,1}|V|的缓存放置策略。
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。
(3)变化平均值
Figure BDA0002424551240000181
在每个时间段内每个缓存项应放置 在缓存中的概率的变化平均值,计算方式如下:
Figure BDA0002424551240000182
其中k表示第k个测量周期,p(l)表示状态向量p在第l个 测量周期的状态,γ(l)>0是一个增益因子。此时变化平均值满 足
Figure BDA0002424551240000183
并且是Θ中所有结点的凸组合。
(4)近似函数L(Y)的关于状态向量p的子梯度
Figure BDA0002424551240000184
的 无偏估计zv
tv=∑v∈Vcv(xv+∑u∈succ(v)xu≤1) (5)
Figure RE-GDA0002577243420000188
其中函数(A)的作用是当不等式A成立时,(A)为1,否则(A) 为0。有向无环图中的结点v用集合V表示,即v∈V,cv表示重 新生成结点v所花费的时间。结点u是结点v的后继结点即子结 点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存。若结 点v被缓存则xv=1,如果结点v不被缓存则xv=0。
Figure RE-GDA0002577243420000191
代表在一个 持续时间段T内在结点v∈V处以上述方式计算的tv的集合。
(5)各个结点v替换权值Qv:本发明所提缓存替换方法 主要思想是优先考虑具有高请求率(高梯度分量
Figure BDA0002424551240000191
)和低 尺寸sv的结点v,且缓存该节点是否会减少大量的总工作量, 即如果结点v具有较高的替换权值,则该结点应该进入缓存。
Figure RE-GDA0002577243420000193
Figure BDA0002424551240000193
其中Rratve表示结点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近似范围内。
调度方法的伪代码描述
Figure BDA0002424551240000201
Figure BDA0002424551240000211
Figure BDA0002424551240000221
由算法的伪代码描述可以看出,第3行在执行每个作业之 后根据第4行的updateCache函数进行缓存内容的更新。由第 34-42行的updateCache函数可以看出该函数综合考虑了结点 历史成本分数和当前成本分数,其首先更新所有被访问的结点 的成本,从而确定以使用衰减率β收集的上述状态向量p的变 化平均值
Figure BDA0002424551240000222
实现加权移动平均值的计算。由于实验中每个 作业平均有6个阶段(stage),因此将衰减率β取值为0.6。第 6-22行当以递归方式在每个作业中迭代结点时,调用第23-33 行的辅助函数estimateCost来计算和记录该作业中每个结点的 时间成本,这将被用来确定updateCache函数中的缓存内容。 然后第14-18行遍历每个结点的子结点,一旦其所有子结点准 备就绪,第20行开始访问并计算该结点。最后第41行 updateCache函数通过对状态向量p的变化平均值
Figure BDA0002424551240000231
进行排 序,设定结点权值替换模型来驱逐低分结点并插入新的高分结 点,从而刷新整个缓存空间。本说明书未作详细描述的内容属 于本领域专业技术人员公知的现有技术。

Claims (7)

1.一种Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于包括以下步骤:
1)通过对Spark作业特有的有向无环图DAG进行分析,制定缓存增益目标函数,其中考虑了作业到达率、缓存容量大小和缓存项的重计算成本因素;
2)在作业到达率已知的情况下,采用取整舍入方法求得缓存增益函数的最优近似解,通过计算结点被缓存的边缘概率将缓存增益函数转化为函数,将转化后的函数定义为近似函数;
3)通过找到两个分数变量和对近似函数的最优解执行舍入过程,最终产生一个近似整数解,并证明该近似整数解的缓存增益收敛于其最优解缓存增益的近似范围内;
4)在作业到达率未知的情况下,通过将时间划分为相等长度的时间段,计算每个结点被缓存的概率及结点后期重计算成本,从而生成近似函数的一个关于状态向量的子梯度的无偏估计;
5)收集一段时间内每个缓存项的被访问信息,随着作业的执行对某个缓存项应放置在缓存中的概率进行自适应调整,根据以上的无偏估计值,在每个测量周期结束时自适应调整状态向量;
6)计算每个缓存项应放置在缓存中的概率在每个时间段内的变化平均值,并采用概率舍入方法将每个变化平均值舍入为整数解;
7)根据上述状态向量的变化平均值的排序结果做出缓存决策,通过建立结点权重替换模型驱逐低分结点和插入新的高分结点,从而产生一个新的满足背包约束的缓存放置策略。
2.根据权利要求1所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤1)中Spark应用预期的总工作量具体表现形式为:
Figure FDA0002424551230000021
其中,G表示Spark作业,G′表示要在Spark并行计算框架上运行的所有可能作业的集合,作业G∈G′根据随机平稳过程以λG>0的速率到达;λG是指作业到达率有;向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;
缓存增益函数具体表现形式为:
Figure FDA0002424551230000022
其中,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.根据权利要求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),计算方式如下:
Figure FDA0002424551230000031
Figure FDA0002424551230000041
其中作业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):
Figure FDA0002424551230000042
其中作业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.根据权利要求3所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤4)中近似函数L(Y)的关于状态向量p的子梯度
Figure RE-FDA0002577243410000051
的无偏估计zv的计算方法包括以下步骤:
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,计算方式如下:
Figure RE-FDA0002577243410000052
其中函数(A)的作用是当不等式A成立时,(A)为1,否则(A)为0;有向无环图中的结点v用集合V表示,即v∈V,cv表示重新生成结点v所花费的时间;结点u是结点v的后继结点即子结点,xv∈{0,1}为定义的缓存策略,表示结点v是否被缓存;若结点v被缓存则xv=1,如果结点v不被缓存则xv=0;
4.5)根据重计算成本tv得出近似函数L(Y)的一个关于状态向量p的子梯度
Figure RE-FDA0002577243410000053
的无偏估计,计算方式如下:
Figure RE-FDA0002577243410000061
其中Tv代表在一个持续时间段T内在结点v∈V处以上述方式计算的重计算成本tv的集合。
5.根据权利要求4所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤5)中在第k个测量周期结束时,状态向量p自适应调整方式的计算方法为:p(k+1)←ΦΘ(p(k)(k)*z(p(k)))
Figure FDA0002424551230000062
其中γ(k)>0是一个增益因子,p(k)为状态向量p在第k个测量周期的状态,ΦΘ是放松约束集Θ对凸多面体的投影,因此其可以在多项式时间内被计算。pv∈[0,1]|V|表示每个结点v∈V被缓存的概率,sv表示结点v∈V的输出数据大小,以MB为单位。
6.根据权利要求5所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤6)具体包括以下步骤:
6.1)计算每个缓存项应放置在缓存中的概率在每个时间段内的变化平均值
Figure FDA0002424551230000063
6.2)在每一个时间段T结束时,采用概率舍入方法将变化平均值
Figure FDA0002424551230000064
舍入为整数解;
6.3)根据上述状态向量p的变化平均值
Figure FDA0002424551230000065
的排序结果做出缓存决策,即通过建立结点权重替换模型驱逐低分结点和插入新的高分结点,从而产生一个新的满足背包约束x(k)∈{0,1}|V|的缓存放置策略;
6.4)证明此整数解的缓存增益可以保证在离线缓存决策最优解x*缓存增益的1-1/e近似范围内。
7.根据权利要求6所述的Spark平台下基于最大化缓存增益的缓存替换方法,其特征在于所述步骤6)中每个缓存项应放置在缓存中的概率在每个时间段内的变化平均值
Figure FDA0002424551230000071
的计算方式为:
Figure FDA0002424551230000072
其中k表示第k个测量周期,p(l)表示状态向量p在第l个测量周期的状态,γ(l)>0是一个增益因子;此时变化平均值满足
Figure FDA0002424551230000073
并且是Θ中所有结点的凸组合。
CN202010216293.2A 2020-03-25 2020-03-25 Spark平台下基于最大化缓存增益的缓存替换方法 Active CN111538681B (zh)

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 true CN111538681A (zh) 2020-08-14
CN111538681B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433960A (zh) * 2020-12-08 2021-03-02 四川长虹电器股份有限公司 一种异步基于版本控制的刷新级联缓存的方法
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统
CN114691302A (zh) * 2022-04-21 2022-07-01 南京大学 一种面向大数据处理的动态缓存替换方法及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631730A (zh) * 2013-11-01 2014-03-12 深圳清华大学研究院 内存计算的缓存优化方法
CN107220188A (zh) * 2017-05-31 2017-09-29 莫倩 一种自适应缓冲块替换方法
US20180069944A1 (en) * 2016-09-06 2018-03-08 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
CN108009008A (zh) * 2016-10-28 2018-05-08 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN110134714A (zh) * 2019-05-22 2019-08-16 东北大学 一种适用于大数据迭代计算的分布式计算框架缓存索引
US20190340016A1 (en) * 2018-05-02 2019-11-07 International Business Machines Corporation Lazy data loading for improving memory cache hit ratio in dag-based computational system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631730A (zh) * 2013-11-01 2014-03-12 深圳清华大学研究院 内存计算的缓存优化方法
US20180069944A1 (en) * 2016-09-06 2018-03-08 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
CN108009008A (zh) * 2016-10-28 2018-05-08 北京市商汤科技开发有限公司 数据处理方法和系统、电子设备
CN107220188A (zh) * 2017-05-31 2017-09-29 莫倩 一种自适应缓冲块替换方法
US20190340016A1 (en) * 2018-05-02 2019-11-07 International Business Machines Corporation Lazy data loading for improving memory cache hit ratio in dag-based computational system
CN110134714A (zh) * 2019-05-22 2019-08-16 东北大学 一种适用于大数据迭代计算的分布式计算框架缓存索引

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
魏赟等: "Spark中一种高效RDD自主缓存替换策略研究", 《计算机应用研究》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433960A (zh) * 2020-12-08 2021-03-02 四川长虹电器股份有限公司 一种异步基于版本控制的刷新级联缓存的方法
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统
CN114691302A (zh) * 2022-04-21 2022-07-01 南京大学 一种面向大数据处理的动态缓存替换方法及设备

Also Published As

Publication number Publication date
CN111538681B (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
CN114780233B (zh) 基于微服务链路分析和强化学习的调度方法及装置
Wang et al. Distributed machine learning with a serverless architecture
CN111078395B (zh) 一种基于张量的深度学习gpu内存管理优化方法及系统
CN114358267B (zh) 一种降低深度神经网络训练过程中gpu内存占用的方法
CN109960576A (zh) 一种面向cpu-gpu异构的低能耗任务调度策略
CN116820730B (zh) 多引擎计算系统的任务调度方法、装置及存储介质
CN110929627A (zh) 基于宽模型稀疏数据集的高效gpu训练模型的图像识别方法
CN111538681A (zh) Spark平台下基于最大化缓存增益的缓存替换方法
Gross et al. Massively parallel multicanonical simulations
CN112597076A (zh) 一种面向Spark的基于数据感知的缓存替换方法及系统
CN110069502A (zh) 基于Spark架构的数据均衡分区方法及计算机存储介质
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
CN117834624A (zh) 一种基于双重深度强化学习的算力分发网络在线调度方法
CN109710372A (zh) 一种基于猫头鹰搜索算法的计算密集型云工作流调度方法
CN109241298B (zh) 语义数据存储调度方法
CN118734720A (zh) 一种机器学习优化设计方法及系统
CN115858173A (zh) 一种大型深度学习模型训练的gpu内存瓶颈改进方法
CN119271398A (zh) 面向深度强化学习模型训练的异构算力资源配置优化方法
CN112882917B (zh) 一种基于贝叶斯网络迁移的虚拟机服务质量动态预测方法
Wen et al. A swap dominated tensor re-generation strategy for training deep learning models
Aksenova et al. The models and methods of optimal control of three work-stealing deques located in a shared memory
Yue et al. Parallel algorithm of improved FunkSVD based on spark
Beaumont et al. Madpipe: Memory aware dynamic programming algorithm for pipelined model parallelism
CN118426943A (zh) 一种基于强化学习的大数据平台任务调度方法、系统、设备及介质
CN112232401A (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