学习 Hive(七):跨集群备份

Hive 跨集群备份主要备份两类:

  • 存储在 MySQL 中的元数据
  • 存储在 HDFS 中的数据文件

也就是说,跨集群备份就是从一个集群把元数据和数据文件拷贝到另一个集群中

Hive 提供了 IMPORT/EXPORT 导入导出元数据和数据文件功能,HDFS 提供了 distcp 跨集群数据拷贝功能,结合这两个工具,就可以实现跨集群备份功能

全量备份

在主集群,导出全量数据到临时目录:

hive -e "EXPORT TABLE ods.users TO '/tmp/data/users'"  

跨集群拷贝文件:

hadoop distcp /tmp/data/users hdfs://BACKUP_CLUSTER_NAMENODE:8082/tmp/data/users  

在备份集群,从临时目录导入全量数据:

hive -e "IMPORT TABLE ods.users FROM '/tmp/data/users'"  

分区备份

在主集群,导出分区数据到临时目录:

hive -e "EXPORT TABLE ods.sales PARTITION (ods_date='2018-06-04') TO '/tmp/data/sales/2018-06-04'"  

跨集群拷贝文件:

hadoop distcp /tmp/data/sales/2018-06-04 hdfs://BACKUP_CLUSTER_NAMENODE:8082/tmp/data/sales/2018-06-04  

在备份集群,从临时目录导入分区数据:

hive -e "IMPORT TABLE ods.users PARTITION (ods_date='2018-06-04') FROM '/tmp/data/sales/2018-06-04'"  

参考