S3A MagicV2 コミッター - Amazon EMR

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

S3A MagicV2 コミッター

EMR-6.15.0 リリースでは、Amazon EMR は MagicV2 コミッターと呼ばれる新しい S3A コミッタータイプを導入しました。この機能に関する包括的な情報については、関連するドキュメントセクションを参照してください。

MagicV2 Committer は、オープンソースの MagicCommitter の拡張実装を表し、S3A ファイルシステムを介した Amazon S3 へのファイル書き込みを最適化するように特別に設計されています。以前のバージョンと同様に、Amazon S3 のマルチパートアップロード機能を活用して、ジョブおよびタスクのコミットフェーズに通常関連する従来のリストおよび名前変更オペレーションを排除します。

元の MagicCommitter と比較して、MagicV2 コミッターは、ジョブコミットフェーズではなく、タスクコミットフェーズ中にジョブの出力場所にファイルを書き込むことで、優れたパフォーマンスを示します。このアプローチにより、分散ファイル書き込みが可能になり、Amazon S3 での一時的なコミットメタデータストレージが不要になり、コスト効率が向上します。さらに、MagicV2 コミッターは、コミットプロセス中に複数のスレッド間でファイルパスを上書きできるので、柔軟性が向上します。

MagicV2 コミッターを有効にする

MagicV2 コミッターを有効にするには、ジョブ設定で次の設定を渡すか、コアサイト設定を使用してプロパティを設定します。詳細については、「アプリケーションの設定」を参照してください。

mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory fs.s3a.committer.magic.enabled=true fs.s3a.committer.name=magicv2 fs.s3a.committer.magic.track.commits.in.memory.enabled=true

新しいファイルをコミットまたは書き込む前に既存のディレクトリを上書きする必要があるワークロードの場合、前述の設定に加えて、次の追加設定が必要です。

fs.s3a.committer.magic.overwrite.and.commit=true fs.s3a.committer.magic.delete.directory.threads=thread size

threads 設定のデフォルト値は 20 です。ただし、パフォーマンスを向上させるために上書きするディレクトリが多数ある場合は、このパラメータを調整しなければなりません。これは EMR-7.2.0 以上でのみ使用できます。

考慮事項

  • タスクが実行されて Amazon S3 へのデータの書き込みが行われているときに Java Virtual Machine (JVM) がクラッシュしたり強制終了されたりすることにより、不完全なマルチパートアップロードが残される可能性が高くなります。そのため、MagicV2 コミッターを使用するときは、失敗したマルチパートアップロードの管理に関するベストプラクティスに従ってください。詳細については、「Amazon EMR 管理ガイド」の Amazon S3 バケットの処理に関するベストプラクティスを参照してください。

  • ジョブが失敗しても、成功したタスクによってコミットされたファイルは送信先パスに表示されます。このような場合、ユーザーは同じ送信先パスでジョブを再実行する前に、コミットされたファイルを手動でクリーンアップしなければなりません。

  • MagicV2 コミッターは、タスクがコミットされるか中止されるまで、タスクの試行によって書き込まれた各ファイルのために少量のメモリを消費します。ほとんどのジョブで消費されるメモリ ry の量は無視できる程度です。ただし、単一のエグゼキュタープロセスが多数のタスクを同時に処理する場合、大量のメモリ負荷がかかり、コンテナまたはエグゼキュターのメモリ不足 (OOM) が発生する可能性があります。コンテナまたはエグゼキュターのメモリを増やせば、この問題を解決できます。