VPC環境で利用できます。
SQL to Hadoop(Sqoop)は、リレーショナルデータベースと 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クライアントは、エッジノードを除くマスターノードとデータノードサーバにデフォルトでインストールされています。別途のインストールなしでマイグレーションを行うことができます。
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にサンプルテーブルとデータを入力します。
- Cloud DB for MySQLコンソールでテスト用の Databaseを作成します。
{height="" width="70%"}
{height="" width="70%"}
- MySQLへのアクセスコマンドは次の通りです。
- テーブル作成時に構文エラーが発生する場合は、単一引用符( ' ' )の部分を確認してください。
mysql -h [CDB MySQLドメイン] -u [クラスタ管理者のアカウント名 ] -p
mysql> show databases;
mysql> use migdb;
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コマンドでデータをマイグレーション
-
Hiveにマイグレーションするための Databaseを作成します。
- Hue UIからも作成できます。Hiveの使用方法の詳細は、Hive を使用するガイドをご参照ください。
CREATE DATABASE migdb; -
Sqoop CLIの
import-all-tablesオプションを使用してデータを Hiveにマイグレーションします。jdbc情報は Cloud DB for MySQLの Privateドメインとポートを使用します。- Insecure Hadoop
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- Secure Hadoop
sudo su - hiveコマンドを実行してユーザーアカウントに切り替え、Kerberos認証を行います。
sudo su - hive kinit -kt /etc/security/keytabs/hive.service.keytab hive/<FQDN>@USER.GUIDE 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 - Insecure Hadoop
-
OKメッセージと共に、正常にマイグレーションタスクが完了したかを確認します。- Hiveにマイグレーションされたテーブルとデータを Hive Viewer 2.0または Hue UIで照会できます。
- Hiveの使用方法の詳細は、Hive を使用するガイドをご参照ください。
SELECT * FROM mig_test_tb;