--- title: "Sqoop を使用する" slug: "hadoop-vpc-15" tags: ["Cloud Hadoop", "vpc"] updated: 2026-09-17T09:25:51Z published: 2026-09-17T09:25:51Z canonical: "guide.ncloud-docs.com/hadoop-vpc-15" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Sqoop を使用する VPC環境で利用できます。 SQL to Hadoop(Sqoop)は、Hadoopとリレーショナルデータベースの間でデータを転送できるように設計されたオープンソースソフトウェアです。 Oracle、MySQLなどの RDBMSの特定のテーブルや条件に合致するデータを HDFSに転送できるほか、Hive、Pig、HBaseにもデータを転送できます。逆に、HDFSに保存されているデータを RDBMSに転送することもできます。 Sqoopは2009年最初のバージョンが出て以来、2012年に Apache Top Level Projectとなり、継続して発展しています。現在、Apache Sqoopは Sqoop 1、Sqoop 2の2つのバージョンで発展しつつあります。Sqoop 1はクライアント方式で、Sqoop 2は既存の Sqoop 1方式にサーバサイド方式が追加されたバージョンです。 Apache Sqoopは2021年6月に retired状態となり、2021年7月に Apache Atticに移行されました。本ガイドでは、Cloud Hadoopに含まれる Sqoopを使用して、MySQLのデータを Cloud Hadoopにインポートしたり、Cloud Hadoopのデータを MySQLに転送する方法について説明します。 NAVERクラウドプラットフォームの Cloud Hadoopでサポートする**クラスタ Type**には、Sqoopがデフォルトでインストールされています。 本ガイドでは、Sqoopを用いて MySQLデータを Cloud Hadoopにコピーする方法とその逆のパターンについて説明します。その他の Sqoopの使用方法は、[Apache Sqoop Documentation](https://sqoop.apache.org/)をご参照ください。 参考 - このガイドでは、MySQL 5バージョンを基準に説明しています。 MySQL 8バージョンにマイグレーションする場合、コネクタのバージョンアップグレードが必要です。 - 8バージョンのコネクタバージョンは近日中にアップデートされる予定です。 ## 事前タスク Cloud Hadoopで Sqoopを使用するには、以下のような事前タスクが必要です。 | 項目 | 説明 | ガイド | | --- | --- | --- | | ACGおよび ACLの設定 | Cloud Hadoopクラスタサーバと RDBMSサーバ間に通信を行えるように設定 | [ファイアウォール設定(ACG)](/docs/ja/server-acg-classic) | | RDBMS | ソースデータが保存されている RDBMS | | 事前タスクの完了後、以下の手順に従ってください。 - [1.Hadoopクラスタアクセス](/docs/ja/hadoop-vpc-15#1-hadoop-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EC%A0%91%EC%86%8D) - [2.MySQLアクセスおよびインポート対象データの確認](/docs/ja/hadoop-vpc-15#2-mysql-%EC%A0%91%EC%86%8D-%EB%B0%8F-%EA%B0%80%EC%A0%B8%EC%98%AC-%EB%8C%80%EC%83%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%99%95%EC%9D%B8) - [3.Sqoopコマンドでのデータマイグレーション](/docs/ja/hadoop-vpc-15#3-sqoop-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0) - [4.Hiveでの HDFSデータ確認](/docs/ja/hadoop-vpc-15#4-hive%EC%97%90%EC%84%9C-hdfs-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%99%95%EC%9D%B8) ### 1.Hadoopクラスタアクセス タスクを行う Cloud Hadoopクラスタのマスターノードにアクセスします。 クラスタのマスターノードにアクセスする方法は、[SSHでクラスタノードにアクセス](/docs/ja/hadoop-vpc-5)ガイドをご参照ください。 ### 2.MySQLアクセスおよびインポート対象データの確認 1. 以下のコマンドを実行し、リモート MySQLサーバにアクセスできるように MySQLクライアントがインストールされているか確認します。 ``` [sshuser@m-001-example-1fx8-hd ~]$ mysql -V mysql Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using EditLine wrapper ``` - マスターノード(2台)には、MySQLクライアントがデフォルトでインストールされています。 2. 以下のコマンドを実行して MySQLサーバに接続されたか確認します。 ``` mysql -h mysql.local -u [クラスタ管理者のアカウント名 ] -p ``` **アクセス例** ``` [sshuser@m-001-example-1fx8-hd ~]$ mysql -u example -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.7.37-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> ``` 注意 接続がうまくいかない場合は、MySQL DBのポートで ACGがうまく開いているか確認し、MySQL DB自体の ACLリストをご確認ください。 3. ユーザーの MySQL DBサーバから Hadoopクラスタ HDFSにインポートするデータを確認します。 ``` mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sqoop | +--------------------+ 4 rows in set (0.00 sec) mysql> use sqoop Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-----------------+ | Tables_in_sqoop | +-----------------+ | SQOOP_TEST | +-----------------+ 1 row in set (0.00 sec) mysql> select * from SQOOP_TEST; +--------------+--------+-----------+------+---------------------+------+------+--------+ | SQOOP_TESTNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | +--------------+--------+-----------+------+---------------------+------+------+--------+ | 7369 | SMITH | CLERK | 7902 | 1980-12-17 00:00:00 | 800 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600 | 300 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 00:00:00 | 1250 | 500 | 30 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 00:00:00 | 1250 | 1400 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 00:00:00 | 3000 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 00:00:00 | 1500 | 0 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 00:00:00 | 1100 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950 | NULL | 30 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300 | NULL | 10 | +--------------+--------+-----------+------+---------------------+------+------+--------+ 14 rows in set (0.00 sec) ``` - 以下の例は、sqoopというデータベースに SQOOP_TESTテーブルがあらかじめ作成されたステータスです。 ### 3.Sqoopコマンドでのデータマイグレーション 1. `sudo su` - [ユーザーアカウント] コマンドを実行してユーザーアカウントに切り替えます。 ``` [sshuser@m-001-example-1fx8-hd ~]$ sudo su - test [test@m-001-example-1fx8-hd ~]# ``` 2. Sqoopコマンドの `import`を利用してデータを importします。 - `import`コマンドを用いると、特定のデータベース、特定のテーブル、クエリの実行結果などをインポートできます。 ``` sqoop import --connect jdbc:mysql://[マスターノード Private IP]:3306/[データベース名] --username [クラスタ管理者のアカウント名] --password [クラスタ管理者のパスワード] --table [対象テーブル] ``` - `import`コマンドを用いると、特定のデータベース、特定のテーブル、クエリの実行結果などをインポートできます。Sqoop importコマンドの一般的なオプションは、下記の表をご参照ください。 | 引数 | 説明 | | --- | --- | | `--connect <jdbc-uri>` | JDBC接続文字列を指定 | | `--connection-manager <class-name>` | 使用する接続管理者クラスを指定 | | `--driver <class-name>` | 使用する JDBCドライバクラスを手動で指定するときに使用 | | `--hadoop-home <dir>` | $ HADOOP_HOMEに指定 | | `--help` | ヘルプ | | `-P` | コンソールでパスワードを読み込む | | `--password <password>` | 認証パスワードを設定 | | `--username <username>` | 認証ユーザー名を設定 | | `--verbose` | タスク中により多くの情報を出力する場合に使用 | | `--connection-param-file <filename>` | 接続パラメータを提供する任意の属性ファイルを指定 | Sqoopは、MapReduceタスクを通じてデータをインポートします。以下は、最も一般的な方法で特定のデータベースの特定のテーブルをインポートするユースケースです。 ``` [root@m-001-example-1fx8-hd ~]# sqoop import --connect jdbc:mysql://[マスターノード Private IP]:3306/sqoop \ --username [クラスタ管理者のアカウント名] \ -P --table sqoop_test \ --hive-import --create-hive-table --hive-table sqoop_workspace.sqoop_test -m 1 ... 18/08/03 09:06:38 INFO client.RequestHedgingRMFailoverProxyProvider: Looking for the active RM in [rm1, rm2]... 18/08/03 09:06:38 INFO client.RequestHedgingRMFailoverProxyProvider: Found active RM [rm1] 18/08/03 09:06:42 INFO db.DBInputFormat: Using read commited transaction isolation 18/08/03 09:06:42 INFO db.DataDrivenDBInputFormat: BoundingValsQuery: SELECT MIN(`SQOOP_TESTNO`), MAX(`SQOOP_TESTNO`) FROM `SQOOP_TEST` 18/08/03 09:06:42 INFO db.IntegerSplitter: Split size: 141; Num splits: 4 from: 7369 to: 7934 18/08/03 09:06:42 INFO mapreduce.JobSubmitter: number of splits:4 18/08/03 09:06:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1532345019075_0002 18/08/03 09:06:43 INFO impl.YarnClientImpl: Submitted application application_1532345019075_0002 18/08/03 09:06:43 INFO mapreduce.Job: The url to track the job: http://m-002-obj001.hd:8088/proxy/application_1532345019075_0002/ 18/08/03 09:06:43 INFO mapreduce.Job: Running job: job_1532345019075_0002 18/08/03 09:06:49 INFO mapreduce.Job: Job job_1532345019075_0002 running in uber mode : false 18/08/03 09:06:49 INFO mapreduce.Job: map 0% reduce 0% 18/08/03 09:06:57 INFO mapreduce.Job: map 75% reduce 0% 18/08/03 09:07:38 INFO mapreduce.Job: map 100% reduce 0% 18/08/03 09:07:40 INFO mapreduce.Job: Job job_1532345019075_0002 completed successfully 18/08/03 09:07:40 INFO mapreduce.Job: Counters: 30 File System Counters FILE: Number of bytes read=0 FILE: Number of bytes written=683688 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 S3A: Number of bytes read=497 S3A: Number of bytes written=853 S3A: Number of read operations=44 S3A: Number of large read operations=0 S3A: Number of write operations=36 Job Counters Launched map tasks=4 Other local map tasks=4 Total time spent by all maps in occupied slots (ms)=277580 Total time spent by all reduces in occupied slots (ms)=0 Total time spent by all map tasks (ms)=55516 Total vcore-milliseconds taken by all map tasks=55516 Total megabyte-milliseconds taken by all map tasks=170545152 Map-Reduce Framework Map input records=14 Map output records=14 Input split bytes=497 Spilled Records=0 Failed Shuffles=0 Merged Map outputs=0 GC time elapsed (ms)=248 CPU time spent (ms)=5690 Physical memory (bytes) snapshot=1087877120 Virtual memory (bytes) snapshot=12255760384 Total committed heap usage (bytes)=702545920 File Input Format Counters Bytes Read=0 File Output Format Counters Bytes Written=853 18/08/03 09:07:40 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 62.4343 seconds (0 bytes/sec) 18/08/03 09:07:40 INFO mapreduce.ImportJobBase: Retrieved 14 records. ``` 注意 importするテーブルには、Primary Keyが必ず必要です。Primary Keyがない場合、以下のようなエラーが発生します。 ``` 18/08/03 09:00:25 ERROR tool.ImportTool: Error during import: No primary key could be found for table SQOOP_TEST. Please specify one with --split-by or perform a sequential import with '-m 1'. ``` ### 4.Hiveでの HDFSデータ確認 1. Hiveを通じて、テーブルが正常に保存されているか確認します。 - Hiveの使用方法は、[Hive を使用する](/docs/ja/hadoop-vpc-17)ガイドをご参照ください。 2. importしたテーブルが正常に保存されているかを確認するクエリを作成し、実行します。 ``` SELECT * FROM sqoop_workspace.sqoop_test; ``` ![chadoop-4-1-101_ko](https://cdn.document360.io/6998976f-9d95-4df8-b847-d375892b92c2/Images/Documentation/chadoop-4-1-101_ja.png?sv=2026-02-06&spr=https&st=2026-10-26T14%3A33%3A27Z&se=2026-10-26T15%3A33%3A27Z&sr=c&sp=r&sig=Lfm%2Fl5attWnyPrhnVe%2Fh7vqg8TBurygCnT7nraD8FfA%3D) ## よくある質問 Q.Cloud hadoopサービスのマスターノードで Sqoop Clientを使用したいのですが、jdbcドライバを datanodeにも追加する必要がありますか? A.jdbcドライバを datanodeでインストールする必要はなく、Sqoopコマンドを使用するサーバに jdbcドライバがあれば使用できます。