CN115145841B - 一种应用于Spark计算平台中的降低内存争用的方法 - Google Patents

一种应用于Spark计算平台中的降低内存争用的方法 Download PDF

Info

Publication number
CN115145841B
CN115145841B CN202210843160.7A CN202210843160A CN115145841B CN 115145841 B CN115145841 B CN 115145841B CN 202210843160 A CN202210843160 A CN 202210843160A CN 115145841 B CN115145841 B CN 115145841B
Authority
CN
China
Prior art keywords
memory
rdd
persistence
rdds
acceleration
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
Application number
CN202210843160.7A
Other languages
English (en)
Other versions
CN115145841A (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.)
Henan University
Original Assignee
Henan University
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 Henan University filed Critical Henan University
Priority to CN202210843160.7A priority Critical patent/CN115145841B/zh
Publication of CN115145841A publication Critical patent/CN115145841A/zh
Application granted granted Critical
Publication of CN115145841B publication Critical patent/CN115145841B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0877Cache access modes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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计算平台中的降低内存争用的方法。该方法包括:步骤1:计算内存中所有持久化RDD的价值,并按照价值高低对所有RDD进行排序形成优先队列;步骤2:若监控内存状态获知内存达到瓶颈,则执行步骤3;步骤3:循环释放所述优先队列中价值较低的RDD;步骤4:在进行当前循环释放操作后,若判断获知存在空闲的处理器核,则继续执行步骤3,反之则执行步骤5;步骤5:计算将当前需要持久化的RDD分别持久化至内存中时的内存持久化加速效用和持久化至硬盘中时的硬盘持久化加速效用;步骤6:基于内存持久化加速效用和硬盘持久化加速效用,采用贪心算法求解当前程序中所有需要缓存的RDD的存储位置。

Description

一种应用于Spark计算平台中的降低内存争用的方法
技术领域
本发明涉及分布式计算平台性能优化技术领域,尤其涉及一种应用于Spark计算平台中的降低内存争用的方法。
背景技术
分布式计算平台执行性能一直以来都是一个研究热点,基于内存计算的Spark计算平台极大提升执行性能。Spark自1.6版本后采用统一内存管理模型,通过执行区和存储区共享方式,在一定程度上提升内存利用率。然而,集群内存资源有限,统一内存管理模型中,容易出现内存争用的问题。如图1所示的内存争用示意图,最初为“空闲”状态,此刻“执行区”和“存储区”都有空闲;随着内存使用率上升,内存出现“借用”状态,即“执行区”内存不足则会借用“存储区”一方的内存,反之亦然;随着内存使用率继续增加,则内存达到“瓶颈”状态,此刻两个区域的内存均不足,此时两个区域就会争用内存。
从图1可知,内存瓶颈导致频繁争用,该情况会严重影响程序执行效率。由于内存资源成本昂贵,程序执行对编程人员不透明等因素,如何降低内存争用成为一个研究问题。考虑分区大小,存储时间,使用次数,计算代价等因素,一些学者设计新的缓存替换算法,例如基于重用度的RDD加速效用度量方法,一些学者通过选择、替换和清理的途径,最大化内存中存储的RDD加速效用。然而,当内存压力持续增加,基于改进替换算法思想的策略并不能取得良好的优化效果。
发明内容
针对内存争用导致程序执行效率降低的问题,本发明提出了一种应用于Spark计算平台中的降低内存争用的方法。
本发明提供的一种应用于Spark计算平台中的降低内存争用的方法,包括:
步骤1:计算内存中所有持久化RDD的价值,并按照价值高低对所有RDD进行排序形成优先队列;
步骤2:若监控内存状态获知内存达到瓶颈,则执行步骤3;
步骤3:循环释放所述优先队列中价值较低的RDD;
步骤4:在进行当前循环释放操作后,若判断获知存在空闲的处理器核,则继续执行步骤3,反之则执行步骤5;
步骤5:计算将当前需要持久化的RDD分别持久化至内存中时的内存持久化加速效用和持久化至硬盘中时的硬盘持久化加速效用;
步骤6:基于内存持久化加速效用和硬盘持久化加速效用,采用贪心算法求解当前程序中所有需要缓存的RDD的存储位置。
进一步地,步骤1中具体包括:
步骤1.1:通过预执行分析DAG执行逻辑,获取每个持久化RDD的引用频率;
步骤1.2:利用定时器获取每个持久化RDD处于非持久化状态时的计算时间代价;
步骤1.3:每个持久化RDD的引用频率和计算时间代价的乘积即为每个持久化RDD的价值。
进一步地,步骤2中,若存在空闲的CPU核并且在将当前需要持久化的RDD持久化至内存中时发生溢写时,则认为内存达到瓶颈。
进一步地,步骤5具体包括:
步骤5.1:将目标RDD计算路径中的中间RDD记作rj,按照公式(1)计算rj的持久化加速收益Gain(rj):
Gain(rj)=(fnj-1)×[time(RDDps=false)-time(RDDps=true)]   (1)
其中,fnj表示rj的引用频率,time(RDDps=false)表示rj处于非持久化状态时的计算时间代价,time(RDDps=true)表示rj处于持久化状态时的计算时间代价;
步骤5.2:按照公式(2)计算rj的内存争用损失I(rj,setτ):
Figure BDA0003751827120000021
其中,setτ表示内存上与rj相同大小的RDD分区集合,设定setτ中的RDD的引用频率分别为{fac1,fac2,…,facτ};OldHeapSize表示堆栈大小;q表示垃圾回收系数;
步骤5.3:按照公式(3)计算将rj持久化至内存中时的内存利用率u(sizej):
Figure BDA0003751827120000031
其中,sizej表示rj的大小,usage_memo表示内存已占用空间大小,max_memo表示内存总空间大小;
步骤5.4:按照公式(4)计算将rj持久化至内存中时的内存争用发生概率P{X=contention|u(sizej)}:
P{X=contention|u(sizej)}=sigmoid(u(sizej))             (4)
步骤5.5:按照公式(5)计算将rj持久化至内存中时的内存持久化加速效用Umem
Umem=Gain(rj)-P{X=contention|u(sizej)}×I(rj,setτ)(5)。
进一步地,步骤5具体还包括:
步骤5.6:按照公式(6)计算rj持久化至硬盘中时的硬盘持久化加速效用Udisk
Figure BDA0003751827120000032
其中,vdisk表示硬盘传输速度。
进一步地,步骤6具体包括:
步骤6.1:针对当前程序中所有需要缓存的RDD,逐一执行步骤6.2,直至处理完所有的RDD;
步骤6.2:针对第
Figure BDA0003751827120000033
个需要缓存的RDD,按照公式(7)计算前
Figure BDA0003751827120000034
个已缓存的RDD的缓存加速效用
Figure BDA0003751827120000035
并定义公式(8)所示的子问题,根据贪心算法求取所述子问题的最优解,所述最优解对应的存储位置即为当前需要缓存的RDD的存储位置:
Figure BDA0003751827120000036
Figure BDA0003751827120000037
其中,λ表示前
Figure BDA0003751827120000038
个已缓存的RDD中缓存至内存中的RDD数量;
Figure BDA0003751827120000039
表示将第i个RDD持久化至内存时的内存持久化加速效用,
Figure BDA00037518271200000310
表示将第j个RDD持久化至硬盘时的硬盘持久化加速效用;
Figure BDA00037518271200000311
表示将第
Figure BDA00037518271200000312
个RDD缓存在内存中时,前
Figure BDA0003751827120000041
个RDD的缓存加速效用;
Figure BDA0003751827120000042
表示表示将
Figure BDA0003751827120000043
个RDD缓存在硬盘中时,前
Figure BDA0003751827120000044
个RDD的缓存加速效用;当第
Figure BDA0003751827120000045
个RDD的缓存未起到加速效用时,则不进行持久化,并将前
Figure BDA0003751827120000046
个RDD的缓存加速效用仍记为
Figure BDA0003751827120000047
进一步地,还包括:使用Web API接口监控内存占用空间大小、RDD的大小和RDD的持久化溢写状态。
本发明的有益效果:
本发明提供的应用于Spark计算平台中的降低内存争用的方法,所采用的争用避免策略主要分为两步:第一步,通过释放低价值的RDD提升空闲内存空间,充分利用CPUCORE资源;第二步,考虑内存争用损失,计算RDD分别存储到硬盘和内存时的加速效用,从而选择RDD的最佳持久化位置实现分级存储RDD持久化数据。通过上述的争用避免策略,本发明在Spark平台内存受限时,可以有效降低内存争用带来的负面影响,加速Spark作业执行。
附图说明
图1为内存争用示意图;
图2为本发明实施例提供的一种应用于Spark计算平台中的降低内存争用的方法的流程示意图;
图3为本发明实施例提供的RDD排序和清理优先级示意图;
图4为本发明实施例提供的DAG执行逻辑示意图;
图5为本发明实施例提供的LCM策略与Spark内置策略执行时间对比图;
图6为本发明实施例提供的LCM策略与Spark内置策略垃圾回收时间对比图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对内存争用问题,如图2所示,本发明实施例提供一种应用于Spark计算平台中的降低内存争用的方法,包括:
S101:计算内存中所有持久化RDD的价值,并按照价值高低对所有RDD进行排序形成优先队列;
具体地,本步骤中,每个持久化RDD的价值的计算过程具体包括以下子步骤:
S1011:通过预执行分析DAG执行逻辑,获取每个持久化RDD的引用频率(也称引用频次);
具体地,基于Spark action算子懒执行特点,分析DAG执行逻辑中RDD引用频率。
S1012:利用定时器获取每个持久化RDD处于非持久化状态时的计算时间代价;
S1013:每个持久化RDD的引用频率和计算时间代价的乘积即为每个持久化RDD的价值。
此外,为了后续计算的需要,本步骤还包括:使用Web API接口监控内存占用空间大小、RDD的大小和RDD的持久化溢写状态。使用的Web API接口有:
/applications/[app-id]/storage/rdd
/applications/[app-id]/executors。
在此基础上,作为一种可实施方式,针对每个RDD,采用数据结构<rdd,size,time,frequency>表示其信息;其中,rdd所在位置用于存储RDD标识,size所在位置用于存储RDD的大小,time所在位置用于存储RDD处于非持久化状态时的计算时间代价,frequency所在位置用于存储RDD的引用频率。进一步地,通过程序执行动态添加RDD对象引用句柄至队列中完成队列的建立,建立的优先队列的数据结构可表示为如下结构:
Queue<rdd,size,time,frequency>cacheList;
S102:若监控内存状态获知内存达到瓶颈,则执行步骤S103;
具体地,使用定时器每间隔预设时长(例如每间隔1秒)查看内存状态,若存在空闲的CPU核并且在将当前需要持久化的RDD持久化至内存中时发生溢写时,则认为内存达到瓶颈。
在实际应用中,空闲的CPU核数量通过启动参数框架并行度减去活跃任务(activetask)数得到。同时,RDD持久化默认使用memory_and_disk策略,若监控发现RDD被存储至硬盘,则意味着RDD持久化溢写发生。
需要说明的是,若内存没有达到瓶颈,按照memory_and_disk策略,直接将RDD缓存至内存即可。
S103:循环释放所述优先队列中价值较低的RDD;
具体地,依次循环出队低价值RDD对象引用,并释放该RDD占用的内存空间,通过本步骤可以提升CPU核的利用率,从而可以在一定程度上缓解内存争用的情况。如图3所示。
S104:在进行当前循环释放操作后,若判断获知存在空闲的处理器核,则继续执行步骤S103,反之则执行步骤S105;
具体地,只要空闲的处理器核的数量不为0,则继续执行步骤S103直至空闲的处理器核数量为0;也就是说,当出现内存争用时,本发明实施例优先采用提升CPU核的利用率来缓解内存争用的问题。
S105:计算将当前需要持久化的RDD分别持久化至内存中时的内存持久化加速效用和持久化至硬盘中时的硬盘持久化加速效用;
具体地,如图4所示,Spark作业中RDD的执行由DAG方式组织,若将引用频率大于1的RDD持久化至存储介质后可避免该RDD的重复计算。但是由于硬盘和内存的读写速率不同,不同的存储位置产生收益不同,如此就需要分别计算出内存持久化加速效用和硬盘持久化加速效用,以便为后续确定RDD的持久化存储位置提供依据。
具体地,本步骤具体包括以下子步骤:
S1051:将目标RDD计算路径中的中间RDD记作rj,按照公式(1)计算rj的持久化加速收益Gain(rj):
Gain(rj)=(fnj-1)×[time(RDDps=false)-time(RDDps=true)]   (1)
其中,fnj表示rj的引用频率,time(RDDps=false)表示rj处于非持久化状态时的计算时间代价,time(RDDps=true)表示rj处于持久化状态时的计算时间代价;下标ps表示是否处于持久化状态的标志。
具体地,RDD持久化可以避免重复计算,加速任务执行,故在不考虑资源争用情况下,rj的持久化加速收益如公式(1)所示。
S1052:按照公式(2)计算rj的内存争用损失I(rj,setτ):
Figure BDA0003751827120000071
其中,setτ表示内存上与rj相同大小的RDD分区集合,设定setτ中的RDD的引用频率分别为{fac1,fac2,…,facτ};OldHeapSize表示堆栈大小;q表示垃圾回收系数。
具体地,若考虑资源争用,当内存发生争用时,如果仍将当前需要缓存的RDD继续缓存至内存中,就需要先在内存中移除等量的RDD,而被移除的RDD事实上也存在被引用的需求,如此就需要计算得到该移除操作所造成的损失,本实施例中,将该损失记作内存争用损失。同时,可以理解,当移除RDD时,会发生垃圾回收操作,进而存在垃圾回收开销,垃圾回收开销与堆栈大小成正比,因此,在上述公式(2)中,还引入了垃圾回收系数。
S1053:按照公式(3)计算将rj持久化至内存中时的内存利用率u(sizej):
Figure BDA0003751827120000072
其中,sizej表示rj的大小,usage_memo表示内存已占用空间大小,max_memo表示内存总空间大小;
具体地,内存利用率是影响内存争用的主要因素。内存利用率增大,内存争用发生的概率增大。
S1054:按照公式(4)计算将rj持久化至内存中时的内存争用发生概率P{X=contention|u(sizej)}:
P{X=contention|u(sizej)}=sigmoid(u(sizej))             (4)
具体地,内存争用发生概率与内存利用率是非线性相关的,在内存利用率较低时,内存争用发生概率接近于0,随着内存利用率增加,内存争用发生概率急剧增加。sigmoid函数具有良好单调性,可将内存利用率非线性化映射到(0,1)区间内,故内存争用发生概率可形式化如公式(4)。
S1055:若rj选择缓存到内存,考虑到内存争用发生概率和内存争用损失,按照公式(5)计算将rj持久化至内存中时的内存持久化加速效用Umem
Umem=Gain(rj)-P{X=contention|u(sizej)}×I(rj,setτ)(5)
S1056:按照公式(6)计算rj持久化至硬盘中时的硬盘持久化加速效用Udisk
Figure BDA0003751827120000081
其中,vdisk表示硬盘传输速度。
具体地,若rj缓存到硬盘,避免了内存争用干扰,RDD读取速度为硬盘传输速度,
Figure BDA0003751827120000082
表示硬盘读写开销。因此其效用函数如公式(6)所示。
S106:基于内存持久化加速效用和硬盘持久化加速效用,采用贪心算法求解当前程序中所有需要缓存的RDD的存储位置。
具体地,本步骤具体包括以下子步骤:
S1061:针对当前程序中所有需要缓存的RDD,逐一执行步骤6.2,直至处理完所有的RDD;
S1062:针对第
Figure BDA00037518271200000815
个需要缓存的RDD,按照公式(7)计算前
Figure BDA00037518271200000816
个已缓存的RDD的缓存加速效用
Figure BDA00037518271200000817
并定义公式(8)所示的子问题,根据贪心算法求取所述子问题的最优解,所述最优解对应的存储位置即为当前需要缓存的RDD的存储位置:
Figure BDA0003751827120000083
Figure BDA0003751827120000084
其中,λ表示前
Figure BDA00037518271200000818
个已缓存的RDD中缓存至内存中的RDD数量;
Figure BDA0003751827120000085
表示将第i个RDD持久化至内存时的内存持久化加速效用,
Figure BDA0003751827120000086
表示将第j个RDD持久化至硬盘时的硬盘持久化加速效用;
Figure BDA0003751827120000087
表示将第
Figure BDA0003751827120000088
个RDD缓存在内存中时,前
Figure BDA0003751827120000089
个RDD的缓存加速效用;
Figure BDA00037518271200000810
表示表示将
Figure BDA00037518271200000811
个RDD缓存在硬盘中时,前
Figure BDA00037518271200000812
个RDD的缓存加速效用;当第
Figure BDA00037518271200000813
个RDD的缓存未起到加速效用时,则不进行持久化,并将前
Figure BDA00037518271200000814
个RDD的缓存加速效用仍记为
Figure BDA0003751827120000091
为了解决内存压力过载时频繁争用降低执行效率的问题,本发明提供的应用于Spark计算平台中的降低内存争用的方法,所采用的争用避免策略主要分为两步:第一步,通过释放低价值的RDD提升空闲内存空间;第二步,考虑内存争用损失,计算RDD分别存储到硬盘和内存时的加速效用,从而选择最佳存储位置。通过上述的争用避免策略,本发明在Spark平台内存受限时,可以有效降低内存争用带来的负面影响,加速Spark作业执行。
为了验证本发明的可行性,本发明还提供有下述实验。
实验运行在三台服务器节点上,每个节点的配置如表1所示,作业类型选取pagerank算法,数据集大小设置为20Gb、30Gb、40Gb、50Gb。由于Spark作业在垃圾回收时暂停作业线程,故垃圾回收时间具有重要参考意义。实验指标选择为作业执行时间和垃圾回收时间。实验结果如图5和图6所示。
表1资源配置信息
Figure BDA0003751827120000092
图5为本发明提供的执行时间结果图。通过结果图可以看出随着数据量增加,相比only_disk策略,only_memory策略和memory_and_disk策略出现明显的执行时间延迟。分析原因可知,内存不足导致的争用状态使得持久化RDD命中率大幅下降。而本发明策略(简称为LCM策略)避免频繁内存争用,在50Gb时明显降低了作业执行时间。
图6为本发明提供的Spark平台垃圾回收时间结果图。通过结果图可以看出随着数据量增加,相比only_disk策略,only_memory策略和memory_and_disk策略出现较大的垃圾回收开销。LCM策略将垃圾回收开销维持在一个稳定且较低的水平上。垃圾回收动作由内存不足事件触发,分析原因可知,LCM策略通过清理内存中低价值RDD和分层存储RDD技术将Spark内存维持在未超载状态,避免频繁触发垃圾回收。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (4)

1.一种应用于Spark计算平台中的降低内存争用的方法,其特征在于,包括:
步骤1:计算内存中所有持久化RDD的价值,并按照价值高低对所有RDD进行排序形成优先队列;
步骤2:若监控内存状态获知内存达到瓶颈,则执行步骤3;
步骤3:循环释放所述优先队列中价值较低的RDD;
步骤4:在进行当前循环释放操作后,若判断获知存在空闲的处理器核,则继续执行步骤3,反之则执行步骤5;
步骤5:计算将当前需要持久化的RDD分别持久化至内存中时的内存持久化加速效用和持久化至硬盘中时的硬盘持久化加速效用;
步骤5具体包括:
步骤5.1:将目标RDD计算路径中的中间RDD记作rj,按照公式(1)计算rj的持久化加速收益Gain(rj):
Gain(rj) = (fnj-1)×[time(RDDps=false) - time(RDDps=true)]  (1)
其中,fnj表示rj的引用频率,time(RDDps=false)表示rj处于非持久化状态时的计算时间代价,time(RDDps=true)表示rj处于持久化状态时的计算时间代价;
步骤5.2:按照公式(2)计算rj的内存争用损失I(rj,setτ):
Figure FDA0004177673920000011
其中,setτ表示内存上与rj相同大小的RDD分区集合,设定setτ中的RDD的引用频率分别为{fac1,fac2,…,facτ};OldHeapSize表示堆栈大小;q表示垃圾回收系数;
步骤5.3:按照公式(3)计算将rj持久化至内存中时的内存利用率u(sizej):
Figure FDA0004177673920000012
其中,sizej表示rj的大小,usage_memo表示内存已占用空间大小,max_memo表示内存总空间大小;
步骤5.4:按照公式(4)计算将rj持久化至内存中时的内存争用发生概率P{X=contention|u(sizej)}:
P{ X=contention |u(sizej)} =sigmoid(u(sizej))             (4)
步骤5.5:按照公式(5)计算将rj持久化至内存中时的内存持久化加速效用Umem
Umem=Gain(rj)-P{X=contention|u(sizej)}×I(rj,setτ)(5)
步骤5.6:按照公式(6)计算rj持久化至硬盘中时的硬盘持久化加速效用Udisk
Figure FDA0004177673920000021
其中,vdisk表示硬盘传输速度;
步骤6:基于内存持久化加速效用和硬盘持久化加速效用,采用贪心算法求解当前程序中所有需要缓存的RDD的存储位置;
步骤6具体包括:
步骤6.1:针对当前程序中所有需要缓存的RDD,逐一执行步骤6.2,直至处理完所有的RDD;
步骤6.2:针对第
Figure FDA0004177673920000022
个需要缓存的RDD,按照公式(7)计算前
Figure FDA0004177673920000023
个已缓存的RDD的缓存加速效用
Figure FDA0004177673920000024
并定义公式(8)所示的子问题,根据贪心算法求取所述子问题的最优解,所述最优解对应的存储位置即为当前需要缓存的RDD的存储位置:
Figure FDA0004177673920000025
Figure FDA0004177673920000026
其中,λ表示前
Figure FDA0004177673920000027
个已缓存的RDD中缓存至内存中的RDD数量;
Figure FDA0004177673920000028
表示将第i个RDD持久化至内存时的内存持久化加速效用,
Figure FDA0004177673920000029
表示将第j个RDD持久化至硬盘时的硬盘持久化加速效用;
Figure FDA00041776739200000210
表示将第
Figure FDA00041776739200000211
个RDD缓存在内存中时,前
Figure FDA00041776739200000212
个RDD的缓存加速效用;
Figure FDA00041776739200000213
表示表示将
Figure FDA00041776739200000214
个RDD缓存在硬盘中时,前
Figure FDA00041776739200000215
个RDD的缓存加速效用;当第
Figure FDA00041776739200000216
个RDD的缓存未起到加速效用时,则不进行持久化,并将前
Figure FDA0004177673920000031
个RDD的缓存加速效用仍记为
Figure FDA0004177673920000032
2.根据权利要求1所述的一种应用于Spark计算平台中的降低内存争用的方法,其特征在于,步骤1中具体包括:
步骤1.1:通过预执行分析DAG执行逻辑,获取每个持久化RDD的引用频率;
步骤1.2:利用定时器获取每个持久化RDD处于非持久化状态时的计算时间代价;
步骤1.3:每个持久化RDD的引用频率和计算时间代价的乘积即为每个持久化RDD的价值。
3.根据权利要求1所述的一种应用于Spark计算平台中的降低内存争用的方法,其特征在于,步骤2中,若存在空闲的CPU核并且在将当前需要持久化的RDD持久化至内存中时发生溢写时,则认为内存达到瓶颈。
4.根据权利要求1所述的一种应用于Spark计算平台中的降低内存争用的方法,其特征在于,还包括:使用Web API接口监控内存占用空间大小、RDD的大小和RDD的持久化溢写状态。
CN202210843160.7A 2022-07-18 2022-07-18 一种应用于Spark计算平台中的降低内存争用的方法 Active CN115145841B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210843160.7A CN115145841B (zh) 2022-07-18 2022-07-18 一种应用于Spark计算平台中的降低内存争用的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210843160.7A CN115145841B (zh) 2022-07-18 2022-07-18 一种应用于Spark计算平台中的降低内存争用的方法

Publications (2)

Publication Number Publication Date
CN115145841A CN115145841A (zh) 2022-10-04
CN115145841B true CN115145841B (zh) 2023-05-12

Family

ID=83413083

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210843160.7A Active CN115145841B (zh) 2022-07-18 2022-07-18 一种应用于Spark计算平台中的降低内存争用的方法

Country Status (1)

Country Link
CN (1) CN115145841B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526546A (zh) * 2017-08-25 2017-12-29 深圳大学 一种Spark分布式计算数据处理方法及系统
CN108628682A (zh) * 2018-04-17 2018-10-09 西南交通大学 一种基于数据持久化的Spark平台成本优化方法
WO2019037093A1 (zh) * 2017-08-25 2019-02-28 深圳大学 一种 Spark 分布式计算数据处理方法及系统
CN112015765A (zh) * 2020-08-19 2020-12-01 重庆邮电大学 基于缓存价值的Spark缓存淘汰方法及系统
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526546A (zh) * 2017-08-25 2017-12-29 深圳大学 一种Spark分布式计算数据处理方法及系统
WO2019037093A1 (zh) * 2017-08-25 2019-02-28 深圳大学 一种 Spark 分布式计算数据处理方法及系统
CN108628682A (zh) * 2018-04-17 2018-10-09 西南交通大学 一种基于数据持久化的Spark平台成本优化方法
CN112015765A (zh) * 2020-08-19 2020-12-01 重庆邮电大学 基于缓存价值的Spark缓存淘汰方法及系统
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
memory management optimization strategy in spark framework based on less contention;yixin song,et al;the journal of supercomputing;1504-1525 *
Spark效用感知的检查点缓存并行清理策略;宋一鑫等;计算机系统应用;253-259 *

Also Published As

Publication number Publication date
CN115145841A (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
US5349656A (en) Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
CN110058786B (zh) 用于控制存储系统中的写请求的方法、装置和计算机程序产品
US9182923B2 (en) Controlling throughput of processing units associated with different load types in storage system
US8275902B2 (en) Method and system for heuristic throttling for distributed file systems
JPH05225066A (ja) 優先順位付けキャッシュ管理方法
JPS60140446A (ja) 記憶階層制御方式
JP2021524078A (ja) キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択
EP2612249A1 (en) Method and system for removing cache blocks
WO2018040167A1 (zh) 数据缓存方法及装置
WO2013032553A2 (en) Resource allocation tree
Herodotou et al. Automating distributed tiered storage management in cluster computing
JP6402647B2 (ja) データ配置プログラム、データ配置装置およびデータ配置方法
CN111258967A (zh) 文件系统中数据读取方法、装置及计算机可读存储介质
CN111737168A (zh) 一种缓存系统、缓存处理方法、装置、设备及介质
CN115145841B (zh) 一种应用于Spark计算平台中的降低内存争用的方法
US8380948B2 (en) Managing purgeable memory objects using purge groups
Chen et al. Data prefetching and eviction mechanisms of in-memory storage systems based on scheduling for big data processing
CN110209693A (zh) 高并发数据查询方法、装置、系统、设备及可读存储介质
Chen et al. Scheduling-aware data prefetching for data processing services in cloud
US7831784B2 (en) Managing purgeable memory objects
US20230169005A1 (en) Cache prefetching method and system based on k-truss graph for storage system, and medium
JP2008299672A (ja) 計算機システム及びこれを用いたデータベース管理方法
CN115718767A (zh) 一种面向大数据平台的远程缓存替换方法及装置
Song et al. Memory management optimization strategy in Spark framework based on less contention
CN109960458A (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