CN108614738A - 一种面向交互式Spark应用的数据动态放置方法 - Google Patents

一种面向交互式Spark应用的数据动态放置方法 Download PDF

Info

Publication number
CN108614738A
CN108614738A CN201810455119.6A CN201810455119A CN108614738A CN 108614738 A CN108614738 A CN 108614738A CN 201810455119 A CN201810455119 A CN 201810455119A CN 108614738 A CN108614738 A CN 108614738A
Authority
CN
China
Prior art keywords
exe
partition
rdd
task
particle
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
CN201810455119.6A
Other languages
English (en)
Other versions
CN108614738B (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.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201810455119.6A priority Critical patent/CN108614738B/zh
Publication of CN108614738A publication Critical patent/CN108614738A/zh
Application granted granted Critical
Publication of CN108614738B publication Critical patent/CN108614738B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种面向交互式Spark应用的数据动态放置方法,该方法分为五个步骤:初始化、缓存RDD分区价值评估、缓存RDD分区的保留选取、缓存RDD分区数据的重放置和结束。本发明针对Spark交互式应用在动态资源分配的背景下,RDD数据无法可靠放置的不足,在相邻交互请求间存在较长时间间隔时,依据任务执行器中缓存RDD分区的价值以及数据迁移的代价,利用粒子群算法进行缓存RDD分区数据的重放置,从而达到充分利用任务执行器的内存空间且提高交互式请求执行效率的目的。

Description

一种面向交互式Spark应用的数据动态放置方法
技术领域
本发明属于分布式计算领域,具体涉及分布式内存计算平台Spark的数据放置方法。
背景技术
分布式内存计算平台Spark是海量数据处理领域的最新技术进展。Spark平台以弹性分布式数据集(RDD)作为海量分布存储数据的抽象表达,降低海量分布数据的操作门槛。交互式数据查询是Spark平台支撑的一类主要应用。交互式数据查询应用充分利用Spark平台提供的RDD数据缓存机制,将数据查询中反复使用的大规模RDD数据缓存于Spark任务执行器的内存空间中,减少数据读取开销,从而获得较高的查询效率。
交互式Spark应用中请求负载的到达具有较强的随机性,相邻请求间往往存在随机的时间间隔。为了充分利用平台资源,Spark平台采用动态资源分配技术,即检测到应用所分配的任务执行器处于闲置状态超过一个时间阈值时,则关闭任务执行器,释放执行器中任务占用的CPU和内存资源,待新的查询请求到来再重新分配资源。关闭任务执行器的过程直到当前应用所持有的任务执行器数量达到用户设置的下界为止。上述技术运用于实际Spark交互式数据查询应用存在如下不足:
(1)RDD缓存数据丢失,造成重计算开销。Spark交互式数据查询应用中查询请求间复用RDD数据集频繁发生。例如,在执行某次具体的查询时,用户缓存的RDD数据通常是会被重复使用的中间结果,这些结果往往会在之后几次的查询中再次使用。在Spark平台中,RDD数据是基于应用所分配的所有任务执行器分布存储的。因此,一旦在交互式应用中存在RDD缓存数据的任务执行器被关闭,就将导致在之后查询中再次使用这个RDD时,造成重计算开销。
(2)无法充分利用任务执行器的空闲内存空间,对RDD数据进行动态存储。如前所述,既有Spark资源动态分配技术不会对任务执行器上的RDD缓存数据进行任何形式的保存,一旦任务执行器超时则直接关闭。然而,由于RDD数据存储倾斜以及临时变量释放等原因,在空闲时间间隔内,该应用保留的任务执行器中往往存在空闲内存空间。既有Spark资源动态分配技术无法利用空闲时间间隔对任务执行器中的RDD缓存数据进行动态存储,达到先“腾空”任务执行器再释放资源的目的。因此,该技术无法利用既有资源保存RDD缓存数据。
发明内容
本发明方法针对Spark交互式应用在动态资源分配的背景下,RDD数据放置存在的不足,在相邻交互请求间存在较长时间间隔时,依据任务执行器中缓存RDD分区的价值以及数据迁移的代价,利用粒子群算法进行缓存RDD分区数据的重放置,从而达到充分利用任务执行器的内存空间且提高交互式请求执行效率的目的。
本发明采用的技术方案为一种面向交互式Spark应用的数据动态放置方法,该数据放置方法分为五个步骤:初始化、缓存RDD分区价值评估、缓存RDD分区的保留选取、缓存RDD分区数据的重放置和结束。在本方法中,有九个基本参数:任务执行器的过期时间τ、加速度常数c1,c2、惯性因子ω、随机函数r1,r2、迭代次数NI、粒子数量pNumber、用户给定的权值比例θ。τ取值为大于60的整数,c1,c2取值为1~3之间,ω为3~5之间、r1,r2的取值为0~1之间,NI取值为50~100之间,pNumber的取值为3~10之间,θ的取值为大于0的实数。
上述方法在计算机上按以下步骤实现:
在交互式Spark应用的非活跃期持续时间大于τ秒时,依次执行以下步骤:
步骤(1)初始化:从Spark平台既有数据管理组件及任务执行器管理组件采集用于数据放置决策的初始化信息INFO,INFO的表示形式如公式(1)所示。
INFO={minExeNum,NETINFO,EXEINFO,RDDINFO,PARINFO} (1)
其中,minExeNum为动态资源分配下应用持有任务执行器的最小数量,NETINFO为Spark平台网络信息,EXEINFO为Spark交互式应用包含的任务执行器信息,RDDINFO为Spark交互式应用所包含的缓存RDD信息,PARINFO为缓存RDD分区信息。其中,
NETINFO表示为NETINFO={workerNum,NET}。其中,workerNum为集群中工作节点的数量;NET为网络带宽集合,表示为NET={netmn|1≤m≤workerNum,1≤n≤workerNum},netmn表示第m个工作节点到第n个工作节点的网络带宽。
EXEINFO表示为EXEINFO={exeNum,exeStorCap,EXE,CORE}。其中,exeNum为Spark交互式应用所包含的任务执行器的总数量;exeStorCap为任务执行器的存储容量;EXE为任务执行器集合,表示为EXE={exe1,exe2,...,exek-1,exek,...,exeexeNum},其中,exek=k。CORE为任务执行器核数集合,表示为CORE={corek|1≤k≤exeNum},corek表示exek的CPU核数;对于EXE中的元素的所有元素,满足corek>corek-1
RDDINFO表示为RDDINFO={rddNum,RS,TPN,RPN}。其中,rddNum为交互式应用包含的缓存RDD数量;RS为缓存RDD集合,表示为RS={rddi|1≤i≤rddNum},rddi表示第i个缓存RDD;TPN为缓存RDD分区总数集合,表示为TPN={tpni|1≤i≤rddNum},tpni表示rddi的缓存分区总数;RPN为缓存RDD在内存中的分区数量集合,表示为RPN={rpni|1≤i≤rddNum},rpni表示rddi的在内存中的分区数量。
PARINFO表示为PARINFO={PA,SE,FR,FT,ST}。其中,PA为分区集合,表示为PA={paij|1≤i≤rddNum,1≤j≤tpni},paij表示rddi的第j个分区;SE为分区大小集合,表示为SE={seij|1≤i≤rddNum,1≤j≤tpni},seij表示分区paij(paij∈PA)的大小;FR为分区使用频度集合,表示为FR={frij|1≤i≤rddNum,1≤j≤tpni},frij表示分区paij(paij∈PA)的使用频度;FT为分区对应任务的完成时间集合,表示为FT={ftij|1≤i≤rddNum,1≤j≤tpni},ftij表示分区paij(paij∈PA)对应任务的完成时间;ST为分区对应任务的起始时间集合,表示为ST={stij|1≤i≤rddNum,1≤j≤tpni},stij表示分区paij(paij∈PA)对应任务的起始时间。
如果minExeNum为0,则关闭所有任务执行器并执行步骤(5)。否则,执行步骤(2)。
步骤(2)缓存RDD分区价值评估。
步骤2.1)定义交互式应用的任务并行度为taskPar,利用公式(2)计算taskPar。
其中,corek∈CORE。
步骤2.2)定义分区paij(paij∈PA)的重计算代价为rcij,对于每一个分区paij(paij∈PA),利用公式(3)计算rcij
rcij=ftij-stij (3)
其中,ftij∈FT,stij∈ST。
步骤2.3)定义rddi(rddi∈RS)的完整度为cfi。对于每一个rddi(rddi∈RS),利用公式(4)计算cfi
其中,rpni∈RPN,tpni∈TPN。
步骤2.4)定义rddi(rddi∈RS)的分区缺失程度为levi。对于每一个rddi(rddi∈RS),利用公式(5)计算levi
其中,rpni∈RPN,tpni∈TPN。
步骤2.5)定义分区paij(paij∈PA)的价值为valueij,对于每一个分区paij(paij∈PA),利用公式(6)计算分区paij(paij∈PA)的价值valueij
其中,frij∈FR。
步骤2.6)定义分区paij放置到任务执行器exek上的数据迁移代价为DMCijk。对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(7)计算DMCijk
其中,loce(exek)(exek∈EXE)为任务执行器exek所在的工作节点,locp(paij)(paij∈PA)为分区paij所在的任务执行器。由公式(7)可知,如果loce(locp(paij))=loce(exek),则DMCijk为0。这是因为如果分区与任务执行器位于同一工作节点上,分区的放置是没有数据迁移代价的。
步骤2.7)定义分区paij(paij∈PA)放置到任务执行器exek(exek∈EXE)上的收益为profitijk,对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(8)计算profitijk
其中,对于不再保留的分区,将其放置到上,并令分区paij(paij∈PA)在exe0上的收益profitij0为0。
步骤(3)缓存RDD分区的保留选取。
基于粒子群算法选取保留的缓存RDD分区。
步骤3.1)定义粒子群为PX,PX表示为PX={pxq|1≤q≤pNumber}。其中,pxq(pxq∈PX)表示为pxq={(paij,exek)|paij∈PA,exek∈EXE∪{exe0}},(paij,exek)表示将分区paij放置到任务执行器exek上。
步骤3.2)定义粒子pxq(pxq∈PX)上保留任务执行器集合为REq,REq表示为
步骤3.3)定义粒子pxq(pxq∈PX)上关闭任务执行器的集合为RMq,RMq表示为RMq=EXE-REq
步骤3.4)随机初始化粒子群PX,对于粒子pxq(pxq∈PX),pxq必须满足公式(9)。对于集合REq的大小|REq|,必须满足公式(10)。
|REq|=minExeNum (10)
其中,seij∈SE。公式(9)表示在集合REq中,不存在任务执行器exek上所有分区大小之和大于任务执行器的存储容量ExeStorCap,公式(10)表示动态资源分配下保留的任务执行器数量|REq|必须与交互式应用持有任务执行器的最小数量minExeNum相等。
步骤3.5)定义收益权重系数为w1,CPU核数的权重系数w2。令
步骤3.6)定义迭代次数为δ,并令δ的初始值为0。
步骤3.7)定义粒子pxq(pxq∈PX)的适应度为fitnessq,利用公式(11)计算fitnessq
步骤3.8)定义粒子pbestq,pbestq为相邻两轮迭代中,适应度较大的粒子,令对于每一个粒子pxq(pxq∈PX),利用公式(12)求得pbestq
其中,表示粒子pxq在δ次迭代后的粒子,表示的适应度。
步骤3.9)定义粒子gbest,gbest可表示为粒子群PX中适应度最大的粒子,利用公式(13)求得gbest。
其中,表示取所有pbesti粒子中,适应度最大的粒子。
步骤3.10)若{(paij,exek)|(paij,exek)∈pbestq},则令elqij=exek,elqij即为粒子pbestq中,分区paij的位置。若{(paij,exek)|(paij,exek)∈gbest},则令egij=exek,egij即为粒子gbest中,分区paij的位置。δ自增1,如果δ<NI,则执行步骤3.10.1)到步骤3.10.5),否则执行步骤(4)。
步骤3.10.1)定义粒子pxq(pxq∈PX)的每一个分区paij(paij∈PA)在第δ次迭代时的速度为粒子pxq中分区paij(paij∈PA)所处的任务执行器为exek。对于每一个粒子pxq(pxq∈PX)中的每一个分区paij(paij∈PA),利用公式(14)和公式(15)进行计算粒子pxq(pxq∈PX)中分区paij在第δ次迭代时的和exek
根据公式(14)和公式(15)可知,当迭代次数δ=0时,粒子pxq(pxq∈PX)中分区paij的速度为v和x。v为区间[-exeNum-1,exeNum+1]的整数,x为区间[0,exeNum]的整数。当迭代次数δ>0时,按照粒子群算法的转换公式对粒子pxq中的分区paij(paij∈PA)进行位置转换。
步骤3.10.2)若粒子满足步骤3.4)中的公式(9)和公式(10),则执行步骤3.10.3);否则执行步骤3.10.5)。
步骤3.10.3)利用公式(11)计算的适应度如果 则令pbestq并执行步骤3.10.4);否则,执行步骤执行3.10)。
步骤3.10.4)如果则令gbest为执行步骤3.10)。
步骤3.10.5)令为pbestq,并执行步骤3.10)。
步骤(4)缓存RDD分区数据的重放置。
步骤4.1)定义gbest中保留的任务执行器集合为GME,GME可表示为
步骤4.2)对于每一个(paij,exek)((paij,exek)∈gbest),执行以下步骤。
步骤4.2.1)若exek=exe0,则删除paij
步骤4.2.2)若exek≠exe0,则判断,若exek≠locp(paij),则把分区paij放置到任务执行器exek上。
步骤4.3)关闭集合EXE-GME中的所有任务执行器。
步骤(5)结束:中止数据动态放置过程。
为了实现上述方法,在Spark大数据处理平台中应用的任务执行器分配模块中增设一个决策模块并改造Spark的数据块管理模块。这个决策模块在交互式数据查询应用处于非活跃期时,会在任务执行器被关闭前收集相关信息(步骤(1)),然后利用这些信息对所有RDD缓存分区进行价值评估(步骤(2)),再基于粒子群算法求出求得所有数据放置方法(步骤(3)),接着根据全局最优粒子的各个分区位置进行分区放置(步骤(4)),最后结束本方法(步骤(5)),中止数据动态放置过程。
附图说明
图1为本发明方法所依附的Spark平台的部署图。
图2为采用本发明方法的Spark平台中新增软件模块及其交互式关系图。
图3为本发明方法的总体流程图。
图4为缓存RDD分区的价值评估流程图。
图5为缓存RDD分区的保留选取流程图。
图6为缓存RDD分区数据的重放置流程图。
具体实施方式
下面结合附图和具体实施方式对问发明加以说明。
本发明所提出的面向交互式应用的数据放置技术可依附于现有Spark数据处理平台,通过修改或增加现有的软件模块实现。图1是本方法所依附的Spark平台在动态资源分配下的部署图。该平台由多个计算机服务器(平台节点)组成。服务器间通过网络连接。平台节点分为三类,包括一个管理节点(Master)、一个客户端节点(Client)和多个计算节点(Worker)。本发明方法所依附的Spark平台的四类核心软件模块:任务执行器分配管理模块(ExecutorAllocationManager)、任务执行器模块(Executor)、主数据块管理模块(BlockManagerMaster)和从数据块管理模块(BlockManager)。ExecutorAllocationManager负责实现Spark平台上给交互式应用追增或关闭任务执行器的机制。在应用需要Executor时,它会为其增加Executor以保证应用的执行效率。在应用不需要Executor时,它会根据配置文件的要求来关闭这个应用持有的Executor,释放其占有的CPU和内存资源,并使得其他应用可以获取已释放的资源。Executor是Spark平台中资源的载体,它包含了CPU核数和内存。它是任务真正执行的地方,因此可以从Executor上得到在其上的任务执行开始时间和结束时间。BlockManagerMaster负责维护三个元数据信息,第一个元数据信息是BlockManagerId与对应Executor的内存使用情况、数据块的使用情况、已被缓存的数据块和Executor终端点的引用。第二个元数据信息是BlockManagerId与ExecutorId的对应列表。第三个元数据信息是数据块序号BlockId与BlockManagerId的对应列表。而BlockManager模块的功能主要有三个,一是负责与BlockManagerMaster通信;二是负责存储Block;三是负责数据块的传输。
为实现本发明方法,在Client的ExecutorAllocationManager模块中,我们新增了一个决策模块(DecisionMaker),它负责实现发明内容中步骤(2)到(4)中的内容并进行给出最终的数据放置方案。而步骤(1)中的所述内容的实现则需要在交互式应用活跃时,Executor将自身CPU核数信息和任务执行信息汇报给BlockManagerMaster,在ExecutorAllocationManager即将关闭任务执行器时从BlockManagerMaster获取。
下面结合图2发明内容总流程说明本发明方法在计算机上的具体实施方法。在本实施方法中,九个基本参数的设置如下:用户配置的任务执行器的过期时间τ=60、加速度常数c1=1.5、c2=3、惯性因子ω=4、随机函数r1,r2在计算时由计算机产生取值为0~1之间的任意小数、迭代次数NI=100、粒子数量pNumber=3,权重比例θ的取值为3。
本实施方法可分为以下步骤:
在交互式Spark应用的非活跃期持续时间大于60秒时,依次执行以下步骤:
(1)初始化:从Spark平台既有数据管理组件及任务执行器管理组件采集用于数据放置决策的初始化信息INFO,INFO的表示形式如公式(1)所示。
INFO={3,NETINFO,EXEINFO,RDDINFO,PARINFO} (1)
其中,3为动态资源分配下应用持有任务执行器的最小数量,NETINFO为Spark平台网络信息,EXEINFO为Spark交互式应用包含的任务执行器信息,RDDINFO为Spark交互式应用所包含的缓存RDD信息,PARINFO为缓存RDD分区信息。其中,
NETINFO可表示为NETINFO={4,NET}。其中,6为集群中工作节点的数量;NET为网络带宽集合,可表示为 netmn表示第m个工作节点到第n个工作节点的网络带宽,单位为MB/秒。
EXEINFO可表示为EXEINFO={4,1024,EXE,CORE}。其中,4为Spark交互式应用所包含的任务执行器的总数量;1024为任务执行器的存储容量,单位为MB;EXE为任务执行器集合,可表示为EXE={exe1,exe2,exe3,exe4},其中,exe1=1,exe2=2,exe3=3,exe4=4。CORE为任务执行器核数集合,可表示为CORE={corek|1≤k≤exeNum}={4,4,2,2},corek表示exek的CPU核数;对于EXE中的元素的所有元素,满足corek>corek-1
RDDINFO可表示为RDDINFO={10,RS,TPN,RPN}。其中,10为交互式应用包含的缓存RDD数量;RS为缓存RDD集合,可表示为RS={rddi|1≤i≤3}={rdd1,rdd2,rdd3},rddi表示第i个缓存RDD;TPN为缓存RDD分区总数集合,可表示为TPN={tpni|1≤i≤3}={3,3,3},tpni表示rddi的缓存分区总数;RPN为缓存RDD在内存中的分区数量集合,可表示为RPN={rpni|1≤i≤3}={3,3,3},rpni表示rddi的在内存中的分区数量。
PARINFO可表示为PARINFO={PA,SE,FR,FT,ST}。其中,PA为分区集合,可表示为:RA={pa11,pa12,pa13,pa21,pa22,pa23,pa31,pa32,pa33},paij表示rddi的第j个分区;SE为分区大小集合,可表示为SE={seij|1≤i≤3,1≤j≤3}={50,600,700,550,71,660,300,88,90},seij表示分区paij(paij∈PA)的大小;FR为分区使用频度集合,可表示为FR={frij|1≤i≤rddNum,1≤j≤tpni}={2,2,2,3,3,3,1,1,1},frij表示分区paij(paij∈PA)的使用频度;FT为分区对应任务的完成时间集合,可表示为FT={ftij|1≤i≤3,1≤j≤3}={400,410,390,500,510,505,300,360,350},ftij表示分区paij(paij∈PA)对应任务的完成时间;ST为分区对应任务的起始时间集合,可表示为ST={stij|1≤i≤3,1≤j≤3}={200,201,196,480,485,465,280,260,340},stij表示分区paij(paij∈PA)对应任务的起始时间。
因为应用持有任务执行器的最小数量3,所以执行步骤(2)。
(2)缓存RDD分区价值评估。
2.1)定义交互式应用的任务并行度为taskPar,利用公式(2)计算taskPar。
其中,corek∈CORE。
2.2)定义分区paij(paij∈PA)的重计算代价为rcij,对于每一个分区paij(paij∈PA),利用公式(3)计算rcij
rcij=ftij-stij (3)
其中,ftij∈FT,stij∈ST。
2.3)定义rddi(rddi∈RS)的完整度为cfi。对于每一个rddi(rddi∈RS),利用公式(4)计算cfi
其中,rpni∈RPN,tpni∈TPN。
2.4)定义rddi(rddi∈RS)的分区缺失程度为levi。对于每一个rddi(rddi∈RS),利用公式(5)计算levi
其中,rpni∈RRN,tpni∈TPN。
2.5)定义分区paij(paij∈PA)的价值为valueij,对于每一个分区paij(paij∈PA),利用公式(6)计算分区paij(paij∈PA)的价值valueij
其中,frij∈FR。
2.6)定义分区paij放置到任务执行器exek上的数据迁移代价为DMCijk。对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(7)计算DMCijk
其中,loce(exek)(exek∈EXE)为任务执行器exek所在的工作节点,locp(paij)(paij∈PA)为分区paij所在的任务执行器。由公式(7)可知,如果loce(locp(paij))=loce(exek),则DMCijk为0。这是因为如果分区与任务执行器位于同一工作节点上,分区的放置是没有数据迁移代价的。分区pa11,pa12,pa13,pa14,pa21,pa22,pa23,pa31,pa32,pa33的locp取值和任务执行器exe1,exe2,exe3,exe4的loce取值如下:
locp(pa12)=locp(pa22)=kocp(pa31)=1
locp(pa13)=locp(pa32)=locp(pa33)=2
locp(pa11)=locp(pa21)=3
locp(pa23)=4
loce(exe1)=1
loce(exe2)=2
loce(exe3)=3
loce(exe4)=4
2.7)定义分区paij(paij∈PA)放置到任务执行器exek(exek∈EXE)上的收益为profitijk,对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(8)计算profitijk
其中,对于不再保留的分区,将其放置到上,并令分区paij(paij∈PA)在exe0上的收益profitij0为0。
分区pa11,pa12,pa13,pa14,pa21,pa22,pa23,pa31,pa32,pa33在任务执行器上的exe1,exe2,exe3,exe4的放置收益为如表1所示。
表1分区放置在不同任务执行器下的收益
exe0 exe1 exe2 exe3 exe4
pa11 0 266.66 246.15 400 285.71
pa12 0 418 72.06 59.71 54.52
pa13 0 58.78 388 39.79 58.78
pa21 0 9.23 7.61 60 11.11
pa22 0 75 47.83 43.85 41.92
pa23 0 14.40 19.10 19.10 120
pa31 0 20 5.88 5 4.61
pa32 0 58.68 100 47.61 58.68
pa33 0 5.81 10 4.70 5.81
(3)缓存RDD分区的保留选取。
本发明基于粒子群算法选取保留的缓存RDD分区。
3.1)定义粒子群为PX,PX可表示为PX={pxq|1≤q≤3}。其中,pxq(pxq∈PX)可表示为pxq={(paij,exek)|paij∈PA,exek∈EXE∪{exe0}},(paij,exek)表示将分区paij放置到任务执行器exek上。px1、px2、px3的表示如下:
px1={(pa12,1),(pa22,1),(pa31,1),(pa13,2),(pa32,2),(pa33,2),
(pa21,3),(pa11,3),(pa23,0)}
px2={(pa12,0),(pa22,0),(pa31,0),(pa13,2),(pa32,2),(pa33,2),
(pa21,3),(pa11,3),(pa23,4)}
px3={(pa12,1),(pa22,1),(pa31,1),(pa13,0),(pa32,0),(pa33,0),
(pa21,3),(pa11,3),(pa23,4)}
3.2)定义粒子pxq(pxq∈PX)上保留任务执行器集合为REq,REq可表示为对于粒子px1、px2、px3,RE1、RE2、RE3的表示如下:
RE1={1,2,3}
RE2={2,3,4}
RE3={1,3,4}
3.3)定义粒子pxq(pxq∈PX)上关闭任务执行器的集合为RMq,RMq可表示为RMq=EXE-REq。对于粒子px1、px2、px3,RM1,RM2,RM3的表示如下:
RM1={4}
RM2={1}
RM3={2}
3.4)随机初始化粒子群PX,对于粒子pxq(pxq∈PX),pxq必须满足公式(9)。对于集合REq的大小|REq|,必须满足公式(10)。
|REq|=3
(10)
其中,seij∈SE。公式(9)表示在集合REq中,不存在任务执行器exek上所有分区大小之和大于任务执行器的存储容量1024MB,公式(10)表示动态资源分配下保留的任务执行器数量|REq|必须与交互式应用持有任务执行器的最小数量3相等。对于粒子px1、px2、px3,均满足上述条件。
3.5)定义收益权重系数为w1,CPU核数的权重系数w2。令
3.6)定义迭代次数为δ,并令δ的初始值为0。
3.7)定义粒子pxq(pxq∈PX)的适应度为fitnessq,利用公式(11)计算fitnessq
对于粒子px1、px2、px3,fitness1=1103.75,fitness2=809.5,fitness3=820.75。
3.8)定义粒子pbestq,pbestq为相邻两轮迭代中,适应度较大的粒子,令对于每一个粒子pxq(pxq∈PX),利用公式(12)求得pbestq
其中,表示粒子pxq在δ次迭代后的粒子,表示的适应度。对于粒子px1、px2、px3,pbest1=px1,pbest2=px2,pbest3=px3
3.9)定义粒子gbest,gbest可表示为粒子群PX中适应度最大的粒子,利用公式(13)求得gbest。
其中,表示取所有pbesti粒子中,适应度最大的粒子。对于粒子px1、px2、px3,gbest=px1
3.10)若{(paij,exek)|(paij,exek)∈pbestq},则令elqij=exek,elqik即为粒子pbestq中,分区paik的位置。若{(paij,exek)|(paij,exek)∈gbest},则令egij=exek,egij即为粒子gbest中,分区paij的位置。对于粒子pbest1,el111=3,el112=1,el113=2,el121=3,el122=1,el123=0,el131=1,el132=2,el133=2。对于粒子pbest2,el111=3,el112=0,el113=2,el121=3,el122=0,el123=4,el131=0,el132=2,el133=2。对于粒子pbest3,el111=3,el112=1,el113=0,el121=3,el122=1,el123=4,el131=1,el132=0,el133=0。对于粒子gbest,eg111=3,eg112=1,eg113=2,eg121=3,eg122=1,eg123=0,eg131=1,eg132=2,eg133=2。δ自增1,如果δ<100,则根据发明内容3.10)所述方法,求出迭代100次后的gbest。每次迭代过程求出的gbest表示如下:
迭代1次后求出的gbest:
gbest={(pa12,1),(pa22,1),(pa31,1),(pa13,2),(pa32,2),(pa33,2),
(pa21,3),(pa11,3),(pa23,0)}
迭代2次后求出的gbest:
gbest={(pa12,1),(pa22,1),(pa31,1),(pa13,2),(pa32,2),(pa33,2),
(pa21,3),(pa11,3),(pa23,0)}
迭代100次后求出的gbest:
gbest={(pa12,1),(oa22,1),(pa31,1),(pa13,2),(pa32,2),(pa33,0),
(pa21,3),(pa11,3),(pa23,3)}
(4)缓存RDD分区数据的重放置。
4.1)定义gbest中保留的任务执行器集合为GME,GME可表示为
4.2)根据发明内容4.2)所述内容,对缓存RDD分区数据进行重放置。
4.3)关闭集合EXE-GME中的所有任务执行器。
(5)结束:中止数据动态放置过程。
性能测试将依据本发明具体实施方案实现的集成数据放置方法的Spark平台与原生Spark平台进行性能比较。测试选取交互式请求的响应时间和任务执行器的平均存储内存利用率作为性能指标,旨在体现在使用动态资源分配策略的场景下,本发明实现的集成缓存RDD动态数据放置方法的Spark平台在执行交互式Spark应用作业时更有优势。其中交互式请求的响应时间指的是交互式请求被提交到Spark后,集群响应该请求所耗费的时间,以秒为单位。任务执行器的平均存储内存利用率指的是,在交互式Spark应用处于非活跃期时间超过任务执行器的过期时间时,剩余任务执行器中存储内存利用率。性能测试运行于由7个计算节点构成的集群系统,计算节点的硬件配置包括:6个Intel(R)Xeon(R)CPUE5-26600@2.20GHz的CPU、16GB DDR3RAM、1TB SATA硬盘,节点间采用千兆以太网互连,操作系统为Centos6.5。Java版本为jdk1.8.0_91,Scala版本为scala-2.11.8,Spark版本为2.1.0,Hadoop版本为2.7.2。选取的负载为选取TPC-H中的查询q1_pricing_summary_report作为负载。具体做法是,先将TPC-H生成的8个表缓存在任务执行器的内存中,经过关闭任务执行器的操作后,提交TPC-H的查询q1_pricing_summary_report。在提交查询前通过Spark监控界面测得任务执行器的平均任务内存利用率,在提交查询后测得查询的响应时间。本实验选取的对比对象为相同实验环境、相同配置下的原生Spark系统。
本实验测试将对集成RDD动态放置的Spark系统和原生Spark系统在不同的任务执行器保留个数、任务执行器内存配置、输入数据大小以进行实验。在本发明的所有实验中,任务执行器的过期时间都被统一设置为60秒。
不同任务执行器内存配置下的测试
该部分测试为保持任务执行器的保留个数和输入数据的大小不变,改变任务执行器的配置进行测试。实验中,可以固定任务执行器保留个数为3个,输入数据的大小为12GB。任务执行器的配置可以设置成5组,如表2所示。
表2任务执行器内存的取值范围
测试组编号 1 2 3 4 5
任务执行器内存(GB) 4 6 8 10 12
表3q1_pricing_summary_report在不同任务执行器内存配置下的内存利用率测试结果
表4q1_pricing_summary_report在不同任务执行器配置下的请求平均响应时间测试结果
表3和表4分别给出在不同任务执行器配置下,原生Spark和使用数据放置技术的Spark在执行去q1_pricing_summary_report时内存利用率和作业执行时间的测试结果。有测试结果可知,采用本发明方法的Spark平台内存利用率最大提升了121.14%,平均提升了104.25%。作业执行时间最大缩短了69.27%,平均缩短了41.96%。实验结果表明,在固定输入数据和任务执行器保留个数的情况下,使用数据放置技术的Spark性能在不同任务执行器配置下均获得了优于原生Spark的性能,其原因是集成RDD动态放置的Spark将缓存的分区放置在了剩余的任务执行器中,任务执行器的内存设置的越高,缓存的分区就越多,执行查询时,需要从磁盘读取的数据量就越少,任务执行的就越快。而对于使用放置技术的Spark而言,任务执行器的内存越大,内存利用率就会越小,执行时间就会越短。这是因为输入数据和保留的任务执行器个数一定的情况下,任务执行器内存配置越大,内存利用率自然会变低。即使任务执行器的内存利用率变低了,也比原生Spark的内存利用率高。
不同输入数据大小下的测试
该部分测试为保持任务执行器配置和任务执行器保留个数不变,改变输入数据进行测试。实验中,可以设置任务执行器配置可固定为8GB,任务执行器保留个数可固定为3个。当前输入数据可以设置成5组,如表5所示。
表5输入数据的取值范围
测试组编号 1 2 3 4 5
输入数据大小(GB) 4 8 12 16 20
表6q1_pricing_summary_report.hive在不同输入数据下的内存利用率测试结果
表7q1_pricing_summary_report.hive在不同输入数据下的请求平均响应时间测试结果
表6和表7分别给出在不同输入数据下,原生Spark和使用数据放置技术的Spark在执行q1_pricing_summary_report时内存利用率和作业执行时间的测试结果。由测试结果可知,采用本发明方法的Spark平台内存利用率最大提升了108.87%,平均提升了84.18%。作业执行时间最大缩短了68.99%,平均缩短了58.39%。实验结果表明,在固定任务执行器配置和任务执行器保留个数的情况下,使用数据放置技术的Spark性能获得了优于原生Spark的性能,其原因是集成RDD动态放置的Spark将缓存的分区放置在了剩余的任务执行器中,任务执行器的内存设置的越高,缓存的分区就越多,执行查询时,需要从磁盘读取的数据量就越少,任务执行的就越快。而对于集成RDD动态放置的Spark而言,输入数据越大,内存利用率就会越大,执行时间就会越长。即使执行时间随着输入数据的变大而变长,也不会影响其整体性能优于原生Spark。
不同任务执行器保留个数的测试
该部分测试为保持任务执行器配置和输入数据不变,改变任务执行器的保留个数进行测试。实验中,可以设置任务执行器配置可固定为8GB,输入数据固定为12GB,任务执行器的保留个数可以设置成5组,如表8所示。
表8任务执行器的保留个数取值范围
测试组编号 1 2 3 4 5
任务执行器的保留个数 1 2 3 4 5
表9q1_pricing_summary_report.hive在不同任务执行器的保留个数下的内存利用率测试结果
表10q1_pricing_summary_report.hive在不同任务执行器的保留个数下的请求平均响应时间测试结果
表9和表10分别给出在不同任务执行器保留个数下,原生Spark和使用数据放置技术的Spark在执行q1_pricing_summary_report时内存利用率和作业执行时间的测试结果。有测试结果可知,采用本发明方法的Spark平台内存利用率最大提升了268.66%,平均提升了131.17%。作业执行时间最大缩短了62.99%,平均缩短了47.55%。实验结果表明,在不同的任务执行器保留个数下,使用数据放置技术的Spark性能获得了优于原生Spark的性能,其原因是集成RDD动态放置的Spark将缓存的分区放置在了剩余的任务执行器中,任务执行器的保留个数越多,能缓存的分区就越多,执行查询时,需要从磁盘读取的数据量就越少,任务执行的就越快。而对于集成RDD动态放置的Spark而言,任务执行器的保留个数越多,内存利用率就会越低,执行时间就会越短。即使内存利用率随着任务执行器的保留个数的变多而变低,也不会影响其整体性能优于原生Spark。
最后应说明的是:以上示例仅用以说明本发明而并非限制本发明所描述的技术,而一切不脱离发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。

Claims (2)

1.一种面向交互式Spark应用的数据动态放置方法,其特征在于:该数据放置方法分为五个步骤:初始化、缓存RDD分区价值评估、缓存RDD分区的保留选取、缓存RDD分区数据的重放置和结束;在本方法中,有九个基本参数:任务执行器的过期时间τ、加速度常数c1,c2、惯性因子ω、随机函数r1,r2、迭代次数NI、粒子数量pNumber、用户给定的权值比例θ;τ取值为大于60的整数,c1,c2取值为1~3之间,ω为3~5之间、r1,r2的取值为0~1之间,NI取值为50~100之间,pNumber的取值为3~10之间,θ的取值为大于0的实数;
上述方法在计算机上按以下步骤实现:
在交互式Spark应用的非活跃期持续时间大于τ秒时,依次执行以下步骤:
步骤(1)初始化:从Spark平台既有数据管理组件及任务执行器管理组件采集用于数据放置决策的初始化信息INFO,INFO的表示形式如公式(1)所示;
INFO={minExeNum,NETINFO,EXEINFO,RDDINFO,PARINFO} (1)
其中,minExeNum为动态资源分配下应用持有任务执行器的最小数量,NETINFO为Spark平台网络信息,EXEINFO为Spark交互式应用包含的任务执行器信息,RDDINFO为Spark交互式应用所包含的缓存RDD信息,PARINFO为缓存RDD分区信息;其中,
NETINFO表示为NETINFO={workerNum,NET};其中,workerNum为集群中工作节点的数量;NET为网络带宽集合,表示为NET={netmn|1≤m≤workerNum,1≤n≤workerNum},netmn表示第m个工作节点到第n个工作节点的网络带宽;
EXEINFO表示为EXEINFO={exeNum,exeStorCap,EXE,CORE};其中,exeNum为Spark交互式应用所包含的任务执行器的总数量;exeStorCap为任务执行器的存储容量;EXE为任务执行器集合,表示为EXE={exe1,exe2,...,exek-1,exek,...,exeexeNum},其中,exek=k;CORE为任务执行器核数集合,表示为CORE={corek|1≤k≤exeNum},corek表示exek的CPU核数;对于EXE中的元素的所有元素,满足corek>corek-1
RDDINFO表示为RDDINFO={rddNum,RS,TPN,RPN};其中,rddNum为交互式应用包含的缓存RDD数量;RS为缓存RDD集合,表示为RS={rddi|1≤i≤rddNum},rddi表示第i个缓存RDD;TPN为缓存RDD分区总数集合,表示为TPN={tpni|1≤i≤rddNum},tpni表示rddi的缓存分区总数;RPN为缓存RDD在内存中的分区数量集合,表示为RPN={rpni|1≤i≤rddNum},rpni表示rddi的在内存中的分区数量;
PARINFO表示为PARINFO={PA,SE,FR,FT,ST};其中,PA为分区集合,表示为PA={paij|1≤i≤rddNum,1≤j≤tpni},paij表示rddi的第j个分区;SE 为分区大小集合,表示为SE={seij|1≤i≤rddNum,1≤j≤tpni},seij表示分区paij(paij∈PA)的大小;FR为分区使用频度集合,表示为FR={frij|1≤i≤rddNum,1≤j≤tpni},frij表示分区paij(paij∈PA)的使用频度;FT为分区对应任务的完成时间集合,表示为FT={ftij|1≤i≤rddNum,1≤j≤tpni},ftij表示分区paij(paij∈PA)对应任务的完成时间;ST为分区对应任务的起始时间集合,表示为ST={stij|1≤i≤rddNum,1≤j≤tpni},stij表示分区paij(paij∈PA)对应任务的起始时间;
如果minExeNum为0,则关闭所有任务执行器并执行步骤(5);否则,执行步骤(2);
步骤(2)缓存RDD分区价值评估;
步骤2.1)定义交互式应用的任务并行度为taskPar,利用公式(2)计算taskPar;
其中,corek∈CORE;
步骤2.2)定义分区paij(paij∈PA)的重计算代价为rcij,对于每一个分区paij(paij∈PA),利用公式(3)计算rcij
rcij=ftij-stij (3)
其中,ftij∈FT,stij∈ST;
步骤2.3)定义rddi(rddi∈RS)的完整度为cfi;对于每一个rddi(rddi∈RS),利用公式(4)计算cfi
其中,rpni∈RPN,tpni∈TPN;
步骤2.4)定义rddi(rddi∈Rs)的分区缺失程度为levi;对于每一个rddi(rddi∈RS),利用公式(5)计算levi
其中,rpni∈RPN,tpni∈TPN;
步骤2.5)定义分区paij(paij∈PA)的价值为valueij,对于每一个分区paij(paij∈PA),利用公式(6)计算分区paij(paij∈PA)的价值valueij
其中,frij∈FR;
步骤2.6)定义分区paij放置到任务执行器exek上的数据迁移代价为DMCijk;对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(7)计算DMCijk
其中,loce(exek)(exek∈EXE)为任务执行器exek所在的工作节点,locp(paij)(paij∈PA)为分区paij所在的任务执行器;由公式(7)可知,如果loce(locp(paij))=loce(exek),则DMCijk为0;这是因为如果分区与任务执行器位于同一工作节点上,分区的放置是没有数据迁移代价的;
步骤2.7)定义分区paij(paij∈PA)放置到任务执行器exek(exek∈EXE)上的收益为profitijk,对于每一个分区paij(paij∈PA)和每一个任务执行器exek(exek∈EXE),利用公式(8)计算profitijk
其中,对于不再保留的分区,将其放置到上,并令分区paij(paij∈PA)在exe0上的收益profitij0为0;
步骤(3)缓存RDD分区的保留选取;
基于粒子群算法选取保留的缓存RDD分区;
步骤3.1)定义粒子群为PX,PX表示为PX={pxq|1≤q≤pNumber};其中,pxq(pxq∈PX)表示为pxq={(paij,exek)|paij∈PA,exek∈EXE∪{exe0}},(paij,exek)表示将分区paij放置到任务执行器exek上;
步骤3.2)定义粒子pxq(pxq∈PX)上保留任务执行器集合为REq,REq表示为
步骤3.3)定义粒子pxq(pxq∈PX)上关闭任务执行器的集合为RMq,RMq表示为RMq=EXE-REq
步骤3.4)随机初始化粒子群PX,对于粒子pxq(pxq∈PX),pxq必须满足公式(9);对于集合REq的大小|REq|,必须满足公式(10);
|REq|=minExeNum (10)
其中,seij∈SE;公式(9)表示在集合REq中,不存在任务执行器exek上所有分区大小之和大于任务执行器的存储容量ExeStorCap,公式(10)表示动态资源分配下保留的任务执行器数量|REq|必须与交互式应用持有任务执行器的最小数量minExeNum相等;
步骤3.5)定义收益权重系数为w1,CPU核数的权重系数w2;令
步骤3.6)定义迭代次数为δ,并令δ的初始值为0;
步骤3.7)定义粒子pxq(pxq∈PX)的适应度为fitnessq,利用公式(11)计算fitnessq
步骤3.8)定义粒子pbestq,pbestq为相邻两轮迭代中,适应度较大的粒子,令对于每一个粒子pxq(pxq∈PX),利用公式(12)求得pbestq
其中,表示粒子pxq在δ次迭代后的粒子,表示的适应度;
步骤3.9)定义粒子gbest,gbest可表示为粒子群PX中适应度最大的粒子,利用公式(13)求得gbest;
其中,表示取所有pbesti粒子中,适应度最大的粒子;
步骤3.10)若{(paij,exek)|(paij,exek)∈pbestq},则令elqij=exek,elqij即为粒子pbestq中,分区paij的位置;若{(paij,exek)|(paij,exek)∈gbest},则令egij=exek,egij即为粒子gbest中,分区paij的位置;δ自增1,如果δ<NI,则执行步骤3.10.1)到步骤3.10.5),否则执行步骤(4);
步骤3.10.1)定义粒子pxq(pxq∈PX)的每一个分区paij(paij∈PA)在第δ次迭代时的速度为粒子pxq中分区paij(paij∈PA)所处的任务执行器为exek;对于每一个粒子pxq(pxq∈PX)中的每一个分区paij(paij∈PA),利用公式(14)和公式(15)进行计算粒子pxq(pxq∈PX)中分区paij在第δ次迭代时的和exek
根据公式(14)和公式(15)可知,当迭代次数δ=0时,粒子pxq(pxq∈PX)中分区paij的速度为v和x;v为区间[-exeNum-1,exeNum+1]的整数,x为区间[0,exeNum]的整数;当迭代次数δ>0时,按照粒子群算法的转换公式对粒子pxq中的分区paij(paij∈PA)进行位置转换;
步骤3.10.2)若粒子满足步骤3.4)中的公式(9)和公式(10),则执行步骤3.10.3);否则执行步骤3.10.5);
步骤3.10.3)利用公式(11)计算的适应度如果 则令pbestq并执行步骤3.10.4);否则,执行步骤执行3.10);
步骤3.10.4)如果则令gbest为执行步骤3.10);
步骤3.10.5)令为pbestq,并执行步骤3.10);
步骤(4)缓存RDD分区数据的重放置;
步骤4.1)定义gbest中保留的任务执行器集合为GME,GME可表示为
步骤4.2)对于每一个(paij,exek)((paij,exek)∈gbest),执行以下步骤;
步骤4.2.1)若exek=exe0,则删除paij
步骤4.2.2)若exek≠exe0,则判断,若exek≠locp(paij),则把分区paij放置到任务执行器exek上;
步骤4.3)关闭集合EXE-GME中的所有任务执行器;
步骤(5)结束:中止数据动态放置过程。
2.根据权利要求1所述的一种面向交互式Spark应用的数据动态放置方法,其特征在于:在Spark大数据处理平台中应用的任务执行器分配模块中增设一个决策模块并改造Spark的数据块管理模块;这个决策模块在交互式数据查询应用处于非活跃期时,会在任务执行器被关闭前收集相关信息(步骤(1)),然后利用这些信息对所有RDD缓存分区进行价值评估(步骤(2)),再基于粒子群算法求出求得所有数据放置方法(步骤(3)),接着根据全局最优粒子的各个分区位置进行分区放置(步骤(4)),最后结束本方法(步骤(5)),中止数据动态放置过程。
CN201810455119.6A 2018-05-14 2018-05-14 一种面向交互式Spark应用的数据动态放置方法 Active CN108614738B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810455119.6A CN108614738B (zh) 2018-05-14 2018-05-14 一种面向交互式Spark应用的数据动态放置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810455119.6A CN108614738B (zh) 2018-05-14 2018-05-14 一种面向交互式Spark应用的数据动态放置方法

Publications (2)

Publication Number Publication Date
CN108614738A true CN108614738A (zh) 2018-10-02
CN108614738B CN108614738B (zh) 2022-02-15

Family

ID=63663167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810455119.6A Active CN108614738B (zh) 2018-05-14 2018-05-14 一种面向交互式Spark应用的数据动态放置方法

Country Status (1)

Country Link
CN (1) CN108614738B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110287010A (zh) * 2019-06-12 2019-09-27 北京工业大学 一种面向Spark时间窗口数据分析的缓存数据预取方法
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统
CN112667170A (zh) * 2021-01-12 2021-04-16 北京工业大学 一种面向滑动窗口数据分析的Spark数据缓存方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951372A (zh) * 2015-06-16 2015-09-30 北京工业大学 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法
US20170075964A1 (en) * 2015-09-11 2017-03-16 International Business Machines Corporation Transforming and loading data utilizing in-memory processing
CN107247973A (zh) * 2017-06-29 2017-10-13 中国矿业大学 一种基于spark的支持向量机参数优选并行粒子群寻优方法
CN107395704A (zh) * 2017-07-13 2017-11-24 福州大学 一种Spark云计算平台下的结构物理参数辨识方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951372A (zh) * 2015-06-16 2015-09-30 北京工业大学 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法
US20170075964A1 (en) * 2015-09-11 2017-03-16 International Business Machines Corporation Transforming and loading data utilizing in-memory processing
CN107247973A (zh) * 2017-06-29 2017-10-13 中国矿业大学 一种基于spark的支持向量机参数优选并行粒子群寻优方法
CN107395704A (zh) * 2017-07-13 2017-11-24 福州大学 一种Spark云计算平台下的结构物理参数辨识方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘思宇: "Spark平台中任务执行时间预测方法研究", 《软件导刊》 *
杨忙忙: "Spark数据处理平台中资源动态分配技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110287010A (zh) * 2019-06-12 2019-09-27 北京工业大学 一种面向Spark时间窗口数据分析的缓存数据预取方法
CN110287010B (zh) * 2019-06-12 2021-09-14 北京工业大学 一种面向Spark时间窗口数据分析的缓存数据预取方法
CN112597076A (zh) * 2020-12-22 2021-04-02 中国科学院软件研究所 一种面向Spark的基于数据感知的缓存替换方法及系统
CN112667170A (zh) * 2021-01-12 2021-04-16 北京工业大学 一种面向滑动窗口数据分析的Spark数据缓存方法
CN112667170B (zh) * 2021-01-12 2024-04-05 北京工业大学 一种面向滑动窗口数据分析的Spark数据缓存方法

Also Published As

Publication number Publication date
CN108614738B (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
Hadary et al. Protean:{VM} allocation service at scale
Klimovic et al. Understanding ephemeral storage for serverless analytics
WO2022262167A1 (zh) 集群资源调度方法及装置、电子设备和存储介质
US10534542B2 (en) Dynamic core allocation for consistent performance in a non-preemptive scheduling environment
Wang et al. Characterization and optimization of memory-resident MapReduce on HPC systems
Tian et al. A dynamic and integrated load-balancing scheduling algorithm for cloud datacenters
CN108614738B (zh) 一种面向交互式Spark应用的数据动态放置方法
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
CN104123189A (zh) 一种基于IaaS层应用感知的Web多层应用动态资源调整方法
Liu et al. Preemptive hadoop jobs scheduling under a deadline
CN110502323B (zh) 一种云计算任务实时调度方法
Xie et al. Pandas: robust locality-aware scheduling with stochastic delay optimality
CN102739785B (zh) 基于网络带宽估计的云计算任务调度方法
Dang et al. Combination of replication and scheduling in data grids
US10929025B2 (en) Data storage system with I/O determinism latency optimization
Elshater et al. A study of data locality in YARN
Nanda et al. Racc: resource-aware container consolidation using a deep learning approach
CN109358964B (zh) 一种服务器集群资源调度方法
US20070233449A1 (en) Simulation of hierarchical storage systems
CN111061618B (zh) 云平台仿真系统、云平台性能测试方法和计算机设备
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
Sudarsan et al. Scheduling resizable parallel applications
Kambatla et al. UBIS: Utilization-aware cluster scheduling
Soosai et al. Dynamic replica replacement strategy in data grid
Kambatla et al. Optimistic scheduling with service guarantees

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