掌桥专利:专业的专利平台
掌桥专利
首页

数据迁移方法、装置、设备及存储介质

文献发布时间:2024-04-18 20:01:55


数据迁移方法、装置、设备及存储介质

技术领域

本申请涉及数据处理技术领域,尤其涉及一种数据迁移方法、装置、设备及存储介质。

背景技术

目前,在需要迁移HBase表中存储的数据时,通常是将待迁移的HBase表导出至本地服务器,再通过本地服务器将该待迁移的HBase表上传至目标服务器。

由于业务要求,可能需要同时迁移大量HBase(Hadoop Database,一种分布式存储系统)表,例如,高达TB(Terabyte,太字节)量级的数据量;此时,若还是采用上述方法进行数据迁移,则会由于服务器的硬盘空间不足,而无法完成同时迁移的任务,只能分批次迁移,降低了数据迁移效率。

发明内容

本申请的主要目的在于提供一种数据迁移方法、装置、设备及存储介质,旨在解决因无法同时迁移大量HBase表导致数据迁移效率低下的技术问题。

为实现上述目的,本申请提供一种数据迁移方法,应用于数据迁移系统,所述数据迁移方法包括以下步骤:

基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

可选地,所述数据迁移任务的任务类型包括跨集群迁移和同集群迁移;

若所述任务类型为跨集群迁移,则所述源集群与所述目的集群非相同集群,所述目标HDFS包括源集群的HDFS和目的集群的HDFS;

若所述任务类型为同集群迁移,则所述目的集群为所述源集群,所述目标HDFS为源集群的HDFS。

可选地,若所述任务类型为跨集群迁移,则所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤,包括:

基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至所述源集群的HDFS的路径下;

通过所述源集群HDFS将所述待迁移数据保存至所述目的集群的HDFS的路径下;

通过所述目的集群的HDFS将所述待迁移数据保存至所述目的集群对应HBase表的路径下。

可选地,若所述任务类型为同集群迁移,则所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤,包括:

基于接收到的数据迁移指令,通过调用HBase export工具将源集群的源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至所述源集群的HDFS的路径下;

通过调用所述HBase import工具,将所述源集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;

通过调用HBase Load Incremental HFiles工具对新建的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至所述源集群中新建的HBase表的路径下。

可选地,若所述任务类型为跨集群迁移,则所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤,包括:

基于接收到的数据迁移指令,通过调用HBase export工具将所述源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至源集群的HDFS的路径下;

通过调用HDFSDistcp工具,将所述源集群的HDFS中待迁移数据传输至目的集群的HDFS;

通过调用HBase import工具,将所述目的集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;

通过调用HBase Load Incremental HFiles工具对所述目的集群的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至目的集群对应HBase表的路径下。

可选地,所述数据迁移系统包括集群对应的客户端,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤之前,所述方法还包括:

基于所述数据迁移任务的当前任务进度,以及所述数据迁移任务中的预设配置信息,登陆所述源集群和/或者所述目的集群的客户端;

通过登录后的客户端将所述数据迁移指令写入对应集群,以供对应集群执行所述数据迁移指令。

可选地,所述数据迁移任务还包括数据迁移时间,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下的步骤之前,还包括:

通过HBase Export工具基于所述数据迁移时间,将HBase表中待迁移的增量数据导出,以基于接收到的数据迁移指令,将所述待迁移的增量数据保存至目标HDFS的路径下;

所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤之后,还包括:

基于正则表达式,从数据迁移过程中保存的日志中提取出在yarn中注册的数据迁移任务的任务UUID;

根据所述任务UUID,从yarn rest API中获取任务完成情况以及完成结果。

此外,为实现上述目的,本申请还提供一种数据迁移装置,应用于数据迁移系统,所述数据迁移装置包括:

数据迁移模块,用于基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

此外,为实现上述目的,本申请还提供一种设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据迁移程序,所述数据迁移程序配置为实现如上所述的数据迁移方法的步骤。

此外,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据迁移程序,所述数据迁移程序被处理器执行时实现如上所述的数据迁移方法的步骤。

本申请基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS(Hadoop Distributed File System,一种分布式文件系统)的路径下,由于所述目标HDFS是基于多个服务器构建的,即使源HBase表中待迁移数据量较大,也不会因为服务器的容量有限而无法实现同时迁移,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,即可完成所述数据迁移指令对应数据迁移任务,提升数据迁移效率。

附图说明

图1为本申请数据迁移方法第一实施例的第一流程示意图;

图2为本申请数据迁移方法第一实施例的第一场景示意图;

图3为本申请数据迁移方法第一实施例的第二场景示意图;

图4为本申请数据迁移方法第一实施例的第一逻辑架构图;

图5为本申请数据迁移方法第一实施例的第二逻辑架构图;

图6为本申请数据迁移方法第二实施例的第二流程示意图;

图7为本申请数据迁移方法第二实施例的第三逻辑架构图;

图8为本申请数据迁移方法第二实施例的第三场景示意图;

图9为本申请数据迁移方法第二实施例的第四逻辑架构图;

图10为本申请数据迁移方法第二实施例的第四场景示意图;

图11为本申请数据迁移方法第二实施例的第五场景示意图;

图12为本申请数据迁移方法第二实施例的第六场景示意图;

图13为本申请数据迁移方法第二实施例的第七场景示意图;

图14为本申请数据迁移装置的结构框图;

图15是本申请实施例方案涉及的硬件运行环境的设备结构示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,图1为本申请数据迁移方法第一实施例的流程示意图。

在第一实施例中,所述数据迁移方法包括以下步骤:

S10:基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

需要说明的是,本实施例的方法的执行主体为数据迁移系统,所述数据迁移系统包括多个集群、HDFS和HBase表,HBase表是基于HDFS构建的,HDFS是基于多个服务器构建的,本申请不进行具体的限制。

当HDFS中存储空间不足时,可以增加更多的服务器。因此,HDFS不存在相关技术中单一服务器存在的容量有限的问题。

在本实施例中,所述数据迁移任务的任务类型包括跨集群迁移(将数据从集群a迁移至集群b)和同集群迁移(将数据从同集群中的服务器a迁移至服务器b中)。

具体地,所述数据迁移任务包括数据迁移双方所对应的源集群的名称、源HBase表的名称、目的集群的名称、目的集群的HBase表的名称、迁移任务类型等。所述数据迁移任务可以是用户临时自定义的。

如图2所示,用户可以在所述数据迁移系统中新建数据迁移任务,需要在新建数据迁移任务时注意:在目的集群建立的HBase表的表属性需要相同且拥有相同列簇;若找不到对应集群的HBase表;用户需要先在HBase表申领处申领该表;新建HBase表时,只支持splitKey为String编码格式,其他编码格式需要自行通过命令建表;迁移数据的开始时间和结束时间可以是按照HBase表的数据最小单元Cell所记录的timestamp来进行的。

用户还可以填写操作员名称、操作员ID、源集群名、源集群表名、表属性、目的集群、目的集群表名、迁移数据时间范围、负责人、迁移类型(手动迁移或者自动迁移)等。

所述数据迁移系统还提供数据迁移任务展示,部分展示界面如图3所示,展示内容包括源集群名、目的集群、任务UUID(Universally Unique Identifier,通用唯一识别码)、源集群表名、目的集群表名、数据开始时间、数据结束时间、操作员、负责人、开始迁移时间、迁移是否完成、自动迁移等。

还需要说明的是,所述数据迁移指令是基于所述数据迁移任务生成的。

具体地,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤之前,还可以基于所述数据迁移任务的当前任务进度,以及所述数据迁移任务中的预设配置信息,登陆所述源集群和/或者所述目的集群的客户端;通过登录后的客户端将所述数据迁移指令写入对应集群,以供对应集群执行所述数据迁移指令。

需要说明的是,所述数据迁移系统还包括各集群对应的客户端。可以通过登录各集群对应的客户端,将数据迁移指令写入对应集群,所述数据迁移系统中对应集群则会接收到所述数据迁移指令,并进行响应。

具体地,可以是基于所述数据迁移任务的当前任务进度,以及所述数据迁移任务中的预设配置信息,登陆所述源集群和/或者所述目的集群的客户端。例如,若当前任务进度为开始数据迁移,则可以对应登录所述源集群的客户端,若当前任务进度为开始数据导入,则可以对应登录所述目的集群的客户端。

所述数据迁移任务中的预设配置信息,包括所述数据迁移双方所对应的源集群的名称、源HBase表的名称、目的集群的名称、目的集群的HBase表的名称、迁移任务类型等。

在登录对应集群的客户端后,即可将数据迁移指令写入对应集群,所述数据迁移系统中的对应集群则会基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务。

具体地,若所述任务类型为跨集群迁移,则所述源集群与所述目的集群非相同集群,所述目标HDFS包括源集群的HDFS和目的集群的HDFS;所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤,可以是:

基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至所述源集群的HDFS的路径下;通过所述源集群HDFS将所述待迁移数据保存至所述目的集群的HDFS的路径下;通过所述目的集群的HDFS将所述待迁移数据保存至所述目的集群对应HBase表的路径下。

具体地,如图4所示,若所述任务类型为跨集群迁移,则源集群执行接收到的数据迁移指令(如图4中的执行HBase到HDFS步骤),将源集群的源HBase表中待迁移数据导出,并保存至所述源集群的HDFS的路径下,所述数据迁移任务的任务进度发生变化,所述源集群继续执行所述数据迁移指令(如图4中的执行HDFS到HDFS步骤),将所述待迁移数据导出,并保存至所述目的集群的HDFS的路径下,所述数据迁移任务的任务进度发生变化,所述目的集群的HDFS继续执行所述数据迁移指令(如图4中的执行HDFS到HBase步骤),将所述待迁移数据保存至所述目的集群对应HBase表的路径下。

可以理解,所述待迁移数据可以是源集群的源HBase表中的全部或者部分数据。所述数据迁移指令可以是用户触发的,也可以是自动触发的。

若所述任务类型为同集群迁移,则所述目的集群为所述源集群,所述目标HDFS为源集群的HDFS,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤,可以是:

基于接收到的数据迁移指令,通过调用HBase export工具将源集群的源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至所述源集群的HDFS的路径下;通过调用所述HBase import工具,将所述源集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;通过调用HBase Load Incremental HFiles工具对新建的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至所述源集群中新建的HBase表的路径下。

具体地,如图5所示,若所述任务类型为同集群迁移,则源集群执行接收到的数据迁移指令(如图5中的执行HBase到HDFS步骤),将源集群的源HBase表中待迁移数据导出,由于源HBase表中待迁移数据的格式为HBase,而HDFS不支持HBase格式的数据,因此需要在将源集群的源HBase表中待迁移数据导出时,通过HBase import工具将所述待迁移数据以HFile格式保存至所述源集群的HDFS的路径下。

所述数据迁移任务的任务进度发生变化,所述源集群继续执行所述数据迁移指令(如图5中的执行HDFS到HBase步骤),由于HDFS中待迁移数据的格式为HFile,而源集群中新建的HBase表不支持HFile格式的数据,因此需要在将源集群的HDFS中待迁移数据导入之前,通过调用所述HBase import工具,将所述源集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式,才能够通过调用HBase Load Incremental HFiles工具对新建的HBase表基于bulkload进行写入操作,从而将所述待迁移数据以HBase格式保存至所述源集群中新建的HBase表的路径下。

而相关技术中没有提供同集群迁移的功能,部分存在问题的HBase表(比如region请求量分布不均,region数量过少等问题)需要重新进行预分区时,若没有该功能,用户只能自行对HBase表内的数据进行备份后删表重建。采用上述方式则可以实现同集群的数据迁移。

在本实施例中,基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,由于所述目标HDFS是基于多个服务器构建的,即使源HBase表中待迁移数据量较大,也不会因为服务器的容量有限而无法实现同时迁移,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,即可完成所述数据迁移指令对应数据迁移任务,提升数据迁移效率。且,提供跨集群的数据迁移和同集群的数据迁移两种方案,为数据迁移提供更多可行性。

如图6所示,基于第一实施例提出本申请数据迁移方法第二实施例,本实施例中,若所述任务类型为跨集群迁移,则所述步骤S10包括以下步骤:

A1:基于接收到的数据迁移指令,通过调用HBase export工具将所述源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至源集群的HDFS的路径下;

若所述任务类型为跨集群迁移,则源集群执行接收到的数据迁移指令,将源集群的源HBase表中待迁移数据导出,通过调用HBase export工具将所述源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至源集群的HDFS的路径下。

在将源集群的源HBase表中待迁移数据导出之前,为了能够减少迁移的数据量,把待迁移数据的版本(version)设置成1或者添加最新版本的标识,确保在接收到数据迁移指令时只迁移最新数据,减少不必要的迁移。

A2:通过调用HDFSDistcp工具,将所述源集群的HDFS中待迁移数据传输至目的集群的HDFS;

由于在不同集群的HDFS之间无法直接完成数据的传输,因此,需要通过调用HDFSDistcp(Hadoop自带的分布式复制程序)工具,将源集群的HDFS中待迁移数据传输至目的集群的HDFS。

通过这种方式,直接跨集群传输数据文件,不需要为了传输数据文件而将待迁移数据先导出到单个服务器/本地服务器的磁盘上,不会对服务器造成存储压力。

A3:通过调用HBase import工具,将所述目的集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;

在将源集群的源HBase表中待迁移数据迁移至目的集群的HDFS后,由于目的集群的HDFS中待迁移数据的格式为HFile,而目的集群的HBase表不支持HFile格式的数据,需要对待迁移数据的格式进行转换,具体地,可以通过调用HBase import工具,将所述目的集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式。

A4:通过调用HBase Load Incremental HFiles工具对所述目的集群的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至目的集群对应HBase表的路径下。

需要说明的是,通过上述HBase Load Incremental HFiles工具直接写入数据,不要求目的集群的HBase表的预分区以及表属性与源HBase表的预分区完全一致,只需要目的集群的HBase表中包含源HBase表的列簇,便于针对存在问题的源HBase表在迁移时可以通过HBase Load Incremental HFiles工具对所述目的集群的HBase表基于bulkload进行写入操作,直接修正对应存在的问题。

并且,通过bulkload写入操作将所述待迁移数据以HBase格式保存至目的集群对应HBase表的路径下的方式对集群带来的压力,远小于相关技术中使用table.put()这个API(接口)对待迁移数据进行写入对集群带来的压力。

在本实施例中,所述数据迁移任务还可以包括数据迁移时间,用户可以基于cron表达式填写数据迁移时间,以规定数据迁移的频率(每隔预设时段进行一次数据迁移)。

具体地,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下的步骤之前,可以通过HBase Export工具基于所述数据迁移时间,将HBase表中待迁移的增量数据导出,以基于接收到的数据迁移指令,将所述待迁移的增量数据保存至目标HDFS的路径下。

所述数据迁移系统还包括任务调度平台,用户通过所述任务调度平台注册所述数据迁移任务时填写有cron表达式,基于cron表达式可以确定数据迁移的频率以及程序生成的任务UUID,任务调度平台可以基于数据迁移的频率以及任务UUID定时访问后端程序。后端程序根据任务UUID查询所述配置信息,通过HBase Export工具基于所述数据迁移时间,将HBase表中待迁移的增量数据导出,基于接收到的数据迁移指令,将所述待迁移的增量数据保存至目标HDFS的路径下。

通过上述增量迁移的方式,能够减少集群在进行数据迁移过程中的业务停机时间,且,可以将待迁移的增量数据迁移至目标HDFS后,目标HDFS中的主集群即可将该增量数据自动备份至从集群中,解决数据双写问题,提升用户体验。

通过所述HBase Export工具还可以在指定迁移时间范围(数据存储的时间)内进行单次迁移全量数据或者单次迁移增量数据。具体地,若指定迁移时间范围为全量数据迁移,则所述迁移时间范围为起始时间:0,终止时间:9223372036854775807,即,终止时间为最大值(Long.MAXVALUE),确保不会有数据遗漏。

所述数据迁移系统还支持查看迁移是否成功,具体地,如图7所示,若所述任务类型为跨集群迁移,则在上述数据迁移时,集群在执行HBase到HDFS步骤过程中,可以通过源集群yarn获取任务UUID查看所述数据迁移任务在源集群的数据迁移阶段是否执行成功;还可以通过目的集群yarn获取任务UUID查看所述数据迁移任务在目的集群的数据迁移阶段是否执行成功。

若执行成功,则会经过数据校验的步骤,以保证数据的完整性,若未执行成功,则可以通知操作员或者负责人等(通过办公软件通知)。当任务执行失败时,用户可以通过点击失败步骤进行重跑失败步骤(如图8所示的“是否启动同集群HBase到同集群HDFS节点?”)。

若出现数据迁移任务的注册错误情况,用户可以通过点击界面中的停止按钮来停止当前步骤。具体实现方式可以是通过登陆到集群对应客户端后,在数据库中获取当前记录的application_id,执行yarn application-kill application_id命令,实现停止当前步骤功能。

进一步地,如图9所示,若所述任务类型为同集群迁移,则在上述数据迁移时,集群在执行HBase到HDFS步骤过程中,可以通过yarn获取任务UUID查看所述数据迁移任务是否成功。

所述数据迁移系统还提供日志查看功能,所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤之后,可以基于正则表达式,从数据迁移过程中保存的日志中提取出在yarn中注册的数据迁移任务的任务UUID;根据所述任务UUID,从yarn rest API中获取任务完成情况以及完成结果。

具体地,从数据迁移过程中保存的日志中提取出在yarn中注册的数据迁移任务的任务UUID,如图10所示,任务UUID可以是job_1675999693885717648。根据任务ID,即可在从yarn rest API中获取到任务完成情况以及任务结果。

所述数据迁移系统还提供日志查询功能,通过nohup命令将数据迁移过程中保存的日志存储至客户端特定目录下,用户查询日志时客户端即可通过该特定路径,获取日志内容并展示。所述数据迁移系统还可以对已经成功迁移完毕的Hbase表的记录以及日志文件,定时进行清理。

所述数据迁移系统还提供流水线式的流程状态展示功能,如图11所示,针对数据迁移任务过程中的不同步骤,通过正则匹配的方式获取步骤对应的map和reduce(map和reduce为执行所述数据迁移任务的两个阶段)进度(如图12所示),并根据map和reduce进度计算当前进行中的步骤的进度百分比(进度百分比的计算方式为(map的百分比+reduce的百分比)/2-1;需要说明的是,判断任务是否真正执行成功,是通过yarn rest api获取的任务状态进行判断),并通过流水线进行展示。

所述数据迁移系统还提供数据查询功能,通过HBase表的原生API,通过RowFilter、FilterList等工具可以进行复合自定义查询,将查询结果通过表格形式展示,展示的数据支持String、Int、Long、Short、Hex、Float、Double等编码格式。

如图13所示,可以通过RowKey进行查询,或者可以通过指定column(解码方式为String)、列簇名和列名等进行查询。可以通过上述方式在数据迁移系统中抽样查询对应数据进行比较校验,查看是否漏数或者是否存在错误数据。

在本实施例中,通过特定工具进行数据导入和导出,不需要为了传输数据文件而将待迁移数据先导出到单个服务器/本地服务器的磁盘上,不会对服务器造成存储压力,也不会因为问题表而无法导入。所述数据迁移系统提供全量、增量以及定时迁移的功能,还提供日志记录、查看的功能,还提供步骤失败告警以及重试机制,还提供用户注册数据迁移任务功能,还提供用户在系统中进行自行校验数据的功能等,不仅解决了相关技术中的数据导入和导出时存在的问题,还为用户提供了便利,提升用户使用体验。

此外,本申请实施例还提出一种数据迁移装置,参照图14,所述数据迁移装置包括:

数据迁移模块,用于基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

本实施例基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,由于所述目标HDFS是基于多个服务器构建的,即使源HBase表中待迁移数据量较大,也不会因为服务器的容量有限而无法实现同时迁移,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,即可完成所述数据迁移指令对应数据迁移任务,提升数据迁移效率。

需要说明的是,上述装置中的各模块可用于实现上述方法中的各个步骤,同时达到相应的技术效果,本实施例在此不再赘述。

参照图15,图15为本申请实施例方案涉及的硬件运行环境的设备的结构示意图。

如图15所示,该设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图15中示出的结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图15所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据迁移程序。

在图15所示的设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;所述设备通过处理器1001调用存储器1005中存储的数据迁移程序,并执行以下操作:

基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

若所述任务类型为跨集群迁移,则所述源集群与所述目的集群非相同集群,所述目标HDFS包括源集群的HDFS和目的集群的HDFS;

若所述任务类型为同集群迁移,则所述目的集群为所述源集群,所述目标HDFS为源集群的HDFS。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

基于接收到的数据迁移指令,通过调用HBase export工具将源集群的源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至所述源集群的HDFS的路径下;

通过调用所述HBase import工具,将所述源集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;

通过调用HBase Load Incremental HFiles工具对新建的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至所述源集群中新建的HBase表的路径下。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

基于接收到的数据迁移指令,通过调用HBase export工具将所述源HBase表中待迁移数据导出,并通过HBase import工具将所述待迁移数据以HFile格式保存至源集群的HDFS的路径下;

通过调用HDFSDistcp工具,将所述源集群的HDFS中待迁移数据传输至目的集群的HDFS;

通过调用HBase import工具,将所述目的集群的HDFS中待迁移数据的格式从HFile格式转换为HBase格式;

通过调用HBase Load Incremental HFiles工具对所述目的集群的HBase表基于bulkload进行写入操作,以将所述待迁移数据以HBase格式保存至目的集群对应HBase表的路径下。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

基于接收到的数据迁移指令,通过调用HDFSDistcp工具,将源集群的源HBase表中待迁移数据导出;

通过调用HBase import工具,对待迁移数据的格式进行转换;

通过HBase Load Incremental HFiles工具基于bulkload写入操作,将格式转换后的数据保存至目标HDFS的路径下。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

基于所述数据迁移任务的当前任务进度,以及所述数据迁移任务中的预设配置信息,登陆所述源集群和/或者所述目的集群的客户端;

通过登录后的客户端将所述数据迁移指令写入对应集群,以供对应集群执行所述数据迁移指令。

进一步地,处理器1001可以调用存储器1005中存储的数据迁移程序,还执行以下操作:

通过HBase Export工具基于所述数据迁移时间,将HBase表中待迁移的增量数据导出,以基于接收到的数据迁移指令,将所述待迁移的增量数据保存至目标HDFS的路径下;

所述基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下的步骤之后,还包括:

基于正则表达式,从数据迁移过程中保存的日志中提取出在yarn中注册的数据迁移任务的任务UUID;

根据所述任务UUID,从yarn rest API中获取任务完成情况以及完成结果。

本实施例基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,由于所述目标HDFS是基于多个服务器构建的,即使源HBase表中待迁移数据量较大,也不会因为服务器的容量有限而无法实现同时迁移,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,即可完成所述数据迁移指令对应数据迁移任务,提升数据迁移效率。

此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据迁移程序,所述数据迁移程序被处理器执行时实现如下操作:

基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,完成所述数据迁移指令对应数据迁移任务,其中,所述目标HDFS是基于多个服务器构建的。

本实施例基于接收到的数据迁移指令,将源集群的源HBase表中待迁移数据保存至目标HDFS的路径下,由于所述目标HDFS是基于多个服务器构建的,即使源HBase表中待迁移数据量较大,也不会因为服务器的容量有限而无法实现同时迁移,通过所述目标HDFS将所述待迁移数据保存至目的集群对应HBase表的路径下,即可完成所述数据迁移指令对应数据迁移任务,提升数据迁移效率。

需要说明的是,上述计算机可读存储介质被处理器执行时还可实现上述方法中的各个步骤,同时达到相应的技术效果,本实施例在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

技术分类

06120116566149