CDB MySQL データの移行

Prev Next

VPC環境で利用できます。

Sqoop(SQL to Hadoop)は、関係データベースと Hadoop間の効率的なデータ転送をサポートするツールです。
RDBMSに保存されているデータを HDFSで分析できるように HDFSにインポートすることができます。逆に、分析結果を RDBMSにエクスポートでき、HDFS、Hive、HBase、Accumuloなどに転送することもできます。

本ガイドでは、Sqoopを利用して、NAVERクラウドプラットフォームの Cloud DB for MySQLから Cloud Hadoopにデータを移行する方法を紹介します。
Sqoopの使い方やコマンドについては、Sqoop を使用するガイドをご参照ください。

事前タスク

  1. Object Storageを作成します。
  2. 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サーバの Private IPは、Ambari 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アドレスを追加します。
    cloudhadoop-set-acg1_ko

3. サンプリングテーブルとデータ作成

作成された Cloud DB for MySQLにサンプルテーブルとデータを入力します。

参考

MySQLアクセスコマンド

mysql -u [クラスタ管理者のアカウント名] -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ドメインとポートを使用しました。
    sudo su - [ユーザーアカウント] コマンドを実行してユーザーアカウントに切り替えます。

    sudo su - test 
    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
  1. OK メッセージと共に、正常にマイグレーションタスクが完了したかを確認します。
    • Hiveにマイグレーションされたテーブルとデータを Hive Viewer 2.0または Hue UIで照会できます。Hiveの使用方法の詳細は、Hive を使用するガイドをご参照ください。
SELECT * FROM mig_test_tb;

cloudhadoop-mysql-hive_ko