VPC環境で利用できます。
Sqoop(SQL to Hadoop)は、関係データベースと Hadoop間の効率的なデータ転送をサポートするツールです。
RDBMSに保存されているデータを HDFSで分析できるように HDFSにインポートすることができます。逆に、分析結果を RDBMSにエクスポートでき、HDFS、Hive、HBase、Accumuloなどに転送することもできます。
本ガイドでは、Sqoopを利用して、NAVERクラウドプラットフォームの Cloud DB for MySQLから Cloud Hadoopにデータを移行する方法を紹介します。
Sqoopの使い方やコマンドについては、Sqoop を使用するガイドをご参照ください。
事前タスク
- Object Storageを作成します。
- Object Storage作成に関する詳細は、Object Storage ご利用ガイドをご参照ください。
- Cloud Hadoopクラスタを作成します。
- Cloud Hadoopクラスタ作成に関する詳細は、Cloud Hadoop を開始するガイドをご参照ください。
- Cloud DB for MySQLを作成します。
- Cloud DB for MySQL作成に関する詳細は、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 UIの Hosts メニューで確認できます。
例)
DB設定情報
- User ID: mig acct
- Host(IP): Cloud Hadoopサーバの IPアドレス帯域
例) 10.10.10.% - パスワード: 任意設定

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

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