本文为您介绍MMA2.0运行前的环境准备和迁移数据预处理。

准备运行环境

  • 下载与Hive版本对应的MMA工具。下载方式请提工单获取。
  • MMA所服务器上需要安装JDK1.8及以上版本的Java。
  • 安装Beeline客户端。
  • 确认MaxCompute所在地域并获取该地域的Endpoint,详情请参见配置Endpoint
  • 获取Hive Metastore URI。
    说明hive-site.xml中查找"hive.metastore.uris"即可获取Hive Metastore URI。
  • 获取Hive JDBC连接信息。Hive JDBC的格式为jdbc:hive2://localhost:10000/default
  • 确保Hive集群和MMA所在机器与MaxCompute服务所在地域保持网络连通。
    说明 专线场景路由配置说明

    例如,本地IDC通过专线访问MaxCompute的Endpoint,需要在边界路由器(VBR)中将100.64.0.0/10网段的路由条目指向VPC方向的路由器接口,并在本地数据中心的网关设备上将100.64.0.0/10网段的路由指向VBR的阿里云侧互联IP,详情请参见本地IDC通过专线访问云服务器ECS

  • 确认Hive Metastore是否有安全配置。

    请准备一个有权限访问Hive Metastore服务和执行Hive SQL的用户在hive-site.xml中查看"hive.security.authorization.enabled"的值。如果值为True,需要配置安全信息,详情请参见基于Kerberos身份认证的配置

预处理待迁移数据

您可以通过如下方法对待迁移数据进行预处理,可以提升迁移效率、提升数据进入MaxCompute后的查询效率以及提前发现并解决MaxCompute与Hive的不兼容问题。
  • 分区合并

    尽可能减少分区数,可以加速迁移。例如,7TB非分区表迁移用时15分钟,而30GB、3万分区表迁移用时为1小时。

  • 类型转换
    • MaxCompute在数据类型上与Hive存在不完全兼容的情况,例如,String类型不支持超8MB。
    • MMA会自动进行类型转换。例如,Hive上的Date类型分区字段,在MaxCompute中会自动转换成String类型分区字段。
    说明 MMA默认会打开新类型,即set odps.sql.type.system.odps2=true; ,以2.0新类型来创建表,详情请参见数据类型版本说明
  • 使用闪电立方从HDFS上传数据到OSS时,存储路径格式为oss://bucket_name/database_name/table_name/partition_name/
    说明 MMA2.0默认以2.0新数据类型创建表(即set odps.sql.type.system.odps2=true;)。详情请参见2.0数据类型版本

基于Kerberos身份认证的配置

mma_server_config.jsonmma_client_config.json文件中添加krbPrincipal、keyTab、krbSystemProperties配置信息,如下所示。
{
  "dataSource": "Hive",
  "hiveConfig": {
    "jdbcConnectionUrl": "jdbc:hive2://127.0.0.1:10000/default",
    "user": "Hive",
    "password": "",
    "hmsThriftAddr": "thrift://127.0.0.1:9083",
    "krbPrincipal": "xxx",
    "keyTab": "xxx",
    "krbSystemProperties": "xxx=xxx,xxx=xxx",
    "hiveJdbcExtraSettings": [
      "hive.fetch.task.conversion=none",
      "hive.execution.engine=mr",
      "mapreduce.job.name=data-carrier",
      "mapreduce.max.split.size=512000000",
      "mapreduce.task.timeout=3600000",
      "mapreduce.map.maxattempts=0",
      "mapred.map.tasks.speculative.execution=false"
    ]
  },
  "odpsConfig": {
    "accessId": "LTAIECIE5U5NTK8W",
    "accessKey": "CPWBkKSRDlu3b7x1o3HLhHJbt2Fg1d",
    "endpoint": "http://service.cn.maxcompute.aliyun-inc.com/api",
    "projectName": "ODPS_DATA_CARRIER_TEST"
  }
}