Amazon EMR
Apache Spark、Hive、Presto などのビッグデータフレームワークをマネージドに実行するサービス
何ができるか
Amazon EMR (Elastic MapReduce) は、Apache Spark、Hive、Presto、HBase などのオープンソースビッグデータフレームワークをマネージドクラスターで実行するサービスです。ペタバイト規模のデータ処理を、EC2 インスタンスのクラスターを自動でプロビジョニングして実行します。クラスターのセットアップ、設定、チューニングを AWS が管理します。
どのような場面で使うか
大規模なログ分析、ETL (データの抽出・変換・ロード) 処理、機械学習のデータ前処理、データレイク上のインタラクティブクエリ、ゲノム解析などのビッグデータワークロードに利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
大規模な工場の生産ラインに例えられます。大量の原材料 (データ) を処理するために、必要な台数の機械 (ノード) を自動で並べて稼働させます。処理が終わったら機械を片付けるので、使った分だけのコストで済みます。
EMR とは
Amazon EMR は、ビッグデータ処理のためのマネージドクラスターサービスです。Apache Spark や Hive などのフレームワークを自分でインストール・設定する手間なく、数分でクラスターを起動してジョブを実行できます。S3 をデータレイクとして利用し、コンピュートとストレージを分離するアーキテクチャが一般的です。
クラスター構成
EMR クラスターはマスターノード、コアノード、タスクノードの 3 種類で構成されます。マスターノードはクラスターの管理とジョブの調整を行います。コアノードはデータの格納と処理を担当します。タスクノードは処理のみを行い、スポットインスタンスを活用してコストを削減できます。Auto Scaling でノード数を負荷に応じて自動調整することも可能です。
EMR on EKS と EMR Serverless
EMR は EC2 上のクラスターに加え、EKS 上で Spark ジョブを実行する EMR on EKS、クラスター管理が完全に不要な EMR Serverless も提供しています。EMR on EKS は既存の Kubernetes 環境にビッグデータ処理を統合したい場合に適しています。EMR Serverless はジョブを投入するだけでリソースが自動プロビジョニングされ、最もシンプルに利用できます。
はじめかた
EMR コンソールで「クラスターの作成」を選択し、アプリケーション (Spark、Hive など)、インスタンスタイプ、ノード数を指定します。S3 上のデータに対して Spark ジョブを投入し、結果を S3 に出力するのが基本的な流れです。処理完了後にクラスターを自動終了する設定にすれば、不要なコストを防げます。
注意点
- クラスターを起動したまま放置するとインスタンス料金が発生し続けるため、ジョブ完了後の自動終了設定を推奨
- タスクノードにスポットインスタンスを使うとコストを大幅に削減できるが、中断に備えたジョブ設計が必要
- シンプルなユースケースでは EMR Serverless の方がクラスター管理不要でコスト効率が良い場合がある
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。