[发明专利]一种面向交互式Spark应用的数据动态放置方法有效

专利信息
申请号: 201810455119.6 申请日: 2018-05-14
公开(公告)号: CN108614738B 公开(公告)日: 2022-02-15
发明(设计)人: 梁毅;程石帆;常仕禄;刘飞 申请(专利权)人: 北京工业大学
主分类号: G06F9/50 分类号: G06F9/50
代理公司: 北京思海天达知识产权代理有限公司 11203 代理人: 沈波
地址: 100124 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 面向 交互式 spark 应用 数据 动态 放置 方法
【权利要求书】:

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中的元素的所有元素,满足corekcorek-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;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)),中止数据动态放置过程。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810455119.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top