基于HBase的MAP数据动态切分方法

文档序号:9818293阅读:225来源:国知局
基于HBase的MAP数据动态切分方法【
技术领域
】[0001]本发明涉及数据处理的
技术领域
,具体说是一种基于HBase的MAP数据动态切分方法。【
背景技术
】[0002]HBase是基于Hadoop大数据平台的一种开源分布式列数据库,主要用来存储数据和随机查询,而对于整体遍历的需求,原生的hbase支持得并不够好。reg1n作为hbase数据表的存储基本单元,其大小是预先设置好的,在数据存储过程中,因为主键的问题,多个reg1n的大小并不一样,为了解决回溯效率的问题,现有办法只能是减小hbase单个reg1n的大小,或者根据:rowkey范围设置,可以简单实现分割reg1n,但如果不考虑reg1n的实际文件尺寸,这种切分不能达到很好的效果。[0003]如图1所示,现有技术的数据处理按照以下流程:1)客户端根据所有遍历的table,向Hmaster请求HReg1ninfο集合,即这些table包含哪些个reg1n,Hmaster返回每一个reg1n的位置,即该reg1n位于哪一个Reg1nServer上;2)返回的reg1nlnfo中包含了reg1n的rowkey的开始和截止范围,客户端会根据这些值设定InputSplit的参数,每一个InputSplit会产生一个map任务;3)客户端将任务提交给JobTracker进行执行。[0004]当每个reg1n规模减小,在写入时会经常处罚split的操作,造成hbase的整体性能下降,但每个reg1n设置的过大,又会在MAP时出现reg1n尺寸切分不当的问题。【
发明内容】[0005]本发明要解决的技术问题是提供一种基于HBase的MAP数据动态切分方法。[0006]本发明为解决公知技术中存在的技术问题所采取的技术方案是:本发明的基于HBase的MAP数据动态切分方法,在提交任务之前,通过获得reg1n的对应信息即reg1ninfο,而获得每个reg1n的存储文件大小StorefiIeSize以及该reg1n的开始rowkey和截止rowkey;按以下公式计算切分的份数splitCount:splitCount=StorefileSize/reg1n数据的实际大小+I,再按照切分的份数,将开始和截止rowkey范围内的reg1n平均分配为多个;最后将原本一个Map执行的任务,分为多个Map任务执行。[0007]本发明在执行中包括以下步骤:1)客户端向Hmaster查询系统中所有reg1nLoad的信息,而reg1nLoad中包含每个reg1n的实际文件大小,即StorefiIeSize;2)客户端根据所有遍历的table,向Hmaster请求这些table包含对应的reg1n信息,即查询HReg1nInfο集合,Hmaster根据请求向Reg1nServer查询reg1ninfο并将结果返回客户端,其中包括每一个reg1n的位置,即该reg1n位于哪个Reg1nServer上;3)根据实际需求,配置单个任务处理reg1n数据的实际大小;4)按照每个reg1n的文件大小,得到切分的份数splitCount,splitCount=StorefileSize/reg1n数据的实际大小+1;5)根据spIitCount的值,将这个reg1n在其开始和截止rowkey范围内,平均分为splitCount数个,返回splitCount数个InputSplit,对应每个InputSplit产生一个Map任务,从而共产生splitCount对应数个Map任务;6)提交上述全部Map任务到JobTracker执行。[0008]本发明具有的优点和积极效果是:本发明的基于HBase的MAP数据动态切分方法中,通过判断reg1n文件的实际大小,对单个reg1n的遍历任务进行切分,建立多个任务来并行计算,从而在保证存储性能和资源充分的情况下,能够大幅度提高遍历方式下,数据挖掘和计算的性能,平均能够提高4?6倍,任务整体时间相应缩短。【附图说明】[0009]图1是现有技术中数据处理时的流程示意图;图2是应用了本发明的基于HBase的MAP数据动态切分方法后的数据处理示意图。【具体实施方式】[0010]以下通过附图和具体实施例对本发明进行详细说明。[0011]本发明的基于HBase的MAP数据动态切分方法,在提交任务之前,通过获得reg1n的对应信息即reg1ninfο,而获得每个reg1n的存储文件大小StorefiIeSize以及该reg1n的开始rowkey和截止rowkey,由reg1n的开始rowkey和截止rowkey即可获取reg1n数据的实际大小;按以下公式计算切分的份数splitCount:splitCount=StorefileSize/reg1n数据的实际大小+I,再按照切分的份数,将开始和截止rowkey范围内的reg1n平均分配为多个;最后将原本一个Map执行的任务,分为多个Map任务执行。[0012]如图2所示,本发明在执行中包括以下步骤:1)客户端向Hmaster查询系统中所有reg1nLoad的信息,而reg1nLoad中包含每个reg1n的实际文件大小,即StorefiIeSize;2)客户端根据所有遍历的table,向Hmaster请求这些table包含对应的reg1n信息,即查询HReg1nInfο集合,Hmaster根据请求向Reg1nServer查询reg1ninfο并将结果返回客户端,其中包括每一个reg1n的位置,即该reg1n位于哪个Reg1nServer上;3)根据实际需求,配置单个任务处理reg1n数据的实际大小;4)按照每个reg1n的文件大小,得到切分的份数splitCount,splitCount=StorefileSize/reg1n数据的实际大小+1;5)根据spIitCount的值,将这个reg1n在其开始和截止rowkey范围内,平均分为splitCount数个,返回splitCount数个InputSplit,对应每个InputSplit产生一个Map任务,从而共产生splitCount对应数个Map任务;6)提交上述全部Map任务到JobTracker执行。[0013]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例公开如上,然而,并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当然会利用揭示的技术内容作出些许更动或修饰,成为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围内。【主权项】1.一种基于HBase的MAP数据动态切分方法,其特征在于:在提交任务之前,通过获得reg1n的对应信息即reg1ninfO,而获得每个reg1n的存储文件大小StorefiIeSize以及该reg1n的开始rowkey和截止rowkey;按以下公式计算切分的份数splitCount:splitCount=StorefileSize/reg1n数据的实际大小+1,再按照切分的份数,将开始和截止rowkey范围内的reg1n平均分配为多个;最后将原本一个Map执行的任务,分为多个Map任务执行。2.根据权利要求1所述的基于HBase的MAP数据动态切分方法,其特征在于,包括以下步骤:1)客户端向Hmaster查询系统中所有reg1nLoad的信息,而reg1nLoad中包含每个reg1n的实际文件大小,即StorefiIeSize;2)客户端根据所有遍历的table,向Hmaster请求这些table包含对应的reg1n信息,即查询HReg1nInfο集合,Hmaster根据请求向Reg1nServer查询reg1ninfο并将结果返回客户端,其中包括每一个reg1n的位置,即该reg1n位于哪个Reg1nServer上;3)根据实际需求,配置单个任务处理reg1n数据的实际大小;4)按照每个reg1n的文件大小,得到切分的份数splitCount,splitCount=StorefileSize/reg1n数据的实际大小+1;5)根据spIitCount的值,将这个reg1n在其开始和截止rowkey范围内,平均分为splitCount数个,返回splitCount数个InputSplit,对应每个InputSplit产生一个Map任务,从而共产生splitCount对应数个Map任务;6)提交上述全部Map任务到JobTracker执行。【专利摘要】一种基于HBase的MAP数据动态切分方法,在提交任务之前,通过获得region的对应信息即regioninfo,而获得每个region的存储文件大小StorefileSize以及该region的开始rowkey和截止rowkey;按以下公式计算切分的份数splitCount:splitCount=StorefileSize/region数据的实际大小+1,再按照切分的份数,将开始和截止rowkey范围内的region平均分配为多个;最后将原本一个Map执行的任务,分为多个Map任务执行。本发明在保证存储性能和资源充分的情况下,能够大幅度提高遍历方式下,数据挖掘和计算的性能,平均能够提高4~6倍,任务整体时间相应缩短。【IPC分类】G06F17/30【公开号】CN105589931【申请号】CN201510910420【发明人】庞晓曦,杨伟锋【申请人】天津海量信息技术有限公司【公开日】2016年5月18日【申请日】2015年12月10日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1