(レポート) BDT208: Amazon EMRの技術紹介 #reinvent

2015.10.15

平田です。EMRについて興味があったので、re:Inventのセッションをまとめてみました。

このセッションの目的

BDT208 1

  • EMRに関するの技術の紹介
  • 基本的な思想
  • EMRの特徴
  • 2PB規模のオンプレミスのHadoopクラスタからAWSへの移行についての経験
  • Spark, Hadoopなどのフレームワークについての紹介はしない

Amazon EMRについて

BDT208 2

  • Managedな環境
  • MapReduce, Apache Spark, Prestoなどが利用できる
  • 数分でクラスタを構築可能
  • オープンソースのディストリビューションとMapRに対応
  • クラウドの拡張性を最大限に利用できる
  • セキュリティに関する機能も組み込まれている
  • 時間(hour)毎の課金と任意のタイミングでの保存
  • 自由度の高い拡張

つまり、簡単・セキュアかつ費用効果の高いデータ処理フレームワークを構築するAWSサービス

クラスタ構築に必要なステップ

  1. インスタンスの選択
  2. 利用するソフトウェアの選択
  3. アクセス方法の選択

1. EMRクラスタの構成例

BDT208 3

  • Master Node
  • 名前解決
  • リソース管理
  • Slave Node (3種類)
  • Core Node
  • 中間データの保存
  • Task Node
  • データ処理の実行
  • 最低限要求されるリソースはリザーブドインスタンスで
  • 一時的なリソース増強はスポットインスタンスで

2. インスタンスタイプの選択

  • Generalタイプ (m1, m3系)
  • バッチ処理
  • CPU タイプ (c3, cc1, cc2系)
  • 機械学習
  • Memory タイプ (m2, r3系)
  • インメモリ処理 (Spark, Presto)
  • Disk/IO タイプ (d2, i2)
  • 大容量HDFS

3. ソフトウェアの選択

  • 良く利用されるソフトウェアをまとめたQuick Bundleを提供
  • 個別にソフトウェアをインストールするカスタマイズもある
  • Hadoop系のソフトウェアが利用可能

アクセスセキュリティの設定

  • Role や Security Groupを指定する事で各ノードに制限を加える事ができる

EMRでのデータ処理

BDT208 4

  • EMRでは、様々なデータソースから処理を行うことができる
  • HDFS
  • EMRFS(S3)
  • Dynamo DB
  • Kinesis

オンプレミス環境の場合

BDT208 5

  • CPUとDiskは1セット
  • 計算量に応じて、必要となるDisk容量は増加する
  • 計算のピークに合わせて常に一定のリソースを確保しなければならない
  • 複数のソフトウェアを走らせる場合、リソースの奪い合いが起こる
  • CPUとDiskは1セットなので、一方のみを優先的に割り当てるということができない

BDT208 6

EMRの場合

EMRではこの問題をどう解決したか? -> EMRFS

BDT208 7

  • 計算資源(CPU)と記憶媒体(Storage)の分離
  • StorageにはS3を利用

BDT208 8

  • EMRFSの特徴
  • S3を記憶媒体として利用
  • S3から直接データをストリーム
  • HDFSは処理の中間で利用
  • 高いread/write性能とエラーハンドリングを実現
  • 読み取り一貫性

EMRのメリット1 : S3(Storage)との接続 / 切断

BDT208 9

  • EMRを停止してもS3上のデータは残り続ける
  • 自動停止などが可能に
  • EMRによる処理を中間としたデータパイプラインが簡単に作れる
  • 一時的な処理の際にのみEMRを利用

EMRのメリット2 : クラスタのリサイズ

BDT208 10

  • どうすればコストを抑えてクラスタを拡張できるか
  • Spot Instanceの利用
  • EMRでは、指定した価格・数量に応じて、自動的にSpot Instanceを購入する仕組みがある
  • Spot Instanceの価格設定を支援するツールも準備されている (The Spot Bid Advisor)
  • ただし、Spot Instanceは突然停止する場合がある。
  • Task Nodeとしての利用なら、停止の影響は少ない
  • 別ノードでジョブを再実行することでリカバリ可能
  • スポットインスタンスを有効に用いることで、処理時間の短縮と費用の削減を両立できる
  • 計算量に応じた柔軟なリソース割り当て

BDT208 11

EMRの特徴まとめ

BDT208 12

  • 高速なクラスタのプロビジョニング
  • Hadoop,Spark,Prestoなどのアプリケーションの利用
  • 標準的なOSSのパッケージング
  • 計算リソースとストレージの分離 / 個別のスケーリング
  • 要求に応じたクラスタのリサイズ
  • Spot Instanceを利用したコスト削減

おわりに

EMRの特徴や構成・機能の詳細について非常によくまとまっていて、勉強になりました。