- 印刷する
- PDF
CDB MySQL データの移行
- 印刷する
- PDF
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 ACGを追加してください。
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のプライベートドメインとポートを使用しました。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 Viewer 2.0でHiveにマイグレーションされたテーブルとデータを照会したり、HUE UIでも照会できます。Hiveの使用に関する詳細は、Hiveを使用するを参考にしてください。
SELECT * FROM mig_test_tb;