[发明专利]一种面向Spark并行计算框架的迭代式数据均衡优化方法在审

专利信息
申请号: 201710623289.6 申请日: 2017-07-27
公开(公告)号: CN107506388A 公开(公告)日: 2017-12-22
发明(设计)人: 张元鸣;蒋建波;黄浪游;沈志鹏;项倩红;肖刚;陆佳炜;高飞 申请(专利权)人: 浙江工业大学
主分类号: G06F17/30 分类号: G06F17/30;G06F9/50;G06F12/02
代理公司: 杭州天正专利事务所有限公司33201 代理人: 王兵,黄美娟
地址: 310014 浙江省杭*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种面向Spark并行计算框架的迭代式数据均衡分区方法首先,将大数据粗粒度Block划分为细粒度的FG‑Block,根据FG‑Block创建微分区和微分区索引;其次,根据Reducer数量创建等量的Bucket;第三,确定迭代式数据分区的时机、数量和迭代式分区的准则;第四,记录各个Bucket的局部与全局数据分配情况;第五,根据数据均衡分区算法以及分配情况将选择的微分区分配到各个Bucket;最后,将Bucket中已分配的数据传输给Reducer端。本发明为Spark框架提出了一种新的数据均衡分区方法,减少了大数据处理过程中的数据倾斜,提高了Spark并行计算框架的大数据处理整体性能。
搜索关键词: 一种 面向 spark 并行 计算 框架 迭代式 数据 均衡 优化 方法
【主权项】:
一种面向Spark并行计算框架的迭代式数据均衡优化方法,包括以下步骤:(1)创建微分区和微分区索引(1.1)创建细粒度数据块在Spark框架中,默认的数据处理单位是粗粒度数据块Block,如其大小一般设置为128M,对Block进一步细分,得到多个细粒度数据块(Fine‑grained block,FG‑Block),对这些FG‑Block进行迭代处理;(1.2)创建微分区在Mapper阶段,对FG‑Block转换处理之后得到的元组存储到缓存Buffer中,合并Key值相同的元组,合并之后的元组集合称为微分区,这是迭代分区的基本单位;(1.3)创建微分区索引根据微分区的Key值创建索引,索引是用于记录微分区将要被分配到哪个Reducer上的结构;(1.4)设计Bucket结构根据Reducer的数量创建出等量的Bucket,Reducer与Bucket具有一对一的依赖关系,将Bucket从逻辑上划分为多个Segment,每个Segment只能够存储一个微分区,将每次迭代得到的元组集合称为微分区迭代块,不同迭代块存储在Segment的Slot中,而多个微分区可以被分配到相同的Reducer上;(1.5)创建微分区向量将每次微分区的元组数量称为元组因子,在索引与元组因子、分配情况之间建立关联,创建一个记录索引及其元组因子、分配情况的微分区向量α:α=(t1,t2,t3,…,tn),其中ti=(index,factor,bno,sno)(i∈[1,n]),index为索引值,factor为元组因子,bno为Bucket的编号,sno为Segment的段号;(2)确定迭代式数据分区的时机与数量当Mapper对FG‑Chunk处理完成,创建得到微分区的索引之后,开始进行本次迭代的数据分配,将分区的数量设置为Bucket的数量;当某一个微分区的元组因子远大于其他微分区的元组因子时,将不对其进行拆分处理,该情况下通过另选属性作为Key进行分区处理;(3)确定迭代式数据分区的准则当微分区数量较多时,优先选择元组因子大的微分区,目的是将元组数量较多的微分区尽快的传输到依赖的Reducer上,并让元组数量较少的微分区稍后传输,使得有效计算与数据传输能重叠执行,并有助于减少Bucket占用的存储空间;按照以上方法,将根据元组因子对尚未分配的微分区进行倒排,然后选择前面的若干个微分区分配到Reducer上;(4)记录局部与全局的数据分配情况(4.1)记录局部数据分配情况微分区向量α记录了一个Mapper当前迭代轮次上所有微分区的元组因子向量,通过该向量描述该Mapper当前迭代的数据分区情况;(4.2)记录全局数据分配情况将每个Mapper上的α中对应的分量进行累加得到全局的数据分布,用二维向量AM表示:AM=Σαs(s∈[1,m])每次Mapper迭代结束时,将微分区向量α发送给Master,然后将α累加到二维向量AM中,即可得到截至当前迭代轮次全局的数据分布情况;由于Reducer与Bucket是一对一的,因此各个Reducer上分配的元组数量可以通过统计各个Bucket上元组数量得到,定义一个数据分配向量AB:AB=(B1,B2,B3,…,Bb)其中Br=(f1,f2,f3,…,fn)(r∈[1,b]),该向量用于记录每个微分区在Bucket中的分配情况:每一行表示一个Bucket,每一行包含的元素代表着分配到该Bucket上微分区的索引值;通过累加向量AB的每一行的索引因子对应的元组因子得到各个Bucket已被分配的元组总数;(5)设计数据均衡分区算法数据均衡分区算法的任务是在未来数据分布情况未知的情况下,根据已经分配到各个Bucket的微分区及其元组数量,将当前迭代所选择的p个微分区分配给b个Bucket,并使分配后的Bucket的数据量尽可能平衡;数据分配的实现算法如下:步骤a1:累加FG‑Block的微分区向量α得到AM;步骤a2:对AM中的未分配的微分区从大到小排序;步骤a3:根据已分配的数据对Bucket从小到大排序;步骤a4:取出AM的前面p个未分配的微分区,将其分配给前b个Bucket;步骤a5:如果存在下一个FG‑Block,则结束;否则,转步骤a6;步骤a6:根据已分配的数据对Bucket从小到大排序;步骤a7:取出AM的前面p个未分配的微分区,将其分配给前b个Bucket;步骤a8:如果AM中存在未分配的微分区,则转步骤a6;否则,结束;按照以上过程对细分得到的多个细粒度数据块FG‑Block进行迭代处理,使得分配到各个Reducer上的数据均衡达到最优化,减少数据倾斜,提高Spark的数据处理性能。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/patent/201710623289.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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