Amazon での Sqoop に関する考慮事項 EMR - Amazon EMR

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

Amazon での Sqoop に関する考慮事項 EMR

Amazon で Sqoop を実行するときは、次の項目を考慮してくださいEMR。

HCatalog 統合での Sqoop の使用

Amazon の Sqoop は Sqoop HCatalog統合 EMRをサポートしています。Sqoop を使用して Amazon S3 のHCatalogテーブルに出力を書き込む場合は、 mapred.output.direct.NativeS3FileSystem および mapred.output.direct.EmrFileSystemプロパティを に設定して Amazon EMRダイレクト書き込みを無効にしますfalse。 Amazon S3 詳細については、「の使用 HCatalog」を参照してください。Hadoop の -D mapred.output.direct.NativeS3FileSystem=false および -D mapred.output.direct.EmrFileSystem=false コマンドを使用できます。直接書き込みを無効にしない場合、エラーは発生しませんが、テーブルが Amazon S3 で作成され、データは書き込まれません。

Sqoop JDBCとデータベースのサポート

デフォルトでは、Sqoop には MariaDB ドライバーと PostgreSQL ドライバーがインストールされています。Sqoop 用にインストールされた PostgreSQL ドライバーは、PostgreSQL 8.4 でのみ機能します。Sqoop 用のJDBCコネクタの代替セットをインストールするには、クラスターマスターノードに接続し、 にインストールします/usr/lib/sqoop/lib。以下は、さまざまなJDBCコネクタへのリンクです。

Sqoop でサポートされているデータベースは、次の URL、http://sqoop.apache.org/docs/ に記載されています。version/SqoopUserGuide.html#_supported_databases、ここで version は、1.4.6 など、使用している Sqoop のバージョンです。JDBC 接続文字列がこのリストの文字列と一致しない場合は、ドライバーを指定する必要があります。

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

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

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

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

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

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

でのSSL暗号化の詳細についてはRDS、「Amazon ユーザーガイド」の「 SSLを使用した DB インスタンスへの接続の暗号化RDS」を参照してください。

詳細については、Apache Sqoop ドキュメントを参照してください。

パスワードの保護

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

Java KeyStore

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

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

    hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
  2. パスワードエイリアスを使用して 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://mybucket/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
  2. このファイルを使用して Sqoop ジョブを起動します。

    sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/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://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master -P