Amazon EMR Serverless のアイコン

Amazon EMR Serverless

クラスター管理不要で Spark や Hive のジョブをサーバーレスに実行するサービス

何ができるか

Amazon EMR Serverless は、Apache Spark や Hive のジョブをクラスターの管理なしに実行できるサーバーレスサービスです。ジョブを投入するだけでリソースが自動的にプロビジョニングされ、実行時間とリソース使用量に対してのみ課金されます。クラスターのサイジングやスケーリングの設定が不要です。

どのような場面で使うか

定期的な ETL バッチ処理、S3 データレイク上のアドホッククエリ、データパイプラインの一部としての Spark ジョブ実行など、クラスター管理の手間を省きたいビッグデータ処理に利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

タクシーに例えられます。EMR (クラスター版) が自家用車の購入・維持に相当するのに対し、EMR Serverless はタクシーを呼ぶだけで目的地まで連れて行ってくれます。車の管理は不要で、乗った分だけ料金を支払います。

EMR Serverless とは

この記事は約 2 分で読めます。 Amazon EMR Serverless は、ビッグデータ処理をサーバーレスで実行するサービスです。EMR on EC2 ではクラスターのインスタンスタイプやノード数を決める必要がありますが、EMR Serverless ではジョブを投入するだけでリソースが自動的に割り当てられます。ジョブ完了後はリソースが解放され、アイドル時のコストが発生しません。

アプリケーションとジョブラン

EMR Serverless ではまずアプリケーションを作成し、Spark または Hive のランタイムを選択します。アプリケーションに対してジョブランを投入すると、必要な vCPU とメモリが自動的にプロビジョニングされます。事前初期化ワーカーを設定すると、ワーカーが事前にプールされ、ジョブの起動時間を数秒に短縮できます。

はじめかた

EMR コンソールで「サーバーレスアプリケーションの作成」を選択し、ランタイム (Spark / Hive) を指定します。アプリケーションが作成されたら、S3 上のスクリプトとデータを指定してジョブランを投入します。Glue Data Catalog と統合すれば、テーブルメタデータを共有してクエリを実行できます。

Azure・オンプレミスとの比較

Azure の対応サービス Azure Synapse Analytics (Serverless Spark Pool)
オンプレミスでの対応手段 Hadoop / Spark クラスター

AWS の優位点

  • クラスターの構築・管理・チューニングが完全に不要で、ジョブを投入するだけで実行できる
  • ジョブの実行時間とリソース使用量のみの課金で、アイドル時のコストがゼロ
  • 事前初期化ワーカーでジョブの起動時間を数秒に短縮し、インタラクティブなクエリにも対応可能

注意点

  • ジョブの実行時間とリソース使用量に対する従量課金のため、短時間のバッチ処理ではコスト効率が高い
  • 長時間稼働するインタラクティブなワークロードでは、EMR on EC2 の方がコスト効率が良い場合がある

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。