Hive数据迁移

本文为您介绍通过Hive UDTF迁移Hive数据的方法。

准备事项

  • ⽹络环境要求。

    • Hive集群各节点能够访问MaxCompute。

    • MMA所在服务器能够访问Hive MetaStore Server、Hive Server。

  • 创建⽤于迁移数据的Hive UDTF。

    1. 在MMA的帮助⻚⾯下载对应版本的UDTF的jar包,如mma-udtf.jar

    2. 执行以下命令上传mma-udtf.jar至HDFS。

      hdfs dfs -put -f mma-udtf.jar hdfs:///tmp/
    3. 使⽤Beeline或Hive命令登录Hive、创建Hive UDTF。

      DROP FUNCTION IF EXISTS default.odps_data_dump_multi;
      CREATE FUNCTION default.odps_data_dump_multi as 'com.aliyun.odps.mma.io.McD
      ataTransmissionUDTF' USING JAR 'hdfs:///tmp/mma-udtf.jar';
  • 如果Hive配置了kerberos访问认证,需要将以下文件拷贝到MMA所在的服务器。

    1. hive.keytab⽂件。

    2. gss-jass.conf⽂件。

      说明

      gss-jass.conf中含有keytab⽂件的路径,要确保其与MMA所在服务器上的hive.keytab⽂件路径⼀致。

    3. krb5.conf⽂件。

      说明

      krb5.conf中含有KDC地址,MMA所在服务器要能够访问该地址。

操作步骤

  1. 添加数据源。

    1. 单击页面左侧的数据源,进入数据源列表页面。

    2. 单击添加数据源,进入添加数据源页面。

    3. 数据源类型选择HIVE,并单击下一步

    4. 根据如下参数说明配置数据源。

      参数名称

      描述

      数据源名

      数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。

      hive metastore url

      请根据实际情况填写。如:thrift://192.168.0.212:9083。

      hive metastore client socket timeout

      默认600。

      hive jdbc url

      Hive JDBC的连接信息。格式为jdbc:hive2://localhost:10000/default

      hive jdbc user name

      Hive JDBC的用户名,必填。

      hive jdbc password

      Hive JDBC的密码,可选。

      hive metastore是否开启了kerberos认证

      若开启,则需要填写下⾯kerberos的相关配置。

      kerberos principal

      与krb5.conf⾥的kdc_realm值保持⼀致。

      kerberos keytab文件位置

      keytab⽂件在MMA所在服务器上的路径。

      kerberos gss-jaas.conf文件位置

      gss-jass.conf⽂件在MMA所在服务器上的路径。

      kerberos krb5.conf文件位置

      krb5.conf⽂件在MMA所在服务器上的路径。

      单个任务处理的最多分区数量

      默认50。即一次MMA任务迁移的分区数量,通过批量的分区迁移,可以减少提交Hive SQL的次数,节约Hive SQL提交时间。

      单个任务处理的最大数量(单位G)

      单位GB,默认5。即⼀次MMA任务迁移的所有分区的⼤⼩之和的上限。

      hive job配置, 用于mr, spark, tez等引擎

      默认为MR任务的部分配置。

      说明

      如果Hive使⽤的引擎不是MR,则需要通过指定“hive.execution.engine”值来指定Hive使⽤的引擎,并且⽤于不同引擎的任务参数需要自己调整。该配置用于解决YARN Container内存不⾜、指定Spark运⾏队列等问题。

      数据库白名单

      需要迁移的Hive数据库,多个值之间以英⽂逗号分隔。

      数据库黑名单

      不需要迁移的Hive数据库,多个值之间以英⽂逗号分隔。

      meta api访问并发量

      访问Hive MetaStore的并发量,⽤于提⾼获取Hive元数据的速度。

      表黑名单, 格式为db.table

      不需要迁移的Hive数据库表。单个表的格式为dbname.tablename, 多个表之间以英⽂逗号分隔。

      表白名单, 格式为db.table

      需要迁移的Hive数据库表。单个表的格式为dbname.tablename,多个表之间以英⽂逗号分隔。

    5. 单击页面底部的提交

      说明

      如果所填的配置无误,且MMA所在服务器能够访问Metastore URL和JDBC URL,则MMA会通过Metastore URL拉取Hive的元数据,即库、表、分区信息。否则将会报错,此时需要检查各配置项是否正确,重新填写并提交配置。

    6. 待拉取元数据的进度条显示为100%后,页面会跳转到数据源列表页面。

  2. 创建数据迁移任务。

    MMA可以创建单库、多表、多分区三个级别的迁移任务。

    说明
    • 单库,迁移单个Database。

    • 多表,迁移一个或多个Table。

    • 多分区,迁移1个或多个Partition。

    • 迁移多个表。

      1. 单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名。

      2. 在所选的数据源详情页面,单击要迁移的库名

      3. 勾选要迁移的表,单击新建迁移任务

      4. 根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。

        参数名称

        描述

        名称

        自定义。建议填写有意义的任务名称,便于整理迁移记录。

        任务类型

        请根据实际情况选择。

        • mc同region。

        • mc跨region。

        • mc校验。即对比源项目和目的项目所有相同表的数据。

        mc项目

        目的MaxCompute项目。

        table列表

        要迁移的Table列表,多个Table之间以英⽂逗号分隔。

        开启校验

        默认打开。

        增量更新

        默认打开。开启后分区表已经迁移过的分区不会被重新迁移。

        只迁schema

        只迁移表结构、分区值。根据实际情况选择是否打开。

        分区过滤

        详情请参见分区过滤表达式说明

        表名映射

        ⼀个Table迁移到⽬的项目后的名称。

      5. 单击确定

        说明

        如果迁移任务的配置无误,则新的迁移任务可以在迁移任务 > 任务列表中查看,相应的子任务可以在迁移任务 > 子任务列表中查看。

    • 迁移多个分区。

      1. 单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名。

      2. 在所选的数据源详情页面,单击要迁移的库名

      3. 切换partition列表页签,勾选要迁移的分区。

      4. 单击新建迁移任务,根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。

        参数名称

        描述

        名称

        自定义。建议填写有意义的任务名称,便于整理迁移记录。

        任务类型

        请根据实际情况选择。

        • mc同region。

        • mc跨region。

        • mc校验。即对比源项目和目的项目所有相同表的数据。

        mc项目

        目的MaxCompute项目。

        开启校验

        默认打开。

        只迁schema

        只迁移表结构、分区值。根据实际情况选择是否打开。

        partition列表

        保持默认值即可。

        表名映射

        ⼀个Table迁移到⽬的项目后的名称。

      5. 单击确定

        说明

        如果迁移任务的配置无误,则新的迁移任务可以在迁移任务 > 任务列表中查看,相应的子任务可以在迁移任务 > 子任务列表中查看。

    • 迁移单个库。

      1. 单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名。

      2. 单击要迁移的库所在行的迁移

      3. 根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。

        参数名称

        描述

        名称

        自定义。建议填写有意义的任务名称,便于整理迁移记录。

        任务类型

        请根据实际情况选择。

        • mc同region。

        • mc跨region。

        • mc校验。即对比源项目和目的项目所有相同表的数据。

        mc项目

        目的MaxCompute项目。

        table白名单

        要迁移的Table列表,多个Table之间以英文逗号分隔。

        开启校验

        默认打开。

        增量更新

        默认打开。开启后分区表已经迁移过的分区不会被重新迁移。

        只迁schema

        只迁移表结构、分区值。

        分区过滤

        详情请参见分区过滤表达式说明

        表名映射

        ⼀个Table迁移到⽬的项目后的名称。

      4. 单击确定

        说明

        如果迁移任务的配置无误,则新的迁移任务可以在迁移任务 > 任务列表中查看,相应的子任务可以在迁移任务 > 子任务列表中查看。