本文为您介绍使用MMA如何进行数据迁移、检查SQL语法兼容性、查看迁移评估报告。

一键迁移使用命令说明

命令格式
python3 odps-data-carrier/bin/run.py -h
参数说明
参数名称 参数说明
-h, --help 打印帮助信息。
--hms_thrift_addr HMS_THRIFT_ADDR 指定Hive Metastore的Thrift地址。
--mode MODE 选择迁移模式,支持SINGLE或BATCH。
  • SINGLE模式为单表迁移模式。
  • BATCH模式为批量迁移模式,会将输入文件中指定的表批量迁移至MaxCompute。
--metasource METASOURCE 指定Metadata Source,即meta-carrier的输出目录,常用于定制化迁移场景。
--datasource DATASOURCE 指定数据来源,默认为Hive。如果数据通过闪电立方链路迁移,请选择OSS。

链路说明请参见迁移解决方案

--hive_db HIVE_DB 单表迁移模式下,指定待迁移表所在的Hive数据库名称。
--hive_table HIVE_TABLE 单表迁移模式下,指定待迁移表的Hive表名。
--mc_project MC_PROJECT 单表迁移模式下,指定待迁移表的MaxCompute Project名称。
--mc_table MC_TABLE 单表迁移模式下,指定待迁移表的MaxCompute表名。
--parallelism PARALLELISM 执行任务允许的最大并行度,即允许同时进行表迁移任务的最大数量。
--table_mapping TABLE_MAPPING 批量迁移模式下的输入文件路径,指定待迁移表从Hive到MaxCompute的映射。 文件每一行表达一个表的映射关系,格式为<hive db>.<hive tbl>:<mc project>.<mc tbl>
--dynamic_scheduling 打开动态调度开关。这个开关允许MMA自动感知目前集群压力,在集群任务数量超过某个阈值时,停止提交任务。阈值由--threshold THRESHOLD参数设定。
--threshold THRESHOLD 当动态调度开关打开时,此参数设置停止提交任务的阈值。
--validate_only 只对指定的表做数据校验。
--verbose 是否打印Debug信息。
示例
  • Hive批量迁移至MaxCompute
    python3 odps-data-carrier/bin/run.py --mode BATCH --hms_thrift_addr thrift://127.0.0.1:9083 --table_mapping table_mappings/hive-odps.txt 
  • Hive单表迁移至MaxCompute
    python3 odps-data-carrier/bin/run.py --hms_thrift_addr thrift://127.0.0.1:9083 --mode SINGLE --datasource Hive --hive_db dma_demo --hive_table inventory --mc_project mma_demo --mc_table inventory
  • OSS批量迁移至MaxCompute
    python3 odps-data-carrier/bin/run.py --hms_thrift_addr thrift://127.0.0.1:9083 --mode BATCH --datasource OSS --table_mapping table_mappings/oss-odps.txt
  • OSS单表迁移至MaxCompute
    python3 odps-data-carrier/bin/run.py --hms_thrift_addr thrift://127.0.0.1:9083 --mode SINGLE --datasource OSS --hive_db dma_demo --hive_table web_sales --mc_project oss_odps_mma --mc_table web_sales

基于Kerberos身份认证的数据迁移方法

此方法适用于Hive Metadata有安全配置时的数据迁移。安全配置的更多信息,请参见准备运行环境

  1. 执行如下命令获取Hive Meta。此处需要添加principalsystem参数。
    odps-data-carrier/bin/meta-carrier -u thrift://127.0.0.1:9083 -d dma_demo -o meta --principal hive/xxx.xxx.xxx@xxx.xxx --system java.security.krb5.conf=/etc/krb5.conf java.security.auth.login.config=/root/gss-jaas.conf javax.security.auth.useSubjectCredsOnly=false
    命令中参数说明如下,请您自行替换。
    • -u: Hive Metastore的Thrift地址。
    • -d:待迁移数据所在数据库名称。
    • -o:Hive Meta的输出目录。
    • --principal:认证主体,即用户名。
    • --system:Kerberos的系统配置。
  2. 执行如下命令进行一键迁移,命令中需要指定第一步Hive Meta的输出目录。
    python3 odps-data-carrier/bin/run.py --hms_thrift_addr thrift://127.0.0.1:9083 --mode BATCH --metasource meta --datasource Hive --table_mapping table_mappings/hive-odps.txt

SQL语法兼容性检查

使用sql-checker检查Hive SQL是否可以直接在MaxCompute执行,会返回语法兼容问题及修改建议。

命令格式
示例
  1. 执行如下命令生成Hive Meta目录。
    ./odps-data-carrier/bin/meta-carrier -u thrift://127.0.0.1:9083 -o meta -d dma_demo
  2. 执行如下命令检查Hive SQL是否可以在MaxCompute上运行。
    ./odps-data-carrier/bin/sql-checker -i meta --project hive_odps_mma --sql 'SQL_CLAUSE'

网络连通性测试

使用network-measurement-tool,测试集群到MaxCompute各Region的网络连通质量和网络上下行传输速率。

查看迁移评估报告

执行如下步骤获取评估报告:
  1. 执行如下命令生成Hive Meta目录。
    ./odps-data-carrier/bin/meta-carrier -u thrift://127.0.0.1:9083 -o meta -d dma_demo
  2. 执行如下命令生成report.html
    ./odps-data-carrier/bin/meta-processor -i meta -o output
  3. output目录下查看report.html(建议您下载之后在浏览器查看)。
以下是一个报告的例子。
  • 报告中将搬站风险分为两档,高风险(HIGH RISK)与中等风险(MODERATE RISK)。
  • 高风险表示迁移过程必须人工介入。例如,出现了表名冲突、MaxCompute完全不支持的类型等问题时,需要人工介入。
  • 中等风险表示在迁移过程中可以自动处理,但是需要告知用户潜在风险。例如,Hive数据类型转换至MaxCompute数据类型会带来的精度损失等问题。