2017-02-01 32 views
0

我必须将Hive表复制到另一个保持我的表的架构和层次结构的集群,所以我的问题是:什么是最安全和最恰当的方式来做到这一点,以便获得确切的表(和数据库)副本Cluster1插入Cluseter2。如何在群集之间迁移数据?

我已经找到了其全球说:

- hive > export TABLE1; 
- distcp hdfs:source_Path hdfs:dest_Path 
- hive > import TABLE1; #in Cluster 2 
- hive> MSCK REPAIR TABLE TABLE1; 

但因为我有复制的数据库和表一无数的数量,有没有什么快捷和安全的方式,像重复Datawarehouse1的状态或快照到Datawarehouse1 ...等?

在此先感谢。

+0

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

回答

1

模式的迁移(假设蜂巢metastore存储在MySQL)

采取metastore数据库

mysqldump -u **** -p***** metastoredb > metastore.sql 

的转储Cluster2中的FS URI

sed -i 's_hdfs://namenode1:port1_hdfs://namenode2:port2_g' metastore.sql 
更换Cluster1中FS URI

将转储移至目标群集并进行恢复。

mysql> create database metastoredb; 
mysql> use metastoredb; 
mysql> source metastore.sql; 

如果目标Hive的版本不同,请运行相关的升级脚本。

仓库和外部表迁移必须使用distcp保留目录结构。

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

蜂房的exportimport没有对数据库的选择。

相关问题