本文为您介绍通过Hive UDTF迁移Hive数据的方法。
准备事项
⽹络环境要求如下:
Hive集群各节点能够访问MaxCompute。
MMA所在服务器能够访问Hive MetaStore Server、Hive Server。
创建用于迁移数据的Hive UDTF。
在MMA的帮助页面下载对应版本的UDTF的jar包,如
mma-udtf.jar
。执行以下命令上传
mma-udtf.jar
至HDFS。hdfs dfs -put -f mma-udtf.jar hdfs:///tmp/
使用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.McDataTransmissionUDTF' USING JAR 'hdfs:///tmp/mma-udtf.jar';
如果Hive配置了Kerberos访问认证,需要将以下文件拷贝到MMA所在的服务器。
hive.keytab文件。
gss-jaas.conf文件。
说明gss-jaas.conf中含有keytab文件的路径,要确保其与MMA所在服务器上的hive.keytab文件路径一致。
krb5.conf文件。
说明krb5.conf中含有KDC地址,MMA所在服务器要能够访问该地址。
操作步骤
添加数据源。
单击页面左侧的数据源,进入数据源列表页面。
单击添加数据源,进入添加数据源页面。
数据源类型选择HIVE,并单击下一步。
根据如下参数说明配置数据源。
参数名称
描述
数据源名
数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。
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-jaas.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
,多个表之间以英文逗号分隔。单击页面底部的提交。
说明如果所填的配置无误,且MMA所在服务器能够访问Metastore URL和JDBC URL,则MMA会通过Metastore URL拉取Hive的元数据,即库、表、分区信息。否则将会报错,此时需要检查各配置项是否正确,重新填写并提交配置。
待拉取元数据的进度条显示为100%后,页面会跳转到数据源列表页面。
创建数据迁移任务。
MMA可以创建单库、多表、多分区三个级别的迁移任务。
说明单库,迁移单个Database。
多表,迁移一个或多个Table。
多分区,迁移1个或多个Partition。
迁移多个表。
单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名称。
在所选的数据源详情页面,单击要迁移的库名。
勾选要迁移的表,单击新建迁移任务。
根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。
参数名称
描述
名称
自定义。建议填写有意义的任务名称,便于整理迁移记录。
任务类型
请根据实际情况选择。
mc同region。
mc跨region。
mc校验。即对比源项目和目标项目所有相同表的数据。
mc项目
目的MaxCompute项目。
table列表
要迁移的Table列表,多个Table之间以英文逗号分隔。
开启校验
默认打开。
增量更新
默认打开。开启后分区表已经迁移过的分区不会被重新迁移。
只迁schema
只迁移表结构、分区值。根据实际情况选择是否打开。
分区过滤
详情请参见分区过滤表达式说明。
表名映射
一个Table迁移到目的项目后的名称。
单击确定。
说明如果迁移任务的配置无误,则新的迁移任务可以在
中查看,相应的子任务可以在 中查看。
迁移多个分区。
单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名称。
在所选的数据源详情页面,单击要迁移的库名。
切换到partition列表页签,勾选要迁移的分区。
单击新建迁移任务,根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。
参数名称
描述
名称
自定义。建议填写有意义的任务名称,便于整理迁移记录。
任务类型
请根据实际情况选择。
mc同region。
mc跨region。
mc校验。即对比源项目和目标项目所有相同表的数据。
mc项目
目的MaxCompute项目。
开启校验
默认打开。
只迁schema
只迁移表结构、分区值。根据实际情况选择是否打开。
partition列表
保持默认值即可。
表名映射
一个Table迁移到目的项目后的名称。
单击确定。
说明如果迁移任务的配置无误,则新的迁移任务可以在
中查看,相应的子任务可以在 中查看。
迁移单个库。
单击页面左侧的数据源,在数据源列表页面单击想要迁移的数据源名称。
单击要迁移的库所在行的迁移。
根据实际情况在新建迁移任务弹框中配置各参数,参数说明如下。
参数名称
描述
名称
自定义。建议填写有意义的任务名称,便于整理迁移记录。
任务类型
请根据实际情况选择。
mc同region。
mc跨region。
mc校验。即对比源项目和目标项目所有相同表的数据。
mc项目
目的MaxCompute项目。
table白名单
要迁移的Table列表,多个Table之间以英文逗号分隔。
开启校验
默认打开。
增量更新
默认打开。开启后分区表已经迁移过的分区不会被重新迁移。
只迁schema
只迁移表结构、分区值。
分区过滤
详情请参见分区过滤表达式说明。
表名映射
一个Table迁移到目的项目后的名称。
单击确定。
说明如果迁移任务的配置无误,则新的迁移任务可以在
中查看,相应的子任务可以在 中查看。