CDB MySQL 데이터 이전
  • PDF

CDB MySQL 데이터 이전

  • PDF

Sqoop(SQL to Hadoop)의 약자로 관계형 데이터베이스와 Hadoop 간에 효율적으로 데이터를 전송할 수 있게 지원하는 툴입니다.
RDBMS에 저장되어 있는 데이터를 HDFS에서 분석할 수 있도록 HDFS로 가져올 수 있습니다. 반대로 분석 결과를 RDBMS로 내보낼 수 있으며 HDFS, Hive, HBase, Accumulo 등으로도 전송할 수도 있습니다.

이 가이드는 Sqoop을 이용하여 네이버 클라우드 플랫폼 Cloud DB for MySQL에서 Cloud Hadoop으로 데이터를 마이그레이션하는 방법을 소개합니다.
Sqoop 사용 및 명령어에 대한 내용은 Sqoop 사용을 참고해 주십시오.

사전 작업

  1. Object Storage를 생성해 주십시오.
  2. Cloud Hadoop 클러스터를 생성해 주십시오.
    • Cloud Hadoop 생성에 대한 자세한 내용은 Cloud Hadoop 시작를 참고해 주십시오.
  3. Cloud DB for MySQL를 생성합니다.

Sqoop을 이용한 데이터 마이그레이션

Sqoop 클라이언트는 엣지 노드를 제외한 마스터 노드와 데이터 노드 서버에 기본적으로 설치되어 있습니다. 별도의 Sqoop 클라이언트 설치를 설치하지 않고 마이그레이션을 진행할 수 있습니다.

SSH로 클러스터 노드 접속 가이드를 참고하여 서버에 접속한 후 다음 단계를 차례대로 진행해 주십시오.

1. Cloud DB for MySQL로 접속할 Sqoop 계정 생성

Cloud DB for MySQL 콘솔의 DB User 관리 메뉴를 이용하여 설정 정보를 입력해 Cloud DB for MySQL의 계정을 생성해 주십시오.
Cloud Hadoop 서버들의 IP는 Ambari Web UIHosts 메뉴에서 확인할 수 있습니다.

<예시>
DB 설정 정보

  • User_ID: mig_acct
  • Host(IP): Cloud Hadoop 서버의 IP 대역
    <예시> 10.10.10.%
  • 암호: 임의 설정
    hadoop-chadoop-use-ex4_1-1_ko

2. ACG 설정

Cloud Hadoop 마스터 노드 2번 서버가 Cloud DB for MySQL에 접속할 수 있도록 ACG를 설정해 주십시오.

  • Cloud-DB ACG 설정의 접근 소스에 Cloud Hadoop 마스터 노드 2번 서버 IP ACG를 추가해 주십시오.
    cloudhadoop-set-acg1_ko

3. 샘플링 테이블 및 데이터 생성

생성된 Cloud DB for MySQL에 예제 샘플링 테이블과 데이터를 입력해 주십시오.

참고

MySQL 접속 명령어

mysql -h [MySQL DB서버의 공인IP] -p
CREATE TABLE `mig_test_tb` (
`col1` int(11) NOT NULL,
`col2` char(2) NOT NULL,
`col3` char(15) DEFAULT NULL,
`col4` char(4) DEFAULT NULL,
`col5` char(1) DEFAULT NULL,
PRIMARY KEY (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into mig_test_tb values
(1,’a’,’mig-test1’,’run’,’y’),(2,’a’,’mig-test1’,’init’,’n’),
(3,’b’,’mig-test1’,’run’,’y’),(4,’b’,’mig-test1’,’run’,’y’),
(5,’c’,’test-mysql’,’init’,’n’),(6,’c’,’test-mysql’,’run’,’n’),
(7,’d’,’test-mysql’,’init’,’n’),(8,’d’,’test-mysql’,’run’,’y’),
(9,’e’,’sqoop-test’,’run’,’n’),(10,’e’,’sqoop-test’,’run’,’y’),
(11,’f’,’sqoop-test’,’run’,’n’),(12,’f’,’sqoop-test’,’init’,’y’),
(13,’g’,’mysql-sqoop’,’run’,’n’),(14,’g’,’mysql-sqoop’,’init’,’y’),
(15,’h’,’mysql-sqoop’,’run’,’y’),(16,’h’,’mysql-sqoop’,’init’,’n’),
(17,’i’,’sqp-to-my’,’run’,’n’),(18,’i’,’sqp-to-my’,’init’,’n’),
(19,’j’,’sqp-to-my’,’init’,’y’),(20,’j’,’sqp-to-my’,’init’,’y’),
(21,’k’,’my-mig-sq’,’run’,’n’),(22,’k’,’my-mig-sq’,’run’,’y’),
(23,’i’,’my-mig-sq’,’run’,’y’),(24,’i’,’my-mig-sq’,’run’,’n’);
참고

테이블 생성 시 구문 에러가 날 경우 작은따옴표 ( '' )부분을 확인해 주십시오.

4. Sqoop 명령어로 데이터 마이그레이션

  1. Sqoop CLI의 import-all-tables 옵션을 사용하여 데이터를 Hive로 마이그레이션해 주십시오.
    jdbc 정보는 Cloud DB for MySQL의 Private 도메인과 포트를 사용했습니다.

    sqoop import-all-tables --connect jdbc:mysql://test-db.mysql.domain.com:3306/migdb --username mig_acct -P --hive-import
    
    참고

    에러가 난다면 Primary Key의 존재 유무를 확인해 주십시오.

    Resource manager Job으로 등록되어 마이그레이션 작업이 수행됩니다.

    20/11/30 16:27:10 INFO mapreduce.Job: Job job_1606446027726_0007 completed successfully
    20/11/30 16:27:10 INFO mapreduce.Job: Counters: 30
    File System Counters
    FILE: Number of bytes read=0
    FILE: Number of bytes written=685116
    FILE: Number of read operations=0
    FILE: Number of large read operations=0
    FILE: Number of write operations=0
    HDFS: Number of bytes read=414
    HDFS: Number of bytes written=520
    HDFS: Number of read operations=16
    HDFS: Number of large read operations=0
    HDFS: Number of write operations=8
    Job Counters
    Launched map tasks=4
    Other local map tasks=4
    Total time spent by all maps in occupied slots (ms)=13269
    Total time spent by all reduces in occupied slots (ms)=0
    Total time spent by all map tasks (ms)=13269
    Total vcore-milliseconds taken by all map tasks=13269
    Total megabyte-milliseconds taken by all map tasks=9049458
    Map-Reduce Framework
    Map input records=24
    Map output records=24
    Input split bytes=414
    Spilled Records=0
    Failed Shuffles=0
    Merged Map outputs=0
    GC time elapsed (ms)=393
    CPU time spent (ms)=4780
    Physical memory (bytes) snapshot=813985792
    Virtual memory (bytes) snapshot=10053660672
    Total committed heap usage (bytes)=341311488
    File Input Format Counters
    Bytes Read=0
    File Output Format Counters
    Bytes Written=520
    20/11/30 16:27:10 INFO mapreduce.ImportJobBase: Transferred 520 bytes in 15.7176 seconds (33.084 bytes/sec)
    20/11/30 16:27:10 INFO mapreduce.ImportJobBase: Retrieved 24 records.
    20/11/30 16:27:10 INFO mapreduce.ImportJobBase: Publishing Hive/Hcat import job data to Listeners
    20/11/30 16:27:10 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `mig_test_tb` AS t LIMIT 1
    20/11/30 16:27:10 INFO hive.HiveImport: Loading uploaded data into Hive
    20/11/30 16:27:10 WARN conf.HiveConf: HiveConf of name hive.server2.enable.doAs.property does not exist
    20/11/30 16:27:10 WARN conf.HiveConf: HiveConf of name hive.server2.enable.doAs.property does not exist
    Logging initialized using configuration in jar:file:/home1/cdp/usr/hdp/2.6.5.0–292/hive/lib/hive-common-1.2.1000.2.6.5.0–292.jar!/hive-log4j.properties
    OK
    Time taken: 1.796 seconds
    Loading data to table default.mig_test_tb
    Table default.mig_test_tb stats: [numFiles=4, numRows=0, totalSize=520, rawDataSize=0]
    OK
    Time taken: 0.418 seconds
    
  2. OK 메시지와 함께 정상적으로 마이그레이션 작업이 완료되었는지 확인해 주십시오.

    • Hive Viewer 2.0에서 Hive에 마이그레이션된 테이블과 데이터를 조회하거나 Hue UI에서도 조회할 수 있습니다. Hive 사용에 대한 자세한 내용은 Hive 사용을 참고해 주십시오.
SELECT * FROM mig_test_tb;

hadoop-chadoop-use-ex4_4-1_ko


이 글이 도움이 되었나요?