--- title: "Sqoop を使用する" slug: "hadoop-chadoop-4-1" updated: 2026-09-17T09:25:49Z published: 2026-09-17T09:25:49Z canonical: "guide.ncloud-docs.com/hadoop-chadoop-4-1" 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 を使用する Classic環境で利用できます。 Sqoop(SQL to Hadoop)は、Hadoopと関係データベースの間でデータを配信できるように設計されたオープンソースソフトウェアです。 簡単な CLIで 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方式にサーバサイド方式が追加されたバージョンです。 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/compute-compute-2-3) | | RDBMS | ソースデータが保存されている RDBMS | | 事前タスクの完了後、以下の手順に従います。 - [1. Hadoopクラスタにアクセス](/docs/ja/hadoop-chadoop-4-1#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-chadoop-4-1#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-chadoop-4-1#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-chadoop-4-1#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-chadoop-3-2)ガイドをご参照ください。 ### 2. MySQLアクセスおよびインポートする対象データを確認 1. 以下のコマンドを実行し、リモート MySQLサーバにアクセスできるように MySQLクライアントがインストールされているか確認します。 ``` [sshuser@m-001-example-1fx8-hd ~]$ mysql -V mysql Ver 14.14 Distrib 5.6.41, for Linux (x86_64) using EditLine wrapper ``` - マスターノード(2台)には、MySQLクライアントがデフォルトでインストールされています。 2. 以下のコマンドを実行し、MySQLサーバに接続されたか確認します。 ``` mysql -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.6.35-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 -`コマンドを実行して rootアカウントに切り替えます。 ``` [sshuser@m-001-example-1fx8-hd ~]$ sudo su - [root@m-001-example-1fx8-hd ~]# ``` 2. `import` Sqoopコマンドを実行してデータをインポートします。 - `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-chadoop-4-2)ガイドをご参照ください。 2. importしたテーブルが正常に保存されているかを確認するクエリを作成し、実行します。 ``` SELECT * FROM sqoop_workspace.sqoop_test; ``` ![chadoop-4-1-101_ja.png](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%3A34%3A25Z&se=2026-10-26T15%3A34%3A25Z&sr=c&sp=r&sig=lceL4t6h%2FZ3kvdoCSewOMkPzo3SB%2Bd5LaEqiM%2FtK64o%3D) ## よくある質問を先にご確認ください。 Q. Cloud hadoopサービスのマスターノードで Sqoop Clientを使用したいのですが、jdbcドライバを datanodeにも追加する必要がありますか? A. jdbcドライバを datanodeでインストールする必要はなく、Sqoopコマンドを使用するサーバに jdbcドライバがあれば使用できます。