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

holgip5t  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(412)

我必须将配置单元表复制到另一个集群中,保留表的模式和层次结构,所以我的问题是:为了将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…等等?
提前谢谢。

j91ykkif

j91ykkif1#

模式迁移(假设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

Hive export 以及 import 没有数据库选项。

相关问题