非关系型数据库HBase的数据迁移方法

文档序号:6511768阅读:682来源:国知局
非关系型数据库HBase的数据迁移方法
【专利摘要】本发明公开了一种非关系型数据库HBase的数据迁移方法。本发明通过读取用户的配置文件信息,将用户指定时间段内的数据从旧的HBase集群中迁移到新的HBase集群中,使用该方法具有以下优点:第一、通过设计RowKey,将数据的组别信息、时间信息体现在RowKey上,数据迁移时扫描RowKey,可直接辨别出该RowKey对应的数据是否在用户指定的迁移时间范围内;第二、以组别作为数据迁移单位,每个组别作为一个检查点,当发生异常情况时,可以将新旧集群之间不同步的数据的范围严格控制在一个组别内,减少恢复数据同步所需的时间;第三、在数据迁移过程中记录日志信息,用于处理数据迁移过程中的异常情况,确保新旧集群之间数据的同步,能够准确、高效的完成HBase集群间的数据迁移。
【专利说明】非关系型数据库HBase的数据迁移方法
【技术领域】
[0001]本发明涉及非关系型数据库的数据迁移技术,尤其涉及一种非关系型数据库HBase的数据迁移方法。
【背景技术】
[0002]数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一,近些年来,随着互联网的发展,特别是互联网Web2.0的兴起,传统的关系型数据库在应对超大规模和高并发的SNS类型的网站时已经显得力不从心,而非关系型数据库则由于其自身的特点在应对大规模数据和高并发的访问时具有很好的表现,所以得到了非常迅速的发展。
[0003]HBase就是一种分布式的、面向列的非关系型数据库,适用于需要实时随机读写超大规模数据的应用。但是随着时间的推移,需要存储的数据量越来越大,虽然HBase可以通过增加集群中的机器来扩展存储能力,但这将影响到对HBase中数据进行读写的速度。另一方面,很早之前存储的数据对于当前应用来说可能不再使用或者很少再进行读写操作,只在进行数据统计和分析时才会被访问到,所以可以将这一部分很少被访问的历史数据迁移到另一个新的集群中,以提高当前集群的存储能力和读写数据的速度。
[0004]目前,关系型数据库都提供了一些数据迁移的方案和工具,但对于非关系型数据库来说,由于其存储的数据量很大,且大多数非关系型数据库都没有针对多行记录的事务特性,所以使得数据迁移的难度增大,鲜有数据迁移的完整方案。由于HBase是一个在分布式文件系统HDFS上开发的分布式数据库,现有的针对HBase的数据迁移方案大多是基于HDFS的数据块,将存储有HBase数据的HDFS数据块复制转移到新的集群上,因为HDFS的数据块转移必须是将整块都转移,并不能拆分开来进行转移,所以这样的转移方式显得不够灵活,无法由用户自定义需要转移的数据`,且数据迁移只能由具有专业知识的数据库管理员来操作,增大了用户的负担。

【发明内容】

[0005]本发明所要解决的技术问题是:提供一种非关系型数据库HBase的数据迁移方法,采用这种迁移方法数据迁移较灵活,而且能由用户自定义需要转移的数据,并且不需要专门的数据库管理员来操作。
[0006]本发明所采用的技术方案是:一种非关系型数据库HBase的数据迁移方法,它包括以下步骤:
1)为非关系型数据库HBase中保存的数据设计合理的RowKey,该RowKey体现出数据的组别?目息和时间?目息;
2)创建一个日志文件,该日志文件包含组别信息、插入信息和删除信息;
3)关闭HBase集群的预写日志WAL并使用压缩技术对需要迁移的数据进行压缩;
4)读取用户配置文件信息,根据用户设定的数据迁移时间,和步骤2)中的日志文件信息,以组别为单位从旧的HBase集群中读取需要迁移的数据;
5)将读取的数据迁移到新的HBase集群上,并修改步骤2)中日志文件的插入信息,并将该信息强制刷新到磁盘上;
6)将已经迁移到新的HBase集群上的数据从旧的HBase集群上删除,并修改步骤2)中日志文件的删除信息,并将该信息强制刷新到磁盘上;
7)继续跳转到步骤4)执行,迁移其他组别的数据,直到所有组别的数据全部迁移到新的HBase集群中。
[0007]所述步骤3)中的压缩技术为SNAPPY压缩技术。
[0008]所述步骤5)的具体步骤如下:
a)从日志文件中读取正在迁移的数据的组别信息,判断该组别的数据是否已经成功的插入新的HBase集群中;
b)若已经成功插入,则什么也不做;若没有成功插入,则将读取到的数据全部插入到新的HBase集群中,并将日志文件中该组别的插入标识置为成功,然后将此插入信息强制刷新到磁盘。
[0009]所述步骤6)的具体步骤如下:
a)从日志文件中读取正在迁移的数据的组别信息,判断该组别的数据是否已经成功的从旧的HBase集群中删除;
b)若已经成功删除,则什么也不做;若没有成功删除,则将对应组别的数据从旧的HBase集群中删除,并将日志文件中该组别的删除标识置为成功,将此删除信息强制刷新到磁盘。
[0010]采用以上结构与现有技术相比,本发明具有以下优点:第一、为HBase中保存的数据设计合理的RowKey,该RowKey体现出数据的组别信息和时间信息,数据迁移时扫描RowKey,可辨别出该RowKey对应数据的时间和组别,不需要解析数据的时间戳等信息,力口快了数据迁移的速度;第二、为保证数据迁移过程中发生了异常情况后可保证数据的一致性,创建了一个日志文件,该日志文件用于保存迁移过程中的组别信息、插入信息和删除信息,在数据迁移过程中发生异常情况后,可以通过日志文件中的信息恢复数据的一致性并继续进行未完成的数据迁移,确保新旧集群之间数据的同步,能够准确、高效的完成HBase集群间的数据迁移;第三、建立了日志文件保证数据迁移过程中的数据一致性,所以可以暂时关闭新集群的预写日志WAL来加快数据插入新集群的速度,并且由于迁移数据量比较大,使用了 SNAPPY对数据进行压缩,提高数据迁移的速度;第四、通过读取用户配置文件信息,用户可以自定义迁移数据的时间段来实现指定数据的迁移,并且迁移以组别为单位进行,每个组别作为一个检查点,如果在数据迁移过程中发生异常情况,可以将新旧集群之间不同步的数据的范围严格控制在一个组别内,当重启数据迁移后,只需恢复少量数据的一致性,提高了迁移的效率和准确性,减少恢复数据同步所需的时间。
【专利附图】

【附图说明】
[0011]图1为本发明非关系型数据库HBase的数据迁移方法的实施流程图。
[0012]图2为本发明非关系型数据库HBase的数据迁移方法的日志文件表示图。
[0013]图3为本发明非关系型数据库HBase的数据迁移方法的用户配置文件表示图。【具体实施方式】
[0014]以下结合附图与【具体实施方式】对本发明做进一步描述,但是本发明不仅限于以下【具体实施方式】。
[0015]图1给出了总体实施流程图,展示了该发明的主要步骤。现结合某市自来水公司历史数据迁移过程,对本发明的方案作进一步说明,具体的实施步骤如下:
1、为非关系型数据库HBase中保存的数据设计合理的RowKey (即行键),该RowKey体现出数据的组别信息和时间信息,具体操作如下:
根据数据迁移的需要,将RowKey的结构设计为:组别一年一月一日一用户自定义信息。其中RowKey的前四个字段(组别一年一月一日)称为RowKey前缀,该RowKey前缀主要用于做数据迁移,是必备字段,而用户自定义信息则可由用户个性化定义。以某市自来水公司历史数据迁移为例,将该市的用户按小区划分,每个小区拥有一个唯一的组别号,这个唯一的组别号作为RowKey的一部分,体现出数据的组别信息;另外,每个用户一天将在HBase集群中存放一条水量数据,该条数据代表哪天的数据将作为时间信息体现在RowKey上;除此之外,用户还在RowKey上自定义了用户号作为区分每一个用户的重要标识。例如,1200号小区88号用户2013年I月I日的用水量数据对应的RowKey为1200-2013-01-01-88。其中第一个字段(1200)体现了组别信息,紧接着的三个字段(2013-01-01)体现了时间信息,最后一个字段(88)体现了用户信息。
[0016]2、创建日志文件,该日志文件有多种存储方式,可以存储为关系型数据库中的表结构、日志信息、或其他系统中的文件,用于保存数据迁移过程中的组别信息、插入信息和删除信息,当迁移发生异常时可通过日志文件信息恢复数据的一致性,具体操作如下:
以某市自来水公司历史数据迁移为例,该市共有1500个小区,编号为1~1500,每个小区拥有一个唯一编号,现需要迁移这1500个小区的所有用户用水量信息,则组别信息文件中存放了需要转移的所有组别信息,其结构如图2所示,其中图2将日志文件存储成了关系数据库中的表结构,该表的第一个属性表示的是组别信息,包含了广1500个需要转移的组别号,一行记录包含一个组别号。
[0017]插入信息主要用于记录某个组别的数据是否完全插入到新的集群中,其结构如图2所示,图2中的第二个属性表示的是插入信息,其中包含了 f 1500个组别的插入信息,一行记录包含一个组别的插入信息,其中标识为“NO”表示该组别的数据没有完全插入新的HBase集群,“YES”表示该组别的数据已经完全插入新的HBase集群。数据迁移初始化时,所有组别的插入信息标识都为“NO”。与此类似,删除信息文件主要用于记录某个组别的数据是否完全从旧的集群中删除,其结构如图2所示,图2中的第三个属性表示的是删除信息,其中包含了广1500个组别的删除信息,一行记录包含一个组别,其中标识为“NO”表示该组别的数据没有完全从旧的HBase集群中删除,“YES”表示该组别的数据已经完全从旧的HBase集群中删除。数据迁移初始化时,所有组别的删除信息标识都为“NO”。
[0018]3、 关闭HBase集群的预写日志WAL并使用压缩技术,使得数据迁移过程速度加快,具体操作如下:
HBase利用Put操作来向HBase中插入数据,在向新的HBase集群中插入数据时,调用false函数,放弃写WAL日志,以便提高数据写入新的Hbase集群的速度,并使用SNAPPY对数据进行压缩,减小插入过程中的传输量。
[0019]4、读取用户配置文件信息,根据用户设定的数据迁移时间,和步骤2中的日志文件信息,以组别为单位从旧的HBase集群中读取需要迁移的数据,具体操作如下:
图3显示了用户配置文件的格式,读取该配置文件可知用户需要转移2011年I月I日至2012年12月31日的数据,再从组别信息中读出一个组别号,假设为1,则根据以上信息可知在该小区该时间段内,起始的RowKey为=0001-2011-01-01-0,终止的RowKey为:0001-2012-12-31-(设定的最大值),利用HBase中的scan函数scan(startRowKey, endRowKey)就可以得到该小区该时间段内的数据。
[0020]5、将读取的数据迁移到新的HBase集群上,并修改步骤2中日志文件的信息,并将该信息强制刷新到磁盘上,具体操作如下:
将步骤4中得到的I号小区2011年I月I日至2012年12月31日的迁移数据写入到新的HBase集群中,如果数据全部写入成功,则将日志文件中,I号小区对应的插入信息标识改为“YES”,表明I号小区的数据已经完全成功的写入到新的HBase集群中。
[0021]6、将已经迁移到新的HBase集群上的数据从旧集群上删除,并修改步骤2中日志文件的信息,并将该信息强制刷新到磁盘上,具体操作如下:
从旧的HBase集群中删除I号小区2011年I月I日至2012年12月31日的数据,如果这些数据完全从旧的HBase中删除,则将日志文件中,I号小区对应的删除信息标识改为“YES”,表明I号小区的数据已经完全成功的从旧的HBase集群中删除。至此,I号小区2011年I月I日至2012年12月31日的数据已经完全迁移成功,没有遇到异常,不需要再次执行迁移任务。
[0022]7、继续转到步骤4执行,迁移其他组别的数据,直到所有组别的数据全部迁移到新的HBase集群中,具体操作如下 :
继续从日志文件中读取下一个组别号,如读出的组别号为2,说明要开始迁移2号小区2011年I月I日至2012年12月31日的数据,并按照上面的步骤4~步骤6完成下一个小区的迁移任务,循环往复,直到日志文件中所有的插入信息与删除信息都为“YES”,说明此次迁移任务所涉及的所有组别都已经完成迁移,数据迁移完成。
[0023]8、在数据迁移过程中,若发生异常,则根据发生异常的位置进行不同的处理,具体方案如下:
异常一:若异常发生在插入新HBase集群之前,由于此时并未涉及到数据的插入和删除,所以在排除异常后重启系统就可继续进行数据迁移。
[0024]异常二:若异常发生在插入新的HBase集群中,则按照如下步骤处理:
排除异常。
[0025]读取发生异常时正在迁移的组别号,并读取该组别号对应的插入信息标识,若为“NO”,说明迁移数据并未完全迁移到新HBase集群中。重新从旧HBase中读取该组别对应的数据,并将数据直接插入到新的HBase集群中。在新的插入过程中,没有必要将上次异常插入的数据删除,因为HBase会默认覆盖掉相同RowKey的旧数据。
[0026]按后续正常流程继续处理。
[0027]异常三:若异常发生在删除旧HBase集群中,则按照如下步骤处理:
排除异常。[0028]读取发生异常时正在迁移的组别号,并读取该组别号对应的插入信息标识,若为“YES”,说明迁移数据已经迁移到新HBase集群中。
[0029]读取该组别号对应的删除信息标识,若为“NO”,说明数据还未完全从旧的HBase集群中删除。
[0030]从旧HBase集群中删除该组别的信息,并将该组别对应的删除信息标识置为“YES”,说明数据从旧HBase集群中删除成功。
[0031]该组别数据迁移成功,将该组别号对应的记录从日志文件中删除。
【权利要求】
1.一种非关系型数据库HBase的数据迁移方法,其特征在于:它包括以下步骤: 1)为非关系型数据库HBase中保存的数据设计合理的RowKey,该RowKey体现出数据的组别?目息和时间?目息; 2)创建一个日志文件,该日志文件包含组别信息、插入信息和删除信息; 3)关闭HBase集群的预写日志WAL并使用压缩技术对需要迁移的数据进行压缩; 4)读取用户配置文件信息,根据用户设定的数据迁移时间和步骤2)中的日志文件信息,以组别为单位从旧的HBase集群中读取需要迁移的数据; 5)将读取的数据迁移到新的HBase集群上,并修改步骤2)中日志文件的插入信息,并将该信息强制刷新到磁盘上; 6)将已经迁移到新的HBase集群上的数据从旧的HBase集群上删除,并修改步骤2)中日志文件的删除信息,并将该信息强制刷新到磁盘上; 7)继续跳转到步骤4)执行,迁移其他组别的数据,直到所有组别的数据全部迁移到新的HBase集群中。
2.根据权利要求1所述的非关系型数据库HBase的数据迁移方法,其特征在于:所述步骤3)中的压缩技术为SNAPPY压缩技术。
3.根据权利要求1所述的非关系型数据库HBase的数据迁移方法,其特征在于:所述步骤5)的具体步骤如下: a)从日志文件中读取正在迁移的数据的组别信息,判断该组别的数据是否已经成功的插入新的HBase集群中; b)若已经成功插入,则什么也不做;若没有成功插入,则将读取到的数据全部插入到新的HBase集群中,并将日志文件中该组别的插入标识置为成功,然后将此插入信息强制刷新到磁盘。
4.根据权利要求1所述的非关系型数据库HBase的数据迁移方法,其特征在于:所述步骤6)的具体步骤如下: a)从日志文件中读取正在迁移的数据的组别信息, 判断该组别的数据是否已经成功的从旧的HBase集群中删除; b)若已经成功删除,则什么也不做;若没有成功删除,则将对应组别的数据从旧的HBase集群中删除,并将日志文件中该组别的删除标识置为成功,将此删除信息强制刷新到磁盘。
【文档编号】G06F17/30GK103514274SQ201310421176
【公开日】2014年1月15日 申请日期:2013年9月17日 优先权日:2013年9月17日
【发明者】贝毅君, 唐宏波, 王丞淼, 王宽 申请人:宁波东冠科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1