E-MapReduce(简称EMR)支持将您本地自建的Kudu集群迁移至EMR上。本文为您介绍如何迁移自建Kudu集群的数据到E-MapReduce上的Hadoop集群。

前提条件

  • 您已自建Kudu集群。
  • 已创建E-MapReduce的Hadoop集群,并选择了Kudu服务,详情请参见创建集群

背景信息

EMR Kudu支持社区1.10以及1.11版本,可以使用社区提供的Backup和Restore的工具进行数据的迁移。基本流程示意图如下所示。kudu

操作步骤

  1. 执行以下命令,查看待迁移Kudu表的名称列表。
    Kudu table list {YourKuduMasterAddress}
    说明 本文代码示例中的{YourKuduMasterAddress}为kudu集群的内网IP地址,多个IP地址之间使用英文逗号(,)隔开。
  2. 使用Kudu Backup工具备份现有的Kudu集群表。
    默认的Kudu Backup可以根据现有Backup信息来执行增量或者全量备份。
    • 使用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集群的地址。
  3. 检查Kudu Backup目录相关数据。
  4. 在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}
    • 使用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}
  5. 检查EMR Kudu集群上的数据、表名以及通过计算引擎查找表的数据是否一致。