翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR での Sqoop に関する考慮事項
Amazon EMR で Sqoop を実行するときは、以下について検討します。
HCatalog の統合での Sqoop の使用
Amazon EMR の Sqoop は、Sqoop-HCatalog の統合mapred.output.direct.NativeS3FileSystem
プロパティと mapred.output.direct.EmrFileSystem
プロパティを false
に設定して、Amazon EMR の直接書き込み機能を無効にしてください。詳細については、「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 コネクターのリンクです。
-
MariaDB: About MariaDB Connector/J
-
PostgreSQL: PostgreSQL JDBC driver
。 -
SQLServer: Download Microsoft JDBC driver for SQL Server
。 -
MySQL: Download Connector/J
-
Oracle: Get Oracle JDBC drivers and UCP from the Oracle Maven repository
Sqoop でサポートされるデータベースが、http://sqoop.apache.org/docs/version
/SqoopUserGuide.html#_supported_databases で一覧になっています。ここで、version
は使用する Sqoop のバージョン (1.4.6 など) です。JDBC 接続文字列がこのリストの文字列に一致しない場合は、ドライバーを指定する必要があります。
例えば、次のコマンドを使用して Amazon Redshift データベーステーブルにエクスポートできます (JDBC 4.1 の場合)。
sqoop export --connect jdbc:redshift://$
MYREDSHIFTHOST
:5439/mydb
--tablemysqoopexport
--export-dir s3://amzn-s3-demo-bucket/myinputfiles/
--driver com.amazon.redshift.jdbc41.Driver --usernamemaster
--passwordMymasterpass1
MariaDB と MySQL 両方の接続文字列を使用できますが、MariaDB 接続文字列を指定する場合は、ドライバーを指定する必要があります。
sqoop export --connect jdbc:mariadb://$
HOSTNAME
:3306/mydb
--tablemysqoopexport
--export-dir s3://amzn-s3-demo-bucket/myinputfiles/
--driver org.mariadb.jdbc.Driver --usernamemaster
--passwordMymasterpass1
Secure Socket Layer 暗号化を使用してデータベースに接続している場合、次の Sqoop エクスポート例にあるような JDBC URI を使用する必要があります。
sqoop export --connect jdbc:mariadb://$
HOSTNAME
:3306/mydb
?verifyServerCertificate=false&useSSL=true&requireSSL=true --tablemysqoopexport
--export-dir s3://amzn-s3-demo-bucket/myinputfiles/
--driver org.mariadb.jdbc.Driver --usernamemaster
--passwordMymasterpass1
RDS での SSL 暗号化の詳細については、「Amazon RDS ユーザーガイド」の「SSL を使用した DB インスタンスへの接続の暗号化」を参照してください。
詳細については、Apache Sqoop
パスワードの保護
パスワードを安全に渡す方法はいくつかあります。
推奨の方法では、Java KeyStore (JKS) を使用してパスワードを暗号化するため、パスワードを読み取り可能な形式で保存する必要がありません。
-
パスワードエイリアスを作成します。プロンプトが表示されたら、データベースへのアクセスに使用するパスワードを入力します。
hadoop credential create mydb.password.alias -provider jceks://hdfs/user/root/mysql.password.jceks
-
パスワードエイリアスを使用して 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