CDB MySQL データの移行

Prev Next

Classic環境で利用できます。

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サーバのIPは、Ambari UIHostsメニューで確認できます。

<例>
DBの設定情報

  • User_ID: mig_acct
  • Host(IP):Cloud HadoopサーバのIP帯域
    <例> 10.10.10.%
  • パスワード:任意設定
    hadoop-chadoop-use-ex4_1-1_ja

2. ACG設定

Cloud Hadoopのマスターノード2番サーバがCloud DB for MySQLにアクセスできるようにACGを設定します。

  • Cloud DB ACG設定のアクセスソースにCloud Hadoopのマスターノード2番サーバIP ACGを追加します。
    cloudhadoop-set-acg1_ja

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のプライベートドメインとポートを使用しました。

    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にマイグレーションされたテーブルとデータをHive Viewer 2.0またはHUE UIで照会できます。 Hiveの使用に関する詳細は、Hiveを使用するガイドをご参照ください。
SELECT * FROM mig_test_tb;

cloudhadoop-mysql-hive_ja