E-MapReduce(简称EMR)支持将您本地自建的Kudu集群迁移至EMR上。本文为您介绍如何迁移自建Kudu集群的数据到E-MapReduce上的Hadoop集群。
前提条件
您已自建Kudu集群。
已创建E-MapReduce的Hadoop集群,并选择了Kudu服务,详情请参见创建集群。
背景信息
EMR Kudu支持社区1.10以及1.11版本,可以使用社区提供的Backup和Restore的工具进行数据的迁移。基本流程示意图如下所示。
操作步骤
执行以下命令,查看待迁移Kudu表的名称列表。
Kudu table list {YourKuduMasterAddress}
说明本文代码示例中的
{YourKuduMasterAddress}
为Kudu集群的Master节点内网IP地址,多个IP地址之间使用英文逗号(,)隔开。使用Kudu Backup工具备份现有的Kudu集群表。
默认的Kudu Backup可以根据现有Backup信息来执行增量或者全量备份。
说明首次备份将执行全量备份,即完整复制所有指定表的数据。后续备份自动识别之前的备份点,仅备份自上次备份以来变更的数据,实现增量备份,从而节省存储空间和时间。
数据备份时,指定的
--kuduMasterAddresses
是Kudu集群的Master节点内网IP地址。使用OSS作为中间存储
spark-submit --class org.apache.kudu.backup.KuduBackup kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath oss://{your_BucketName}/kudu-backups {YourTableList}
说明本文代码示例中的
{your_BucketName}
为您OSS Bucket的名称,{YourTableList}
为您需要备份的Kudu表的列表。使用HDFS作为中间存储
spark-submit --class org.apache.kudu.backup.KuduBackup kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath hdfs://{YourHDFSCluster}/kudu-backups {YourTableList}
说明本文代码示例中的
{YourHDFSCluster}
为Hadoop集群的地址。
检查Kudu Backup目录相关数据。
在EMR Kudu集群运行Restore命令, 将数据导入到EMR Kudu集群。
默认命令如下:
使用OSS作为中间存储
spark-submit --class org.apache.kudu.backup.KuduRestore kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath oss://{your_BucketName}/kudu-backups {YourTableList}
说明导入数据时,指定的
--kuduMasterAddresses
是目标EMR Kudu集群的Master节点内网IP地址。使用HDFS作为中间存储
spark-submit --class org.apache.kudu.backup.KuduRestore kudu-backup2_2.11-1.10.0.jar \ --kuduMasterAddresses master1-host,master-2-host,master-3-host \ --rootPath hdfs://{YourHDFSCluster}/kudu-backups {YourTableList}
检查EMR Kudu集群上的数据、表名以及通过计算引擎查找表的数据是否一致。