The invention discloses an anti-skewed data fragmentation method based on Spark, which includes: step A: obtaining the predicted key cluster distribution of intermediate data and the Spark application type, and then generating a fragmentation strategy matching the Spark application type based on the obtained key cluster distribution; the key cluster is a set of key-value pairs with the same key, and the fragmentation strategy includes: Hash algorithm strategy based on key cluster reallocation and range partitioning algorithm strategy based on key cluster partitioning corresponding to application types without sorting and sorting respectively; Step B: Use the generated partitioning strategy to calculate the reduced index number of each key value pair in Map output data, and then base on the size order of reduced index number to key. The value pairs are written to the intermediate data file in turn. Through the above methods, the anti-deflection mechanism of Spark itself is solved, and the existing Hash and Range methods can not deal with the problem of piecewise deflection.
【技术实现步骤摘要】
一种基于Spark的抗偏斜的数据分片方法
本专利技术属于数据引擎
,具体涉及一种基于Spark的抗偏斜的数据分片方法。
技术介绍
作为一个快速的大数据处理通用引擎,Spark可以将大规模的数据切分成多个分片并且在集群中的多台机器分发运行任务来处理这些数据。Spark强大的计算能力得益于它先进的DAG运算引擎,其支持异步的数据流动和内存计算能力。Shuffle是划分DAG图中stage的依据,它是Spark进行数据处理的一个重要又复杂的过程。正是因为shuffle过程很好地连接了前后两个Stage的数据读写关系,才能使得多台机器协同处理数据。在这个过程中,每个Map任务输出的中间数据将会按键(key)重新分配到指定的redcue分片。如果不同reduce分片间的数据分布不平衡,这将导致一系列的问题:1)远程读取(fetch)数据的时间增加以及数据传输失败的可能性增大。Map任务通常将输出的中间数据存在本地节点,一个reduce任务执行时将需要从不同的节点读取数据。这意味着传输散落在不同节点的中间数据将耗费大量的通信时间,甚至引起传输数据失败。2)作业执行时间增加以及执行性能下降。重新分区难以保证分区间的数据平衡。当一些分区的数据远多于其他分区时,这个分区的执行时间将大大延长整个Stage的执行时间,从而影响作业的执行时间。为了处理数据偏斜的问题,目前的解决方案主要包括以下几个方面:提高数据本地性;减少通信代价;提高资源利用率;减轻分片偏斜。在上述方法中,最直接的方法是实现高效均衡的分片算法使得每个reduce分片数据量相近,因为分片负载不均衡是偏斜问题 ...
【技术保护点】
1.一种基于Spark的抗偏斜的数据分片方法,其特征在于:包括如下步骤:步骤A:获取预估的中间数据的键簇分布以及Spark应用类型,再基于获取的键簇分布生成与Spark应用类型相匹配的分片策略;其中,所述键簇为键相同的键值对集合,Spark应用类型包括无需排序的应用类型和需排序的应用类型,所述分片策略包括分别与无需排序、需排序的应用类型相对应的基于键簇重分配的哈希算法策略和基于键簇分割的范围分片算法策略;步骤B:利用生成的分片策略计算出Map输出数据中每个键值对的reduce索引号,再基于reduce索引号的大小顺序将键值对依次写入中间数据文件中,使得每个键值对存在对应的唯一reduce分片;其中,每个reduce索引号对应一个reduce分片,步骤B中计算出每个键值对的reduce索引号的过程为如下步骤a或步骤b:a:利用所述键簇重分配的哈希算法策略中的偏斜分片表和重分配策略表识别出Map输出数据中需采用哈希分片算法获取reduce索引号的键值对以及需利用重分配策略表获取reduce索引号的键值对,并分别计算出reduce索引号;所述偏斜分片表包括偏斜分片的索引号,所述重分配策略表包 ...
【技术特征摘要】
1.一种基于Spark的抗偏斜的数据分片方法,其特征在于:包括如下步骤:步骤A:获取预估的中间数据的键簇分布以及Spark应用类型,再基于获取的键簇分布生成与Spark应用类型相匹配的分片策略;其中,所述键簇为键相同的键值对集合,Spark应用类型包括无需排序的应用类型和需排序的应用类型,所述分片策略包括分别与无需排序、需排序的应用类型相对应的基于键簇重分配的哈希算法策略和基于键簇分割的范围分片算法策略;步骤B:利用生成的分片策略计算出Map输出数据中每个键值对的reduce索引号,再基于reduce索引号的大小顺序将键值对依次写入中间数据文件中,使得每个键值对存在对应的唯一reduce分片;其中,每个reduce索引号对应一个reduce分片,步骤B中计算出每个键值对的reduce索引号的过程为如下步骤a或步骤b:a:利用所述键簇重分配的哈希算法策略中的偏斜分片表和重分配策略表识别出Map输出数据中需采用哈希分片算法获取reduce索引号的键值对以及需利用重分配策略表获取reduce索引号的键值对,并分别计算出reduce索引号;所述偏斜分片表包括偏斜分片的索引号,所述重分配策略表包括偏斜分片中待重分配键簇的键和所分配的分片的索引号;b:利用所述基于键簇分割的范围分片算法策略中的边界表获取Map输出数据中每个键值对的键与分界点的键的前后序列关系,再基于所述前后序列关系计算出每个键值对的reduce索引号;所述边界表包括分界点对应的键和分界点的权重,所述分界点是相邻两个分片的分割节点。2.根据权利要求1所述的方法,其特征在于:生成基于键簇重分配的哈希算法策略的过程如下:步骤1:利用哈希分片算法给每个键簇分配索引号得到哈希分片,并计算每个哈希分片的权重以及哈希分片的权重均值;其中,同一索引号的键簇构成一个哈希分片;步骤2:基于每个哈希分片的权重预测偏斜分片,并将偏斜分片的索引号记录在偏斜分片表中;其中,哈希分片的权重超过偏斜阈值时,所述哈希分片为预测的偏斜分片;步骤3:将每个偏斜分片中的键簇划分至两个子集;其中,第一子集中的键簇保留在原偏斜分片中,第二子集中的键簇是待重新分配的;步骤4:采用First-Fit算法对每个偏斜分片的第二子集中键簇进行哈希分片的重新分配,并在重分配策略表中记录重分配的键簇的键以及所分配的哈希分片的索引号。3.根据权利要求2所述的方法,其特征在于:步骤B中利用基于键簇重分配的哈希算法策略计算出Map输出数据中每个键值对的reduce索引号的过程如下:步骤5:利用哈希分片算法计算Map输出数据中每个键值对的reduce索引号,并分别判断偏斜分片表中是否存在每个键值对的reduce索引号,若存在,执行步骤6;否则,对应键值对的reduce索引号不变;步骤6:查找重分配策略表中是否存在对应键值对的键,若存在,根据重分配策略表获取所述键值对应的索引号;若不存在,对应键值对的reduce索引号不变。4.根据权利要求2所述的方法,其特征在于:步骤3中将每个偏斜分片中的键簇划分为两个子集时均执行如下步骤:步骤3.1:将偏斜分片中的键簇按照权重大小进行降序排列,并获取偏斜分片的剩余空间值;步骤3.2:按照如下规则按序分配键簇直至偏斜分配中所有的键簇均分配完成;其中,步骤3.2的执行过程如下:C:按序获取一个键簇;D:判断键簇的权重是否小于或等于剩余空间值,若是,将所述键簇划分至第一子集中,并更新剩余空间值;否则,将键簇划分至第二子集中;E,按序获取下一个键簇并返回步骤D,直至偏斜分配中所有的键簇均分配完成;其中,步骤D中将当前剩余空间值减去当前划分至第一子集的键簇的权重得到更新的剩余空间值。5.根据权利要求2所述的方法,其特征在于:步骤3中第一子集和第二子集之间键簇的关系如下:式中,Wavg为哈希分片的权重均值,表示索引号为j的偏斜分片的第一子集,k表示第一子集中键为k的键簇,Ck表示键为k的键簇的权重,表示索引号为j的偏斜分片的第二子集,表示第二子集中键簇的最小权重。6.根据权利要求2所述的方法,其特征在于:步骤4中采用First-Fit算法对每个偏斜分配的第二子集中键簇进行哈希分片的重分配的过程如下:步骤4.1:将所有偏斜分配中第二子集的所有键簇按照权重大小降序排列,以及将所有哈希分片按照权重大小升序排列;步骤4.2:按序获取一个哈希分片,并判断获取的哈希分片的权重是否小于哈希分片的权重均值,若小于,执行步骤4.3;否则,执行步骤4.5;步骤4.3:计算获取的哈希分片的剩余空间值,并依据键簇排列按序处理待分配的键簇;其中,步骤4.3中依据键簇排列按序处理待分配...
【专利技术属性】
技术研发人员:吕葳,唐卓,李肯立,李克勤,付仲明,肖伟,
申请(专利权)人:湖南大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。