2.1.1 准备工作
本迁移指导将指导适用于多种不同场景下的HDFS、HBase、Hive数据向MRS集群的迁 移工作。由于数据迁移过程中可能存在数据覆盖、丢失、损坏等风险,因此本指导只 作为参考,具体的数据迁移方案的制定及实施请华为云支持人员协同完成。
数据迁移前源集群的准备工作,目的是防止在数据迁移过程中源集群产生新数据,导 致源集群与迁移后的目标集群数据不一致。在数据迁移完成之前,目标集群应处于初 始状态,期间不能运行除数据迁移作业外的其它任何业务。
停止集群业务及相关服务
● 如果您的集群涉及到Kafka业务,请先停止所有向Kafka中生产数据的作业,等待 Kafka的消费作业消费完Kafka中的存量数据后,再执行下一步操作。
● 停止所有与HDFS、HBase、Hive相关的业务和作业,然后停止HBase、Hive服 务。
打通数据传输通道
● 当源集群与目标集群部署在同一区域的不同VPC时,请创建两个VPC之间的网络连 接,打通网络层面的数据传输通道。请参见VPC对等连接。
● 当源集群与目标集群部署在同一VPC但属于不同安全组时,在VPC管理控制台,为 每个安全组分别添加安全组规则。规则的“协议”为“ANY”,“方向”为“入 方向”,“源地址”为“安全组”且是对端集群的安全组。
– 为源集群的安全组添加入方向规则,源地址选择目标集群的安全组。
– 为目标集群的安全组添加入方向规则,源地址选择源集群的安全组。
● 当源集群与目标集群部署在同一VPC同一安全组且两个集群都开启了Kerberos认 证,需要为两个集群配置互信。
2.1.2 元数据导出
$HADOOP_HOME/bin/hdfs dfs –ls –R <migrating_path> > /tmp/hdfs_meta.txt
其中,各参数的含义如下。
● $HADOOP_HOME:源集群Hadoop客户端安装目录
● <migrating_path>:HDFS上待迁移的数据目录
● /tmp/hdfs_meta.txt:导出的元数据信息保存在本地的路径。
说明
如果源集群与目标集群网络互通,且以超级管理员身份运行hadoop distcp命令进行数据拷贝,
可以添加参数“-p”让distcp在拷贝数据的同时在目标集群上分别恢复相应文件的元数据信息。
步骤1 在源集群上下载并安装Sqoop工具。请参见http://sqoop.apache.org/。
步骤2 下载相应关系型数据库的jdbc驱动放置到${Sqoop_Home}/lib目录。
步骤3 执行如下命令导出所有Hive元数据表。所有导出数据保存在HDFS上的/user/
<user_name>/<table_name>目录。
$Sqoop_Home/bin/sqoop import --connect jdbc:<driver_type>://<ip>:<port>/<database> --table
<table_name> --username <user> -password <passwd> -m 1
其中,各参数的含义如下。
● $Sqoop_Home:Sqoop的安装目录
● <driver_type>:数据库类型
● <ip>:源集群数据库的IP地址
● <port>:源集群数据库的端口号
● <table_name>:待导出的表名称
● <passwd>:用户密码 ----结束
2.1.3 数据拷贝
根据源集群与目标集群分别所处的区域及网络连通性,可分为以下几种数据拷贝场 景:
同 Region
当源集群与目标集群处于同一Region时,根据打通数据传输通道进行网络配置,打通 网络传输通道。使用Distcp工具执行如下命令将源集群的HDFS、HBase、Hive数据文 件以及Hive元数据备份文件拷贝至目的集群。
$HADOOP_HOME/bin/hadoop distcp <src> <dist> -p
其中,各参数的含义如下。
● $HADOOP_HOME:目的集群Hadoop客户端安装目录
● <src>:源集群HDFS目录
● <dist>:目的集群HDFS目录
不同 Region
当源集群与目标集群处于不同Region时,用Distcp工具将源集群数据拷贝到OBS,借
对于TB或PB级数据上云的场景,华为云提供数据快递服务 DES。将线下集群数据 及已导出的元数据拷贝到DES盒子,快递服务将数据递送到华为云机房,然后通 过云数据迁移 CDM将DES盒子数据拷贝到HDFS。
2.1.4 数据恢复
HDFS 文件属性恢复
根据导出的权限信息在目的集群的后台使用HDFS命令对文件的权限及属主/组信息进 行恢复。
$HADOOP_HOME/bin/hdfs dfs –chmod <MODE> <path>
$HADOOP_HOME/bin/hdfs dfs –chown <OWNER> <path>
Hive 元数据恢复
在目的集群中安装并使用Sqoop命令将导出的Hive元数据导入MRS集群dbservice。
$Sqoop_Home/bin/sqoop export connect jdbc:postgresql://<ip>:20051/hivemeta table <table_name> --username hive -password <passwd> --export-dir <export_from>
其中,各参数的含义如下。
● $Sqoop_Home:目的集群上Sqoop的安装目录
● <ip>:目的集群上数据库的IP地址
● <table_name>:待恢复的表名称
● <passwd>:hive用户的密码
● <export_from>:元数据在目的集群的HDFS地址。
HBase 表重建
重启目的集群的HBase服务,使数据迁移生效。在启动过程中,HBase会加载当前 HDFS上的数据并重新生成元数据。启动完成后,在Master节点客户端执行如下命令加 载HBase表数据。
$HBase_Home/bin/hbase hbck -fixMeta -fixAssignments
命令执行完成后,重复执行如下命令查看HBase集群健康状态直至正常。
hbase hbck