Amazon EMR (Elastic MapReduce)
1. サービス概要¶
Amazon EMR (Elastic MapReduce)は、ビッグデータ処理および分析を AWS のマネージドクラスター環境で実行できるサービスである。
主に
- Hadoop
- Spark
- Hive
- Presto
- HBase
などのオープンソースフレームワークを簡単にデプロイ・運用でき、大規模データの分散処理を低コストでスケーラブルに行える。
ユースケースとしては、
- ログ解析
- ETL パイプラインの構築
- 機械学習の前処理
- ビジネスインテリジェンスの基盤
などが挙げられる。
大容量のデータを高速に処理しつつ、可変的なクラスターサイズやスポットインスタンスの活用でコスト最適化が可能である。
2. 主な特徴と機能¶
2.1 マネージド Hadoop/Spark クラスタ¶
EMR は EC2 インスタンス上に Hadoop エコシステム(Hadoop、Hive、Spark など)を自動的にインストール・設定し、クラスター管理を AWS が代行する。
クラスターのライフサイクルやソフトウェアアップデート、障害回復などを簡単に行えるため、データ処理に集中できる。
2.2 多様な解析エンジン・プラットフォーム対応¶
Hadoop MapReduce や Apache Spark をはじめ、Hive、Pig、Presto、Hue など、複数のビッグデータフレームワークをサポート。
EMR Notebooks を使えば Jupyter ベースの対話的分析環境も提供され、スクリプト開発や可視化が容易である。
2.3 柔軟なスケーリングとコスト最適化¶
クラスターのノード数やインスタンスタイプを実行途中でも変更可能で、オンデマンドインスタンスだけでなくスポットインスタンスやリザーブドインスタンスを併用し、コストを大幅に抑えることができる。
Auto Scaling を設定すると、ジョブの負荷に応じてノードを自動増減させることも可能である。
2.4 多様なストレージ連携 (S3、HDFS、EBS など)¶
EMR クラスターではデフォルトで HDFS が利用できますが、ビッグデータ処理においては Amazon S3 を主なデータレイクとして扱うケースが多い。
EMRFS を通じて S3 と連携し、処理のための一時領域に EBS を使うなど、ニーズに合わせた構成を柔軟に組める。
2.5 セキュリティと認証¶
KMS や Kerberos などによる暗号化、IAM ポリシーによるクラスター操作権限管理、VPC 内のプライベート接続など、セキュアなビッグデータ基盤を構築可能である。
Lake Formation などと連携することで細粒度のアクセス制御も実現できる。
3. アーキテクチャおよび技術要素¶
- EMR クラスターを起動し、マスターノード・コアノード・タスクノードなどの構成を設定
- EC2 インスタンス上に Hadoop/Spark/Hive などがインストールされ、クラスターネットワークが構築
- 入力データを S3 などに配置し、Hive や Spark のジョブを実行(EMRFS が S3 とのやりとりを担当)
- 結果データを S3 などに出力し、必要に応じて Redshift や Elasticsearch、QuickSight などで分析・可視化
- ジョブ完了後、クラスターを終了させることでコストを削減。長時間稼働の常時クラスターも構成可能
クラウドならではの弾力的なスケーリングが最大の強み。
ジョブの需要に応じてリソースを拡張・縮小し、大規模データも効率的に処理できる。
4. セキュリティと認証・認可¶
EMR のセキュリティ設計で重要な点は次の通りである:
- VPC 内配置: プライベートサブネットでクラスターを起動し、インターネットからのアクセスを限定
- IAM ロール: EMR/EC2/Auto Scaling などのサービスロールを適切に設定し、最小権限を徹底
- データ暗号化: S3 上のデータやクラスターデータを KMS キーで暗号化、HDFS 暗号化も可能
- Kerberos 認証: Hadoop エコシステム向けのユーザー認証を強化するため Kerberos を導入可
5. 料金形態¶
Amazon EMR の費用は以下に基づく:
- EC2 インスタンス料金: クラスターに使用した EC2 のタイプ・稼働時間に従量課金
- EMR 管理料金: インスタンスごとに 1 時間あたりの追加コスト(数セント程度)
- オプション: スポットインスタンスを活用して大幅にコストを下げられる
さらに、S3 や EBS などのデータストレージ料金、AWS Glue Data Catalog など周辺サービスのコストも考慮する。
6. よくあるアーキテクチャ・設計パターン¶
代表的な EMR 導入パターンとしては以下がある:
- オンデマンド ETL ジョブ: 一時クラスターを起動して Spark や Hive でバッチ処理を行い、完了後に終了させる
- 常時クラスター: 日常的にログ解析やインタラクティブクエリを行うため、EMR クラスターを常時起動
- Data Lake 連携: S3 をデータレイクとし、EMR で処理、処理結果を Redshift/Athena/QuickSight で分析
- 大規模機械学習基盤: Spark MLlib で大規模データをトレーニングし、モデルを SageMaker に連携
7. 設定・デプロイ手順(ハンズオン例)¶
- AWS コンソールで「Amazon EMR」を検索し、「Create cluster」をクリック
- クラスター名やリリースバージョン(Hadoop/Spark/Hive などのバージョン)を選択
- インスタンスタイプと台数を選び(マスターノード 1 台、コアノード 2 台など)、オプションで Auto Scaling を設定
- ログ保存先の S3 バケットを指定し、アプリケーション(Spark, Hive, Hue など)のインストールをチェック
- クラスターを作成すると EC2 インスタンスが自動起動し、準備が整い次第「Waiting」や「Running」状態になる
- S3 上のデータに対する Hive クエリや Spark ジョブを実行し、処理結果を検証
8. 試験で問われやすいポイント¶
8.1 Hadoop/Spark エコシステムの理解¶
- MapReduce vs Spark: 汎用ジョブ vs インメモリ処理で高速化
- Hive: SQL ライクに Hadoop データを処理、ETL やアドホッククエリ向け
- Presto: 分散クエリエンジン、高速な SQL クエリを実行可能
8.2 ストレージ戦略 (S3 vs HDFS)¶
- S3: コスト効率高・容量無制限・堅牢。ETL 後やアーカイブ先としても利用
- HDFS: クラスター内の高速アクセス用。クラスター終了時にはデータが失われる点に注意
8.3 コスト最適化とスポットインスタンス¶
- スポットインスタンス: 中断リスクありだが大幅割引
- オンデマンド+スポットの混在: コアノードを安定のオンデマンド、タスクノードをスポットでコスト削減
- Auto Scaling: ジョブの負荷状況に応じてノード数を増減
8.4 セキュリティ設計¶
- IAM ロール: EMR が S3 にアクセスできる権限を付与
- VPC プライベートサブネット: セキュリティを高め、必要時のみ NAT ゲートウェイ経由でインターネットアクセス
- 暗号化: At-rest / In-transit 暗号化、Kerberos でクラスター内の通信保護
8.5 ジョブ管理とクラスターモード¶
- 長期常時稼働: インタラクティブ分析や日常的 ETL に向く
- 短期オンデマンド: バッチ完了後クラスターを終了し、コスト削減
- EMR on EKS (コンテナ化): EKS 上で Spark ジョブを実行する新しい形態も注目
8.6 試験で頻出となる具体的な問われ方と答え¶
- Q: EMR で S3 をメインストレージにする利点は?
- A: ストレージ容量を気にせず、ジョブ完了後にクラスターを削除可能。データを常に安全かつ低コストで保管できる。
- Q: スポットインスタンスを使うときの注意点は?
- A: 入札価格を下回るとインスタンスが中断されるリスクあり。重要なコアノードには向かない。
- Q: HDFS と EMRFS の違いは?
- A: HDFS はクラスター内部ストレージ、EMRFS は S3 を透過的に扱うためのファイルシステムレイヤー。
- Q: ジョブ終了後にデータを保持したい場合の対応は?
- A: 結果や中間データを S3 等に保存し、クラスターを削除してコスト削減可能。
- Q: EMR におけるクラスターノードの役割は?
- A: マスターノード(クラスター管理)、コアノード(HDFS+タスク)、タスクノード(タスク専用)。