

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EMR での Sqoop に関する考慮事項
<a name="emr-sqoop-considerations"></a>

Amazon EMR で Sqoop を実行するときは、以下について検討します。

## HCatalog の統合での Sqoop の使用
<a name="emr-sqoop-hcatalog"></a>

Amazon EMR の Sqoop は、[Sqoop-HCatalog の統合](https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_sqoop_hcatalog_integration)をサポートします。Sqoop を使用して Amazon S3 の HCatalog テーブルに出力を書き込む場合は、`mapred.output.direct.NativeS3FileSystem` プロパティと `mapred.output.direct.EmrFileSystem` プロパティを `false` に設定して、Amazon EMR の直接書き込み機能を無効にしてください。詳細については、「[HCatalog の使用](emr-hcatalog-using.md)」を参照してください。Hadoop の `-D mapred.output.direct.NativeS3FileSystem=false` および `-D mapred.output.direct.EmrFileSystem=false` コマンドを使用できます。直接書き込みを無効にしない場合、エラーは発生しませんが、テーブルが Amazon S3 で作成され、データは書き込まれません。

## Sqoop JDBC およびデータベースサポート
<a name="sqoop-supported-drivers-databases"></a>

デフォルトでは、Sqoop には MariaDB および PostgreSQL ドライバーがインストールされています。Sqoop にインストールされた PostgreSQL ドライバーは PostgreSQL 8.4 に対してのみ機能します。Sqoop に代替となる一連の JDBC コネクターをインストールするには、クラスターのマスターノードに接続して `/usr/lib/sqoop/lib` にインストールします。以下は各種 JDBC コネクターのリンクです。
+ MariaDB: [About MariaDB Connector/J](https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/)
+ PostgreSQL: [PostgreSQL JDBC driver](https://jdbc.postgresql.org/)。
+ SQLServer: [Download Microsoft JDBC driver for SQL Server](https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server)。
+ MySQL: [Download Connector/J](https://dev.mysql.com/downloads/connector/j/)
+ Oracle: [Get Oracle JDBC drivers and UCP from the Oracle Maven repository](http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html)

Sqoop でサポートされるデータベースが、http://sqoop.apache.org/docs/*version*/SqoopUserGuide.html\$1\$1supported\$1databases で一覧になっています。ここで、*version* は使用する Sqoop のバージョン (1.4.6 など) です。JDBC 接続文字列がこのリストの文字列に一致しない場合は、ドライバーを指定する必要があります。

例えば、次のコマンドを使用して Amazon Redshift データベーステーブルにエクスポートできます (JDBC 4.1 の場合)。

```
sqoop export --connect jdbc:redshift://$MYREDSHIFTHOST:5439/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver com.amazon.redshift.jdbc41.Driver --username master --password Mymasterpass1
```

MariaDB と MySQL 両方の接続文字列を使用できますが、MariaDB 接続文字列を指定する場合は、ドライバーを指定する必要があります。

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1
```

Secure Socket Layer 暗号化を使用してデータベースに接続している場合、次の Sqoop エクスポート例にあるような JDBC URI を使用する必要があります。

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1
```

RDS での SSL 暗号化の詳細については、「Amazon RDS ユーザーガイド」の「[SSL を使用した DB インスタンスへの接続の暗号化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html)」を参照してください。

詳細については、[Apache Sqoop](http://sqoop.apache.org) ドキュメントを参照してください。

## パスワードの保護
<a name="emr-sqoop-password"></a>

パスワードを安全に渡す方法はいくつかあります。

------
#### [ Java KeyStore ]

推奨の方法では、Java KeyStore (JKS) を使用してパスワードを暗号化するため、パスワードを読み取り可能な形式で保存する必要がありません。

1. パスワードエイリアスを作成します。プロンプトが表示されたら、データベースへのアクセスに使用するパスワードを入力します。

   ```
   hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
   ```

1. パスワードエイリアスを使用して Sqoop ジョブを起動します。

   ```
   sqoop export -Dhadoop.security.credential.provider.path=jceks://hdfs/user/root/mysql.password.jceks --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-alias mydb.password.alias
   ```

------
#### [ --password-file ]

次の例に示すように、`--password-file` コマンドを使用してパスワードを渡すことができます。

1. パスワードを含む新しいファイルを作成します。

   ```
   echo -n 'Mymasterpass1' > /home/hadoop/mysql-pass.password
   ```

1. このファイルを使用して Sqoop ジョブを起動します。

   ```
   sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password-file /home/hadoop/mysql-pass.password
   ```

------
#### [ -P ]

次の例に示すように、`-P` コマンドを使用して、プロンプトからパスワードを入力できます。

```
sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://amzn-s3-demo-bucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P
```

------