一种基于MapReduce识别优化数据倾斜的方法及系统的制作方法

文档序号:10612790阅读:319来源:国知局
一种基于MapReduce识别优化数据倾斜的方法及系统的制作方法
【专利摘要】本发明公开了一种基于MapReduce识别优化数据倾斜的方法及系统,首先构建数据倾斜指标的标准值和数据倾斜决策树优化方案,通过数据倾斜指标的实际值与数据倾斜指标的标准值对比,自动识别是否存在数据倾斜,若存在数据倾斜,则量化评估数据倾斜的程度并确定所属优化场景类型和选择合适的决策树优化方案进行优化,最后对决策树优化方案进行修改和扩展。通过本方法解决了传统方法没有识别数据倾斜的能力,优化方案单一,人工判断效率低的问题。
【专利说明】
一种基于MapReduce识别优化数据倾斜的方法及系统
技术领域
[0001]本发明涉及计算机网络安全技术领域,尤其涉及一种基于MapReduce识别优化数据倾斜的方法及系统。【背景技术】
[0002]MapReduce作为一种海量数据处理的并行编程模型,目前已经广泛应用在网页索弓丨、数据挖掘、科学模拟以及云计算平台中。MapReduce的系统架构具有很好的扩展性和良好的容错性。MapReduce框架很适合处理文档分析、倒排索引建立等类型的应用,然而在列存储、索引建立、连接计算、迭代计算、科学计算及调度算法方面性能需要进一步优化。在用 MapRreduce进行数据的查询和处理时,经常会遇到数据倾斜的问题。数据倾斜即因为数据分布不均,导致某些作业完成的时间远高于其他作业,从而造成总体程序运行的资源消耗和效率低下。
[0003]数据倾斜的深层原因来自于MapReduce的框架设计,MapReduce会将map端数据进行分区,分区后的数据会分给对应的reduce进行处理。MapReduce中的默认分区方式是 hash分区,这种分区方法会首先将key hash化,再对reduce的个数取模,所以它会造成相同的key都会分到同一个reduce上。如果某个key的数量远远高于其他key,这个reduce 的负载就会高于其他reduce,造成数据倾斜。所以针对数据倾斜的解决思想一般是采取措施使倾斜数较均衡的分配到reduce端或是不经过reduce阶段。
[0004]目前针对数据倾斜解决方式主要有以下几种:第一种是判断表的大小,若是大小表连接,则将小表放入内存进行map join ;第二种是调整MapReduce中的一些优化参数;第三种是调整map个数或reduce个数。
[0005]以上几种方法存在以下问题:一是绝大部分针对数据倾斜的方案只有如何减轻或处理数据倾斜,而没有提到如何去识别数据倾斜及了解其倾斜的程度;二是目前的优化方案一般只有针对某种场景的单一方法,没有针对多场景的整体方案;三是针对数据倾斜的优化方案很多都是选择基于人工判断,没有形成自动化判断,效率低。
【发明内容】

[0006]针对上述技术问题,本发明提供了一种基于MapReduce识别优化数据倾斜的方法及系统,该方法首先构建数据倾斜指标的标准值和数据倾斜决策树优化方案,通过数据倾斜指标的实际值与数据倾斜指标的标准值对比,自动识别是否存在数据倾斜,若存在数据倾斜,则量化评估数据倾斜的程度并确定所属优化场景类型和选择合适的决策树优化方案进行优化,最后对决策树优化方案进行修改和扩展。对于以往的识别优化数据倾斜的发明来说,本发明解决了目前的优化方案只针对某种场景,方法单一的问题,并且避免了传统的识别数据倾斜都是基于人工判断,效率低的问题。
[0007]—种基于MapReduce识别优化数据倾斜的方法,包括:构建数据倾斜指标和数据倾斜指标的标准值;根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案;根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否存在数据倾斜; 若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;根据优化场景类型选择合适的决策树优化方案进行优化;更新决策树优化方案。
[0008]进一步的,所述数据倾斜指标包括数据表大小、倾斜key的阈值、倾斜key的个数、 数据倾斜率、查询操作关键字。
[0009]进一步的,所述自动识别是否存在数据倾斜为获取每个key的频数,取key频数最高的N个,如果key的频数大于倾斜key的阈值,则认为所述key倾斜,记录所述倾斜的key 并记录倾斜key的个数,计算数据倾斜率。
[0010]进一步的,所述根据数据倾斜指标的实际值确定所属优化场景类型,包括:(1)若数据倾斜指标的实际值包含null,则所属空值连接类型;(2)若数据倾斜指标的实际值中数据表大小小于等于l〇〇m,则所属大小表连接类型;(3)若数据倾斜指标的实际值中数据表大小大于等于l〇〇m小于等于500m,则所属半连接类型;(4)若数据倾斜指标的实际值中数据表大小大于500m,则所属大表连接类型;(5)若数据倾斜指标的实际值包含查询操作关键字,则所属group by类型。
[0011]进一步的,所述根据优化场景类型选择合适的决策树优化方案进行优化,包括:空值连接类型:将空值字段转化为随机数,使其均匀分布到reduce端上;大小表连接类型: 将小表放入内存中,在map端完成连接,不经过reduce端;半连接类型:过滤掉表中多余的 key,减少表的体积;大表连接类型:倾斜数据和非倾斜数据分开分配到适合的reduce端上,将处理后的数据结合起来;group by类型:map端数据随机分配到reduce端。
[0012]—种基于MapReduce识别优化数据倾斜的系统,包括:第一构建模块,用于构建数据倾斜指标和数据倾斜指标的标准值;第二构建模块,用于根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案;识别模块,用于根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否存在数据倾斜;选择场景模块,用于若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;优化模块,用于根据优化场景类型选择合适的决策树优化方案进行优化;更新模块,用于更新决策树优化方案。
[0013]进一步的,所述第一构建模块中数据倾斜指标包括数据表大小、倾斜key的阈值、 倾斜key的个数、数据倾斜率、查询操作关键字。
[0014]进一步的,所述识别模块中自动识别是否存在数据倾斜为获取每个key的频数, 取key频数最高的N个,如果key的频数大于倾斜key的阈值,则认为所述key倾斜,记录所述倾斜的key并记录倾斜key的个数,计算数据倾斜率。
[0015] 进一步的,所述选择场景模块中根据数据倾斜指标的实际值确定所属优化场景类型,包括:(1)若数据倾斜指标的实际值包含nul 1,则所属空值连接类型;(2 )若数据倾斜指标的实际值中数据表大小小于等于l〇〇m,则所属大小表连接类型;(3)若数据倾斜指标的实际值中数据表大小大于等于l〇〇m小于等于500m,则所属半连接类型;(4)若数据倾斜指标的实际值中数据表大小大于500m,则所属大表连接类型;(5)若数据倾斜指标的实际值包含查询操作关键字,则所属group by类型。
[0016] 进一步的,所述优化模块中根据优化场景类型选择合适的决策树优化方案进行优化,包括:空值连接类型:将空值字段转化为随机数,使其均匀分布到reduce端上;大小表连接类型:将小表放入内存中,在map端完成连接,不经过reduce端;半连接类型:过滤掉表中多余的key,减少表的体积;大表连接类型:倾斜数据和非倾斜数据分开分配到适合的 reduce端上,将处理后的数据结合起来;group by类型:map端数据随机分配到reduce 端。
[0017] 本发明涉及一种基于MapReduce识别优化数据倾斜的方法,本方法不仅包含数据倾斜的识别而且包含数据倾斜的优化;构建数据倾斜指标的标准值,根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案,根据数据倾斜指标的实际值与数据倾斜指标的标准值做对比,自动判断识别出数据倾斜,并评估数据倾斜的程度,根据数据倾斜的具体情况确定所属优化场景类型,选择合适的决策树优化方案进行优化;克服了以往方法没有把识别与优化结合在一起的缺陷,以及优化方案单一、效率低的问题。【附图说明】
[0018]为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为本发明提供的一种基于MapReduce识别优化数据倾斜的方法实施例流程图;图2为本发明提供的一种基于MapReduce识别优化数据倾斜的系统实施例结构图。 【具体实施方式】
[0020] 本发明给出了一种基于MapReduce识别优化数据倾斜的方法及系统,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:本发明首先提供了一种基于MapReduce识别优化数据倾斜的方法,如图1所示,包括: S101构建数据倾斜指标和数据倾斜指标的标准值;所述数据倾斜指标包括数据表大小、倾斜key的阈值、倾斜key的个数、数据倾斜率、查询操作关键字;倾斜key的阀值设为100m,数据表的大小界定值为100m和500m ;S102根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案;决策树优化方案包括:空值连接类型:将空值字段转化为随机数,使其均匀分布到reduce端上;大小表连接类型:将小表放入内存中,在map端完成连接,不经过reduce端; 半连接类型:过滤掉表中多余的key,减少表的体积;大表连接类型:倾斜数据和非倾斜数据分开分配到适合的reduce端上,将处理后的数据结合起来;group by类型:map端数据随机分配到reduce端;S103根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否存在数据倾斜;所述自动识别是否存在数据倾斜为获取每个key的频数,取key频数最高的N个,如果 key的频数大于倾斜key的阈值,则认为所述key倾斜,记录所述倾斜的key并记录倾斜key 的个数,计算数据倾斜率;N取10到20之间的整数,数据倾斜率越大数据倾斜越严重;S104若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;优化场景类型包括:(1)若数据倾斜指标的实际值包含null,则所属空值连接类型; (2)若数据倾斜指标的实际值中数据表大小小于等于100m,则所属大小表连接类型;(3) 若数据倾斜指标的实际值中数据表大小大于等于l〇〇m小于等于500m,则所属半连接类型; (4)若数据倾斜指标的实际值中数据表大小大于500m,则所属大表连接类型;(5)若数据倾斜指标的实际值包含查询操作关键字,则所属group by类型;S105根据优化场景类型选择合适的决策树优化方案进行优化;通过构建决策树优化方案将多种数据倾斜类型进行联系和区分,根据数据倾斜指标的实际值,自动将数据倾斜的优化场景进行归类,并自动分类优化方案;S106更新决策树优化方案;提供决策树优化方案的程序接口以进行先验知识的修改和补充。
[0021]本发明还提供了一种基于MapReduce识别优化数据倾斜的系统,如图2所示,包括:第一构建模块201,用于构建数据倾斜指标和数据倾斜指标的标准值;第二构建模块202,用于根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案;识别模块203,用于根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否存在数据倾斜;选择场景模块204,用于若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;优化模块205,用于根据优化场景类型选择合适的决策树优化方案进行优化;更新模块206,用于更新决策树优化方案。
[0022]本说明书中方法的实施例采用递进的方式描述,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0023]综上所述,本发明涉及一种基于MapReduce识别优化数据倾斜的方法。本方法首先构建数据倾斜指标、数据倾斜指标的标准值和数据倾斜决策树优化方案,通过数据倾斜指标的实际值与数据倾斜指标的标准值对比自动识别出数据倾斜,并且估算出数据倾斜的程度,将多种优化场景进行联系与区分,根据数据倾斜的实际值选择优化场景类型,并给出优化方案,及时更新优化方案。本发明是一种一体化的识别优化方法,可以达到事先识别事后优化的功能,能够灵活的选择适合当前数据倾斜的优化方案,并且进一步对优化方案进行更新。
[0024]以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。
【主权项】
1.一种基于MapReduce识别优化数据倾斜的方法,其特征在于:构建数据倾斜指标和数据倾斜指标的标准值;根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化方案;根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否存在数据倾斜; 若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;根据优化场景类型选择合适的决策树优化方案进行优化;更新决策树优化方案。2.如权利要求1所述的方法,其特征在于,所述数据倾斜指标包括数据表大小、倾斜 key的阈值、倾斜key的个数、数据倾斜率、查询操作关键字。3.如权利要求2所述的方法,其特征在于,所述自动识别是否存在数据倾斜为获取每 个key的频数,取key频数最高的N个,如果key的频数大于倾斜key的阈值,则认为所述 key倾斜,记录所述倾斜的key并记录倾斜key的个数,计算数据倾斜率。4.如权利要求2所述的方法,其特征在于,所述根据数据倾斜指标的实际值确定所属 优化场景类型,包括:(1)若数据倾斜指标的实际值包含nul 1,则所属空值连接类型;(2 )若 数据倾斜指标的实际值中数据表大小小于等于l〇〇m,则所属大小表连接类型;(3)若数据 倾斜指标的实际值中数据表大小大于等于l〇〇m小于等于500m,则所属半连接类型;(4)若 数据倾斜指标的实际值中数据表大小大于500m,则所属大表连接类型;(5)若数据倾斜指 标的实际值包含查询操作关键字,则所属group by类型。5.如权利要求4所述的方法,其特征在于,所述根据优化场景类型选择合适的决策 树优化方案进行优化,包括:空值连接类型:将空值字段转化为随机数,使其均匀分布到 reduce端上;大小表连接类型:将小表放入内存中,在map端完成连接,不经过reduce端; 半连接类型:过滤掉表中多余的key,减少表的体积;大表连接类型:倾斜数据和非倾斜数 据分开分配到适合的reduce端上,将处理后的数据结合起来;group by类型:map端数据 随机分配到reduce端。6.—种基于MapReduce识别优化数据倾斜的系统,其特征在于:第一构建模块,用于构建数据倾斜指标和数据倾斜指标的标准值;第二构建模块,用于根据先验知识和数据倾斜指标的标准值构建数据倾斜决策树优化 方案;识别模块,用于根据数据倾斜指标的标准值和数据倾斜指标的实际值,自动识别是否 存在数据倾斜;选择场景模块,用于若存在数据倾斜,则根据数据倾斜指标的实际值确定所属优化场景类型;优化模块,用于根据优化场景类型选择合适的决策树优化方案进行优化;更新模块,用于更新决策树优化方案。7.如权利要求6所述的系统,其特征在于,所述第一构建模块中数据倾斜指标包括数 据表大小、倾斜key的阈值、倾斜key的个数、数据倾斜率、查询操作关键字。8.如权利要求7所述的系统,其特征在于,所述识别模块中自动识别是否存在数据倾 斜为获取每个key的频数,取key频数最高的N个,如果key的频数大于倾斜key的阈值, 则认为所述key倾斜,记录所述倾斜的key并记录倾斜key的个数,计算数据倾斜率。9.如权利要求7所述的系统,其特征在于,所述选择场景模块中根据数据倾斜指标的 实际值确定所属优化场景类型,包括:(1)若数据倾斜指标的实际值包含null,则所属空 值连接类型;(2)若数据倾斜指标的实际值中数据表大小小于等于100m,则所属大小表连 接类型;(3)若数据倾斜指标的实际值中数据表大小大于等于100m小于等于500m,则所属 半连接类型;(4)若数据倾斜指标的实际值中数据表大小大于500m,则所属大表连接类型; (5)若数据倾斜指标的实际值包含查询操作关键字,则所属group by类型。10.如权利要求9所述的系统,其特征在于,所述优化模块中根据优化场景类型选择 合适的决策树优化方案进行优化,包括:空值连接类型:将空值字段转化为随机数,使其均 勾分布到:reduce端上;大小表连接类型:将小表放入内存中,在map端完成连接,不经过 reduce端;半连接类型:过滤掉表中多余的key,减少表的体积;大表连接类型:倾斜数据 和非倾斜数据分开分配到适合的reduce端上,将处理后的数据结合起来;group by类型: map端数据随机分配到reduce端。
【文档编号】G06F17/30GK105975463SQ201510619074
【公开日】2016年9月28日
【申请日】2015年9月25日
【发明人】邹艳梅, 潘宣辰
【申请人】武汉安天信息技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1