2017-02-01 3 views
0

하이브 테이블을 스키마와 테이블의 계층 구조를 유지하는 다른 클러스터에 복제해야합니다. 제 질문은 다음과 같습니다. 정확한 테이블 (및 데이터베이스) 사본을 갖기 위해 무엇을하는 것이 가장 안전하고 적절한 방법입니까? 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 데이터베이스를 사용합니다. 메타 데이터를 새 클러스터에 복사하고 distcp를 사용하여 HDFS (즉,/apps/hive/warehouse)의 전체웨어 하우스 폴더 (데이터)를 복사했습니다. – yoga

답변

1

이 Cluster2의 FS URI

sed -i 's_hdfs://namenode1:port1_hdfs://namenode2:port2_g' metastore.sql 
으로 클러스터 1 FS URI를 교체 메타 스토어 데이터베이스

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

의 덤프를 타고 (가정 하이브 메타 스토어는 MySQL의에 저장됩니다) 스키마의 마이그레이션

덤프를 대상 클러스터로 이동하고 복원하십시오.

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

대상 하이브의 버전이 다른 경우 관련 업그레이드 스크립트를 실행하십시오.

웨어 하우스 및 외부 테이블의 마이그레이션은 디렉토리 구조가 보존 된 distcp이어야합니다.

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

하이브의 exportimport는 데이터베이스에 대한 옵션이 없습니다.

관련 문제