• 沒有找到結果。

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