Amazon EMR によるビッグデータ処理 - Spark と Hive の実行環境
EMR クラスターの構成、Spark ジョブと Hive クエリの実行、EMR Serverless との使い分けを解説します。
EMR クラスターの構成
EMR クラスターはマスターノード (クラスター管理と YARN リソースマネージャー)、コアノード (HDFS データ保持と計算処理)、タスクノード (計算処理のみ) で構成されます。コアノードは HDFS のデータを保持するため縮小時にデータ損失のリスクがありますが、タスクノードはデータを持たないため自由にスケールできます。S3 をプライマリストレージとして使用する場合、コアノードの HDFS は中間データの一時保存に限定し、タスクノードのスポットインスタンス活用でコストを削減します。EC2 インスタンスフリートを使うと、複数のインスタンスタイプを指定してスポットの可用性を高められます。
Spark と Hive の実行
Spark on EMR では spark-submit コマンドまたは EMR Steps API でジョブを投入します。EMRFS は S3 への読み書きを最適化するファイルシステムで、S3 の結果整合性を回避する一貫性ビューを提供します。Spark の動的リソース割り当て (Dynamic Resource Allocation) を有効にすると、ジョブの負荷に応じてエグゼキューターの数を自動調整します。Hive on EMR では Glue データカタログを外部メタストアとして設定でき、テーブル定義を Athena や Redshift Spectrum と共有できます。EMR Serverless はクラスターのプロビジョニングが不要で、アプリケーション単位でリソースを指定してジョブを実行します。
まとめ
EMR は Spark や Hive などのビッグデータフレームワークのマネージド実行環境を提供します。S3 をプライマリストレージとしたアーキテクチャ、マネージドスケーリングによるコスト最適化、EMR Serverless によるクラスター管理の省力化が設計のポイントです。
AWS の優位点
- マスターノード、コアノード、タスクノードの 3 種類のノードタイプでクラスターを構成し、コアノードで HDFS データを保持しつつタスクノードで計算リソースをスケールできる
- Spark on EMR では S3 を外部ストレージとして使用し、EMRFS で S3 への読み書きを最適化する
- Hive メタストアを Glue データカタログと統合し、Athena や Redshift Spectrum とテーブル定義を共有できる
- マネージドスケーリングでワークロードに応じてクラスターのノード数を自動調整し、コストを最適化できる
- EMR Serverless ではクラスター管理が不要で、ジョブ単位のリソース割り当てにより小規模なバッチ処理のコスト効率が向上する
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。