Classic에서 VPC Cloud Hadoop 버전으로 마이그레이션

Prev Next

VPC 플랫폼으로 마이그레이션 하기 위해서는 Cloud Hadoop(VPC) 1.3 이상 버전의 클러스터를 먼저 생성하는 작업이 필요합니다.

  • Cloud Hadoop 클러스터 생성에 관한 자세한 설명은 클러스터 생성을 참고해 주십시오.
  1. HDFS 데이터를 마이그레이션 하기 위해 목적지 클러스터(VPC)의 Object Storage 접근 정보들을 확인해 주십시오. Object Storage 접근 정보를 확인하기 위한 방법은 다음과 같습니다.
  • 생성한 Cloud Hadoop 클러스터를 선택한 후, [Application 별 보기] 를 클릭해 주십시오.
  • [Application 별 보기] 비고란의 Ambari Web UI를 클릭해 주십시오.
  • Ambari Web UI 페이지에서 클러스터 관리자 계정 ID와 패스워드를 입력한 후 접속해 주십시오.
  • 좌측 메뉴 탭에서 HDFS > [CONFIGS] 를 클릭한 후, 다음과 같이 s3a를 검색해 주십시오.
    chadoop-3-7-02-s3a_ko.png
  • Custom core-site에서 Object Storage 접근 정보를 확인해 주십시오.
    chadoop-3-7-01_ko.png
  1. 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/
Plain text
  • HDFS 버전에 따라 Hive metastore 스키마 정보가 차이가 있으므로 버전 별로 두 가지 방법을 안내합니다.

2-1. VPC Cloud Hadoop 1.3 버전 (HDFS 2.7.3)으로 마이그레이션

  1. Cloud Hadoop(VPC) Ambari Web UI 에서 Hive를 STOP 해 주십시오.
  2. 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
Plain text
  1. Hive 백업 파일을 Object Storage에 업로드해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -put dump.sql s3a://object_storage/
Plain text
  1. 목적지 클러스터(VPC)의 마스터 노드로 터널링 접속하여 Hive 백업 파일을 다운로드해 주십시오.
[sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -get s3a://object_storage/dump.sql ./
Plain text
  1. 백업 파일을 목적지 클러스터(VPC)의 MySQL DB로 마이그레이션 해 주십시오.
  • VPC 클러스터에 먼저 생성되어있던 Hive 데이터는 4번과 동일하게 mysqldump 명령어를 이용하여 백업 후 마이그레이션 작업을 진행해 주십시오.
  • 마이그레이션이 실패하더라도 백업 파일을 통해 언제든 롤백이 가능합니다.
[sshuser@m-001-example-1fx8-hd ~]$ mysql -u Username -p Password hive_xxx < dump.sql
Plain text
  1. VPC Ambari Web UI 에서 Hive를 START 해 주십시오.

2-2. VPC Cloud Hadoop 1.4 이상 버전 (HDFS 3.1.X)으로 마이그레이션

  1. VPC Ambari Web UI 에서 Hive를 STOP해 주십시오.

  2. 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
    
    Plain text
  3. Hive 백업 파일을 Object Storage(VPC)에 업로드해 주십시오.

    [sshuser@m-002-example-1fx8-hd ~]$ hadoop fs -put dump.sql s3a://{Object_Storage_Bucket_Name}/
    
    Plain text
  4. 목적지 클러스터(VPC)의 마스터 노드로 터널링 접속하여 Hive 백업 파일을 다운로드해 주십시오.

    [sshuser@m-001-example-1fx8-hd ~]$ hadoop fs -get s3a://{Object_Storage_Bucket_Name}/dump.sql ./
    
    Plain text
  5. 백업 파일을 목적지 클러스터(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
    
    Plain text
  6. 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
    
    Plain text
    [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
    
    Plain text
    # 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/
    
    Plain text
  7. 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 |
    +---------------------------------------------------------+
    
    Plain text
  8. VPC Ambari Web UI 에서 Hive를 START 해 주십시오.

  1. 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)
Plain text
  1. 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
Plain text
  1. 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
Plain text
  1. 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
Plain text