Hadoop 如何在集群之间迁移数据?

Hadoop 如何在集群之间迁移数据?,hadoop,hive,hdfs,data-migration,bigdata,Hadoop,Hive,Hdfs,Data Migration,Bigdata,我必须将配置单元表复制到另一个集群,保留表的架构和层次结构,因此我的问题是:为了将Cluster1的确切表(和数据库)副本复制到cluster2中,最安全和正确的方法是什么 我已经找到了一些方法,在全球范围内说: - hive > export TABLE1; - distcp hdfs:source_Path hdfs:dest_Path - hive > import TABLE1; #in Cluster 2 - hive> MSCK REPAIR TABLE T

我必须将配置单元表复制到另一个集群,保留表的架构和层次结构,因此我的问题是:为了将Cluster1的确切表(和数据库)副本复制到cluster2中,最安全和正确的方法是什么

我已经找到了一些方法,在全球范围内说:

 - hive > export TABLE1;
 - distcp hdfs:source_Path hdfs:dest_Path
 - hive > import TABLE1; #in Cluster 2
 - hive> MSCK REPAIR TABLE TABLE1;
但是,由于我必须复制大量的数据库和表,有没有快速、安全的方法,比如将Datawarehouse1的状态或快照复制到Datawarehouse1……等等


提前感谢。

模式迁移(假设hive metastore存储在MySQL中)

获取metastore数据库的转储

mysqldump -u **** -p***** metastoredb > metastore.sql
用Cluster2的FS URI替换Cluster1的FS URI

sed -i 's_hdfs://namenode1:port1_hdfs://namenode2:port2_g' metastore.sql
将转储移动到目标群集并将其还原

mysql> create database metastoredb;
mysql> use metastoredb;
mysql> source metastore.sql;
如果目标配置单元的版本不同,请运行相关的升级脚本

仓库和外部表的迁移必须通过
distcp
保存目录结构来完成

hadoop distcp hdfs://namenode1:port1/hive/data hdfs://namenode2:port2/hive/data

配置单元的
导出
导入
没有数据库选项。

将元数据复制到新集群。我们使用mysql数据库作为配置单元元存储。我们将元数据复制到新集群,并使用distcp复制HDFS(即/apps/hive/warehouse)上的整个仓库文件夹(数据)