PaaS系统中hbase数据导出方法及装置的制造方法_3

文档序号:9727501阅读:来源:国知局
于所有的reg1n都是按照字典排序的,则用户数据落在aaa_100,bbb_100,bbb_500,bbb_999,bbb_2000这几个reg1n中。
[0083]步骤S203-步骤S205实现了根据数据读取指令中包括的关键字范围,确定待导出的用户数据的起始关键字和结束关键字所在的存储区域。通过root表、meta表、业务表,就可以定位出这个用户的起始key和结束key在哪些reg1n中。这个定位过程是一个常数时间,最多几秒中的时间,这样通过两次定位:一次定位起始key,一次定位结束key,就确定了这个用户的数据范围了。
[0084]步骤S206:对起始关键字和结束关键字所在的业务表,遍历起始关键字和结束关键字所在的业务表中的用户数据文件。
[0085]图4是存储区域中的用户数据文件示例图,一个reg1n里面包含了若干个用户数据文件(HFile),如图4所示,以reg1n ddd为例,其中包括HFileA、HFileB、HFileC、……、等数据文件。通常HFile的数量上限默认是7个(这是一个可配置的值),当超过这个数量后就会触发一次文件合并,会有一个后台线程将这些用户数据文件挨个读出然后合并成一个大的用户数据文件,再将之前的几个小的用户数据文件删除。
[0086]每个HFile文件内部的数据都是按照字典排列的,文件和文件之间并没有任何关系。用户在插入或者更新数据时,会先将这些操作写入到缓存中,等缓存满了就会刷新到磁盘上(一般是写入到hadoop中),所以有几次刷新操作就会出现几个HFile。当确定了某个key,比如bbb_345这个key落在某个reg1n中,那么系统就会挨个的去遍历这些HF i 1 e直到找到为止,所以reg1n中的HFile越多就会影响性能,因为要多打开和遍历文件。于是就需要合并操作。
[0087]如果需要处理的reg1n数量大于等于3个的时候,中间那些reg1n就不需要特殊处理,这是因为所有的reg1n也都是按照字典排序的,因为要获取用户数据的用户的key前缀是bbb_开头的,如果另外一个用户的key前缀是bba_,或者是1313(3_那么一定会排在这个用户之前或者之后,不会出现在bbb_100和bbb_200这样的key中间。因此,确定出aaa_100,bbb_100,bbb_500,bbb_999,bbb_2000这些业务表后,只需要对两端的两个业务表单独进行处理,中间的几个业务表中的HFile直接拷贝出来即可。
[0088]对于aaa_100和bbb_2000这两个reg1n单独进行处理,因为这两个reg1n下的HFile包含了其他用户的数据,所以需要过滤一遍。
[0089]对于aaa_100和bbb_2000这两个reg1n单独进行处理,因为这两个reg1n下的HFile包含了其他用户的数据,所以需要过滤一遍。
[0090]步骤S207:根据用户数据文件中用户数据的关键字中包括的用户标识信息和关键字值,判断用户数据的关键字是否是关键字范围内的关键字。
[0091 ] 沿用上边的例子,对于aaa_100这个reg1n依次遍历其下的所有HFile,然后读出关键字中包括的前缀和关键字值,判断key是否是bbb_开头的,关键字值是否落在关键字范围内。
[0092]对于bbb_2000这个reg1n也是如此。
[0093]步骤S208:当判断为是时,认为该用户数据为关键字匹配的用户数据。
[0094]沿用上边的例子,对于关键字在bbb_l至bbb_2000范围内的用户数据,认为是关键字匹配的用户数据。
[0095]当aaa_100这个reg1n中的所有HFile都遍历完并处理好之后,aaa_100这个reg1n中的bbb_开头的前缀key就处理完了。对于bbb_2000这个reg1n也是如此。当全部处理完后,就拿到了这个用户在这两个reg1n中的所有数据了。
[0096]步骤S206-步骤S208实现了对起始关键字和结束关键字所在的存储区域,根据关键字范围对其中存储的用户数据进行关键字匹配判断。
[0097]步骤S209:将关键字匹配的用户数据拷贝到下载目录下供用户下载。
[0098]沿用上边的例子,将aaa_100和bbb_2000这两个reg1n中关键字匹配的用户数据保存到一个指定的目录下,比如,提供下载的目录下。
[0099]步骤S210:对处于起始关键字和结束关键字所在的业务表之间的业务表,将其中的用户数据拷贝到下载目录下供用户下载。
[0100]沿用上边的例子,直接将中间几个业务表bbb_100,bbb_500,bbb_999这几个reg1n下的HFile拷贝出来即可。
[0101]步骤S209和步骤S210,将用户需要下载的用户数据所涉及到的reg1n下的HFile直接拷贝到数据服务器,例如FTP服务器的指定目录下,这些HFi 1 e最终是存储在hadoop上的,也就是从hadoop上拷贝数据,这里主要的花费时间都是在网络传输上,一般内网都是千兆网卡。一秒钟可以拷贝100M左右,拷贝100G数据大概十多分钟左右。
[0102]执行完上述的流程之后,整个用户数据的导出过程就完成了。当提供出这些HFile文件之后,可以单独提供一套API给用户读取,因为这些HFile是hbase私有格式的二进制数据,提供一套API之后,用户就可以读取里面的键值对了。
[0103]基于同一发明构思,本发明实施例还提供一种PaaS系统中hbase数据导出装置,该装置可以设置在现有的数据服务器中,也可以单独设置。该数据导出装置的结构如图5所示,包括:接收模块101、确定模块102和导出模块103。
[0104]接收模块101,用于接收用户发送的数据读取指令,其中,数据读取指令中包括关键字范围。
[0105]确定模块102,用于根据数据读取指令中包括的关键字范围,确定待导出的用户数据的起始关键字和结束关键字所在的存储区域。
[0106]导出模块103,用于从对起始关键字和结束关键字所在的存储区域,根据关键字范围对其中存储的用户数据进行关键字匹配判断,将关键字匹配的用户数据拷贝到下载目录下供用户下载;对处于起始关键字和结束关键字所在的存储区域之间的存储区域,将其中的用户数据拷贝到下载目录下供用户下载。
[0107]优选的,上述接收模块101接收到的数据读取指令中包括的关键字范围通过起始关键字和结束关键字表征;或接收模块101接收到的数据读取指令中包括的关键字范围通过起始关键字和关键字的数量表征。
[0108]优选的,上述确定模块102,具体用于根据关键字范围,确定待导出的用户数据的起始关键字和结束关键字;依次查询根(root)表、业务字典(meta)表,确定起始关键字和结束关键字所在的meta表;根据起始关键字和结束关键字,查找确定出的meta表所对应的业务表,确定起始关键字和结束关键字所在的业务表。
[0109]优选的,上述确定模块102,具体用于根据起始关键字中包括的用户标识信息和关键字值,以及结束关键字中包括的用户标识信息和关键字值,查询根(root)表、业务字典(meta)表、以及确定出的meta表所对应的业务表,实现确定起始关键字和结束关键字所在的业务表。
[0110]优选的,上述导出模块103,具体用于遍历起始关键字和结束关键字所在的存储区域中的用户数据文件;根据用户数据文件中用户数据的关键字中包括的用户标识信息和关键字值,判断用户数据的关键字是否是所述关键字范围内的关键字;当判断为是时,认为该用户数据为关键字匹配的用户数据。
[0111]本发明实施例提供的PaaS系统中hbase数据导出方法及装置,基于meta表来实现数据的快速导出,不需要逐条读取,能够快速的提供给用户所需的所有存储内容,大大减少了导出操作时间,提升了导出操作速度和效率。
[0112]本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1