EMR ファイルシステム (EMRFS) - Amazon EMR

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

EMR ファイルシステム (EMRFS)

EMR ファイルシステム (EMRFS) は、すべての Amazon EMR クラスターが Amazon EMR と Amazon S3 の間で通常のファイルを直接読み書きするために使用する HDFS の実装です。EMRFS には Hadoop で使用するために Amazon S3 に永続的なデータを保存するという利便性がある一方で、データの暗号化などの機能も用意されています。

データの暗号化により、EMRFS が Amazon S3 に書き込むオブジェクトが暗号化され、Amazon S3 の暗号化されたオブジェクトを EMRFS で操作できるようになります。Amazon EMR リリース 4.8.0 以降のバージョンを使用している場合は、セキュリティ設定を使用して、Amazon S3 の EMRFS オブジェクトの暗号化を、他の暗号化設定と合わせてセットアップできます。詳細については「暗号化オプション」を参照してください。これまでのリリースバージョンの Amazon EMR を使用している場合は、手動で暗号化を設定できます。詳細については、「EMRFS プロパティを使用して Amazon S3 の暗号化を指定する」を参照してください。

Amazon S3 には、すべての AWS リージョンでの GET、PUT、および LIST の全操作について、書き込み後読み取りの強力な整合性維持機能があります。つまり、EMRFS を使用して書き込んだ内容が Amazon S3 から読み取る内容であり、パフォーマンスにも影響はありません。詳細については、「Amazon S3 のデータ整合性モデル」を参照してください。

Amazon EMR リリース 5.10.0 以降のバージョンを使用するときは、Amazon S3 のクラスターユーザー、グループ、または EMRFS データの場所に基づいて、Amazon S3 への EMRFS リクエストに異なる IAM ロールを使用できます。詳細については、「Amazon S3 への EMRFS リクエストの IAM ロールを設定する」を参照してください。

警告

Apache Spark ジョブを実行する Amazon EMR クラスターの投機的実行を有効にする前に、次の情報を確認してください。

EMRFS には、EMRFS S3-optimizedコミッターが含まれています。これは、EMRFS を使用するときに Amazon S3 にファイルを書き込むために最適化された OutputCommitter 実装です。Amazon S3 にデータを書き込み、EMRFS S3 最適化コミッターを使用しないアプリケーションで Apache Spark 投機的実行機能をオンにすると、「SPARK-10063」で説明されているデータの正確性の問題が発生する可能性があります。これは、Amazon EMR リリース 5.19 より前の Amazon EMR バージョンを使用しているか、ORC や CSV などのファイル形式で Amazon S3 に書き込んでいる場合に発生する可能性があります。EMRFS S3 最適化コミッターは、これらの形式をサポートしていません。EMRFS S3 最適化コミッターを使用するための要件の詳細なリストについては、「EMRFS S3 最適化コミッターの要件」を参照してください。

EMRFS 直接書き込みは、通常、次を書き込むときなどの、EMRFS S3 最適化コミッターがサポートされていないときに使用されます。

  • ORC やテキストなどの、Parquet 以外の出力形式。

  • Spark RDD API を使用する Hadoop ファイル。

  • Hive を使用する Parquet SerDe。「Hive metastore Parquet table conversion」を参照してください。

EMRFS 直接書き込みは、次のシナリオでは使用されません。

  • EMRFS S3 最適化コミッターが有効なとき。「EMRFS S3 最適化コミッターの要件」を参照してください。

  • を dynamic partitionOverwriteMode に設定して動的パーティションを記述する場合。

  • Hive のデフォルトのパーティションの場所規則に準拠しない場所などの、カスタムのパーティションの場所に書き込むとき。

  • HDFS への書き込みや S3A ファイルシステムの使用など、EMRFS 以外のファイルシステムを使用するとき。

アプリケーションが Amazon EMR 5.14.0 以降で直接書き込みを使用しているかどうかを判別するには、Spark INFO ログ記録を有効にします。「Direct Write: ENABLED」というテキストを含むログ行が Spark ドライバーログまたは Spark エグゼキューターコンテナログのいずれかに存在する場合、Spark アプリケーションが直接書き込みを使用して書き込んだことがわかります。

Amazon EMR クラスターでは、投機的実行はデフォルトで OFF になっています。次の条件が両方ともあてはまる場合は、投機的実行をオンにしないことを強くお勧めします。

  • データを Amazon S3 に書き込む場合。

  • データを Apache Parquet 以外の形式で、または Apache Parquet 形式だが EMRFS S3 最適化コミッターを使用せずに書き込む場合。

Spark 投機的実行をオンにし、EMRFS 直接書き込みを使用して Amazon S3 にデータを書き込むと、断続的なデータ損失が発生する可能性があります。HDFS にデータを書き込むか、EMRFS S3 最適化コミッターを使用して Parquet 形式でデータを書き込むときは、Amazon EMR が直接書き込みを使用しないため、この問題は発生しません。

EMRFS 直接書き込みを使用する形式で Spark から Amazon S3 にデータを書き込み、かつ投機的実行を使用する必要がある場合は、HDFS に書き込み、S3DistCp を使用して出力ファイルを Amazon S3 に転送することをお勧めします。