Classic에서 VPC Cloud Hadoop 버전으로 마이그레이션
- 인쇄
- PDF
Classic에서 VPC Cloud Hadoop 버전으로 마이그레이션
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
사전 작업
VPC 플랫폼으로 마이그레이션 하기 위해서는 Cloud Hadoop(VPC) 1.3 이상 버전의 클러스터를 먼저 생성하는 작업이 필요합니다.
- Cloud Hadoop 클러스터 생성에 관한 자세한 설명은 클러스터 생성을 참고해 주십시오.
1. HDFS 데이터 마이그레이션
- HDFS 데이터를 마이그레이션 하기 위해 목적지 클러스터(VPC)의 Object Storage 접근 정보들을 확인해 주십시오. Object Storage 접근 정보를 확인하기 위한 방법은 다음과 같습니다.
- 생성한 Cloud Hadoop 클러스터를 선택한 후, [Application 별 보기] 를 클릭해 주십시오.
- [Application 별 보기] 비고란의 Ambari Web UI를 클릭해 주십시오.
- Ambari Web UI 페이지에서 클러스터 관리자 계정 ID와 패스워드를 입력한 후 접속해 주십시오.
- 좌측 메뉴 탭에서 HDFS > [CONFIGS] 를 클릭한 후, 다음과 같이 s3a를 검색해 주십시오.
- Custom core-site에서 Object Storage 접근 정보를 확인해 주십시오.
- Ambari에서 검색한 s3a 정보로
distcp
명령을 수행해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop distcp -Dfs.s3a.endpoint=https://kr.object.gov-ncloudstorage.com/ -Dfs.s3a.access.key=s3a_access_key -Dfs.s3a.secret.key=s3a_secret_key -Dfs.s3a.connection.ssl.enabled=false -m 10 -bandwidth 100 hdfs://jki22031601/test_file s3a://jki1/upload_dir/
2. Hive metastore 마이그레이션
- HDFS 버전에 따라 Hive metastore 스키마 정보가 차이가 있으므로 버전 별로 두 가지 방법을 안내합니다.
2-1. VPC Cloud Hadoop 1.3 버전 (HDFS 2.7.3)으로 마이그레이션
- Cloud Hadoop(VPC) Ambari Web UI 에서 Hive를 STOP 해 주십시오.
- Classic 클러스터의 마스터 노드로 터널링 접속한 후,
mysqldump
를 수행하여 데이터를 백업해 주십시오.
- Hive에서 사용하는 데이터베이스는
hive_{unique_number}
로 생성됩니다.
[sshuser@m-001-example-1fx8-hd ~]$ mysqldump -u Username -p Password --no-create-db --skip-add-drop-database --skip-add-drop-table hive_xxx > dump.sql
- Hive 백업 파일을 Object Storage에 업로드해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -put dump.sql s3a://object_storage/
- 목적지 클러스터(VPC)의 마스터 노드로 터널링 접속하여 Hive 백업 파일을 다운로드해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -get s3a://object_storage/dump.sql ./
- 백업 파일을 목적지 클러스터(VPC)의 MySQL DB로 마이그레이션 해 주십시오.
- VPC 클러스터에 먼저 생성되어있던 Hive 데이터는 4번과 동일하게
mysqldump
명령어를 이용하여 백업 후 마이그레이션 작업을 진행해 주십시오. - 마이그레이션이 실패하더라도 백업 파일을 통해 언제든 롤백이 가능합니다.
[sshuser@m-001-example-1fx8-hd ~]$ mysql -u Username -p Password hive_xxx < dump.sql
- VPC Ambari Web UI 에서 Hive를 START 해 주십시오.
2-2. VPC Cloud Hadoop 1.4 이상 버전 (HDFS 3.1.X)으로 마이그레이션
VPC Ambari Web UI 에서 Hive를 STOP해 주십시오.
Classic 클러스터의 마스터 노드(m-002)로 터널링 접속하여
mysqldump
를 수행하여 데이터를 백업해 주십시오.- Hive에서 사용하는 데이터베이스는
hive_{unique_number}
로 생성됩니다.
[sshuser@m-002-example-1fx8-hd ~]$ mysqldump -u {Username} -p -h {Master_Node_IP} --no-create-db --skip-add-drop-database --skip-add-drop-table --no-tablespaces hive_{unique_number} > dump.sql
- Hive에서 사용하는 데이터베이스는
Hive 백업 파일을 Object Storage(VPC)에 업로드해 주십시오.
[sshuser@m-002-example-1fx8-hd ~]$ hadoop fs -put dump.sql s3a://{Object_Storage_Bucket_Name}/
목적지 클러스터(VPC)의 마스터 노드로 터널링 접속하여 Hive 백업 파일을 다운로드해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -get s3a://{Object_Storage_Bucket_Name}/dump.sql ./
백업 파일을 목적지 클러스터(VPC)의 MySQL DB로 마이그레이션 해 주십시오.
- VPC 클러스터에 먼저 생성되어있던 Hive 데이터는 4번과 동일하게
mysqldump
명령어를 이용하여 백업 후 마이그레이션 작업을 진행해 주십시오. 마이그레이션이 실패하더라도 백업 파일을 통해 언제든 롤백이 가능합니다. - VPC 클러스터에 있는 Hive 데이터베이스 초기화를 위해, Hive 데이터베이스 삭제 후 재생성해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ mysqldump -u {Username} -p -h {Master_Node_IP} --no-create-db --skip-add-drop-database --skip-add-drop-table --no-tablespaces hive_{unique_number} > backup.sql [sshuser@m-001-example-1fx8-hd ~]$ mysql -u {Username} -p -h {Master_Node_IP} mysql> DROP DATABASE hive_{unique_number}; mysql> CREATE DATABASE hive_{unique_number); [sshuser@m-001-example-1fx8-hd ~]$ mysql -u {Username} -p -h {Master_Node_IP} hive_{unique_number} < dump.sql
- VPC 클러스터에 먼저 생성되어있던 Hive 데이터는 4번과 동일하게
Hive 스키마 업그레이드에 필요한 sql 파일을 다운로드하여 Hive 설치 경로에 복사해 주십시오.
- 기존에 upgrade-2.1.2000-to-3.0.0.mysql.sql, upgrade-3.0.0-to-3.1.0.mysql.sql 파일이 존재하는 경우, 해당 파일 삭제 후 새로 다운로드 받은 파일을 사용해 주십시오.
참고Cloud Hadoop 1.9 이하의 버전인 경우, /etc/hosts 파일에 아래의 정보를 추가해 주십시오.
169.254.170.192 nch-repo.navercorp.com
[sshuser@m-001-example-1fx8-hd ~]$ wget http://nch-repo.navercorp.com/HIVE/upgrade-hive-schema.tar.gz [sshuser@m-001-example-1fx8-hd ~]$ tar xvfz upgrade-hive-schema.tar.gz
# Cloud Hadoop 2.x 버전 [sshuser@m-001-example-1fx8-hd ~]$ cp upgrade-2.1.2000-to-3.0.0.mysql.sql /home1/cdp/usr/nch/3.1.0.0-78/hive/scripts/metastore/upgrade/mysql/ [sshuser@m-001-example-1fx8-hd ~]$ cp upgrade-3.0.0-to-3.1.0.mysql.sql /home1/cdp/usr/nch/3.1.0.0-78/hive/scripts/metastore/upgrade/mysql/ # Cloud Hadoop 1.x 버전 [sshuser@m-001-example-1fx8-hd ~]$ cp upgrade-2.1.2000-to-3.0.0.mysql.sql /home1/cdp/usr/hdp/3.1.0.0-78/hive/scripts/metastore/upgrade/mysql/ [sshuser@m-001-example-1fx8-hd ~]$ cp upgrade-3.0.0-to-3.1.0.mysql.sql /home1/cdp/usr/hdp/3.1.0.0-78/hive/scripts/metastore/upgrade/mysql/
schematool 운영툴을 사용하여 스키마 정보를 업그레이드해 주십시오.
- Finished 메세지와 함께 업그레이드가 완료됩니다.
- 업그레이드가 실패하더라도 백업 파일을 통해 언제든 롤백이 가능합니다.
# Cloud Hadoop 2.x 버전 [sshuser@m-001-example-1fx8-hd ~]$ /home1/cdp/usr/nch/3.1.0.0-78/hive/bin/schematool -dbType mysql -upgradeSchema --verbose -userName Username -passWord Password # Cloud Hadoop 1.x 버전 [sshuser@m-001-example-1fx8-hd ~]$ /home1/cdp/usr/hdp/3.1.0.0-78/hive/bin/schematool -dbType mysql -upgradeSchema --verbose -userName Username -passWord Password STEP 1) 2.1.2000 -> 3.0.0 (완료 메세지) +-------------------------------------------------------------+ | Finished upgrading MetaStore schema from 2.1.2000 to 3.0.0 | +-------------------------------------------------------------+ STEP 2) 3.0.0 -> 3.1.0 (완료 메세지) +---------------------------------------------------------+ | Finished upgrading MetaStore schema from 3.0.0 to 3.1.0 | +---------------------------------------------------------+
VPC Ambari Web UI 에서 Hive를 START 해 주십시오.
3. HBase 마이그레이션
- HBase snapshot
- hbase shell 입력창에서
snapshot
명령어를 사용하여 HBase 테이블과 데이터를 백업해 주십시오. list_snapshots
명령어를 이용하면snapshot
수행 여부를 확인할 수 있습니다.
hbase(main):0> snapshot 'table1', 'snapshot-table1'
Took 2.4412 seconds
hbase(main):0> list_snapshots
SNAPSHOT TABLE + CREATION TIME
snapshot-table1 table1 (2022-03-21 20:36:46 +0900)
- HBase export
- 로컬 입력창에서
hbase export
명령어를 사용하여 Object Storage에 업로드 할 수 있습니다. hadoop fs -ls
명령어를 통해 파일을 확인할 수 있습니다.
[sshuser@m-001-example-1fx8-hd ~] sudo su - hbase hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot-table1 -copy-to s3a://yourcluster/hbase_snapshot/ -mappers 16
[sshuser@m-001-example-1fx8-hd ~]$ hdfs dfs -ls s3a://yourcluster/hbase_snapshot/
Found 2 items
drwxrwxrwx - ncloud ncloud 0 2022-03-24 21:13 s3a://yourcluster/hbase_snapshot/.hbase-snapshot
drwxrwxrwx - ncloud ncloud 0 2022-03-24 21:13 s3a://yourcluster/hbase_snapshot/archive
- HBase import
- 로컬 입력창에서
hbase import
명령어를 사용하여 업로드한 스냅샷을 복원할 수 있습니다. - -copy-to {경로} 에 사용되는 hbase 경로는 Ambari Web UI > HBase > CONFIGS > 검색 hbase.rootdir 의 값을 확인해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ sudo -u hbase hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot-table1 -copy-from s3a://yourcluster/ -copy-to /apps/hbase/data -mappers 16
- HBase restore
- hbase shell 입력창에서
restore_snapshot
명령어를 사용하여 테이블과 데이터를 복원할 수 있습니다. - import 된 스냅샷은
list_snapshots
명령어로 확인해 주십시오.
hbase(main):0> list_snapshots
SNAPSHOT TABLE + CREATION TIME
snapshot-table1 table1 (2022-03-21 20:36:46 +0900)
hbase(main):0> restore_snapshot 'snapshot-table1'
hbase(main):0> list
TABLE
table1
hbase(main):0> scan 'table1'
ROW COLUMN+CELL
key1 column=cf1:, timestamp=3, value=value
이 문서가 도움이 되었습니까?