2017-02-01 77 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沒有對數據庫的選擇。

相關問題