Amazon EMR Serverless

Apache Spark や Hive のジョブをクラスター管理なしで実行し、処理に使用した vCPU とメモリの時間に対してのみ課金されるサーバーレスビッグデータ処理サービス

概要

Amazon EMR Serverless は、Apache Spark や Hive のジョブをサーバーレスで実行するビッグデータ処理サービスです。クラスターの構築、スケーリング、パッチ適用が一切不要で、ジョブを投入するだけで必要なリソースが自動的にプロビジョニングされます。処理完了後はリソースが解放され、実際に使用した vCPU 時間とメモリ時間に対してのみ課金されます。EMR Runtime for Apache Spark により、OSS 版 Spark に対して最大 3.5 倍の高速化が追加料金なしで適用されます。

アプリケーションとジョブ実行のライフサイクル

EMR Serverless ではまずアプリケーションを作成します。アプリケーションは Spark または Hive のランタイム環境を定義するコンテナで、EMR リリースバージョン (emr-6.x、emr-7.x) を指定します。アプリケーションの状態には CREATING、CREATED、STARTING、STARTED、STOPPING、STOPPED、TERMINATED があり、ジョブを受け付けるのは STARTED 状態のときだけです。ジョブの投入は StartJobRun API で行い、Spark の場合は JAR ファイルまたは Python スクリプトの S3 パスとエントリポイントを指定します。ジョブが投入されると、EMR Serverless がワーカーを自動的にプロビジョニングし、処理を開始します。事前初期化容量 (pre-initialized capacity) を設定すると、ドライバーとワーカーが初期化済みの状態で待機し、ジョブを数秒で開始できます。事前初期化したワーカーは、アプリケーションがアイドルの間も課金対象です。ジョブの完了後、事前初期化した容量を超えて使ったワーカーは解放されます。アプリケーションの自動停止は既定で有効で (2026 年 10 月時点)、アイドルが 15 分続くとアプリケーション自体も STOPPED 状態に遷移し、事前初期化した容量を解放します。

ワーカー構成とコスト制御

EMR Serverless のワーカーは vCPU とメモリの組み合わせで定義され、ジョブの特性に応じてカスタマイズできます。ユーザーガイドの既定値 (2026 年 10 月時点) では Spark ドライバーとエグゼキューターにそれぞれ 4 コアとメモリ 14 GB が割り当てられますが、メモリ集約型の処理では 4 vCPU / 30 GB のように調整できます。最大ワーカー数を設定することで、ジョブあたりのリソース消費量に上限を設けられます。コスト制御の要は、アプリケーションレベルの最大リソース設定です。maxCapacity で vCPU / メモリ / ディスクの上限を指定すると、すべてのジョブの合計リソースがこの上限を超えないよう制御されます。料金は、ワーカーが処理を実行できる状態になってから停止するまでに使った vCPU / メモリ / ストレージの合計に対してかかり、秒単位 (最低 1 分) で切り上げられます (2026 年 10 月時点の料金ページ)。ジョブの実行ログは既定で EMR が管理するストレージに最大 30 日保存され、S3 バケットや CloudWatch への出力も指定できます。Spark UI などのアプリケーション UI は、管理するストレージへの保存を有効にしている場合に使えます。

S3 データレイクとの統合パターン

EMR Serverless の構成例として、S3 をデータレイクとして Spark ジョブで ETL 処理を実行するパターンがあります。入力データは S3 上の Parquet、ORC、CSV、JSON ファイルで、Glue Data Catalog をメタストアとして使用します。Spark SQL で Glue Data Catalog のテーブルを直接参照でき、パーティションプルーニングやプレディケートプッシュダウンが自動的に適用されます。Apache Iceberg テーブルへの読み書きもサポートされており、ACID トランザクション、スキーマ進化、タイムトラベルクエリを活用したデータパイプラインを構築できます。Step Functions と組み合わせると、日次の ETL パイプラインをオーケストレーションできます。Step Functions のタスクステートから StartJobRun API を呼び出し、ジョブの完了を待機して次のステップに進む構成です。EventBridge Scheduler で日次トリガーを設定すれば、サーバーレスのサービスで定期バッチ処理パイプラインを組めます。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。

共有する