AWS Elastic MapReduce公式ドキュメント導入部の要約

公式ドキュメントの導入部分の個人的な備忘録メモ。
これを読めば、Elastic MapReduceで何ができるか、内部がどうなっているかだいたい分かるかも。

公式ドキュメント
Amazon Elastic MapReduce

Elastic MapReduceとは

  • Amazon Web Serviceの1つ
  • Elastic MapReduceがAmazon EC2Amazon S3の間のデータのやりとり、Hadoopの最適化などを行ってくれる
    • ユーザはHadoopを使うためのハードウェアやネットワークの管理から解放される

Elastic MapReduce利用時の流れ

  1. S3に解析用のデータと、Hadoopで動かすデータ(MapperやReducer)をアップロード
  2. Elastic MapReduceにJob Flowを与えて起動させる
    1. Elastic MapReduceはHadoopクラスタと呼ばれるもの(実体はEC2の複数のインスタンス)を起動する
      1. 各ノード(EC2の個々のインスタンス)はMaster, Task, Coreグループに分けられる
    2. Bootstrapアクションを実行
      • ノードにソフトウェアをインストール
      • デフォルトのHadoop設定を変更
      • Hadoopデーモンを動かすJavaの設定変更、など
    3. Hadoopを起動
    4. S3からデータをロードしてJob Flowを実行する(MapReduce!!)
    5. Hadoop Clusterは結果をS3にアップロードする
  3. ユーザはS3から結果をダウンロードする

Elastic MapReduceにおけるMapReduceの流れ

  1. Elastic MapReduceは2つの権限を持ったインスタンスを起動する
    • 1つはMasterノード,1つはTaskノードとCoreノード
  2. 単一のクラスタで効率的に実行するには大きすぎるデータが与えられた場合、Hadoopはデータを複数に分割する
  3. HadoopはデータとMapReduceの実行ファイル(S3においてある)をCoreとTaskノードに配布する
    • Hadoopはハードウェアのエラーや、MasterノードとCoreノードとTaskノードの間のやりとりをうまいことする
    • なのでユーザは細かいことを意識しなくていいよ
  4. Mapperを使ってMap操作をする
  5. Reducerを使ってReduce操作をする
  6. 結果をS3におく

インスタンスのグループ

Hadoopクラスタは1つのMasterノードからなる1つのMasterグループと、1つ以上のCoreノードからなる1つのCoreグループと、複数のTaskノードからなる1つのTaskグループから構成される(Taskグループはオプション)。

Masterグループ
  • 実行ファイルやデータの配布、各ノードの状態の監視などを行う
Coreグループ
  • HDFSを含んでいるノードのこと
    • job flowが始まった後でノード数を増やせる(減らせない)
Taskグループ
  • HDFSを含んでいないノードのこと
    • ノードの数を増減できる

Job FlowとStep

  • 個々の操作はStepと呼ばれる
  • 一連のStepの集まりをJob Flowと言う
    • Elastic MapReduceはユーザが与えた複数のStepを順番に実行していく
Job Flowの一生
  1. STARTING
  2. BOOTSTRAPPING
  3. RUNNING
    • ここでStepが順次実行される
  4. (WAITING)
    • 設定されていなかったらスキップされる
    • WAITING中は新しいStepを追加できる
    • WAITING中に終了するとTERMINATEDにいく
  5. SHUTTING_DOWN
  6. COMPLETED, TERMINATED, FAILED
Stepの一生
  1. PENDING
  2. RUNNING
  3. COMPLETED, FAILED, CANCELLED
    • COMPLETED
      • 次のStepがRUNNINGになる
    • FAILEDやCANCELLED
      • 次のStepがCANCELLEDになる

Bootstrap Actions

  • Hadoopが始まる前の処理のことで、S3においておく
  • Elastic MapReduceがいくつか用意している
    • Configure Hadoop, Configure Daemons, Run-ifが提供されているから使ってよい
  • 自作ももちろんOK

Configurable Data Storage

  • Elastic MapReduceはHadoop Distributed Files System(HDFS)もサポートしている
  • HDFSの設定も変更可能
    • でも超巨大なデータを扱うような時以外はいじる必要がないように初期設定されている

Hadoopのロギング

  • Elastic MapReduce・Hadoopでの処理をデバッグするためにログを吐き出す機能がある

Hive

  • Hiveも使える
    • SQLみたいなHiveSQLでHadoopを操作できる
    • Hiveはもともとfacebookで作られた
    • 今はApacheプロジェクトに含まれている

ソースデータ

  • Elastic MapReduceはS3にあるデータに対する認証機能を持っている
    • デフォルトではS3にアップロードしたAWSアカウントの持ち主だけがアクセス可能
    • 他のユーザは特別にパーミッション設定されてる場合のみアクセス可能
  • S3へのアップロードはhttps
  • Elastic MapReduceはS3とEC2の間のデータのやりとりをセキュアなチャンネルを常に使っている
  • 安全性を高めるために事前に暗号化してからS3にアップロードしてもOK

Hadoopの機能のサポート

  • Elastic MapReduceはstreaming, Hive, Pig, Custom JAR, Cascadingによるjob flowをサポートしている
    • streamingは標準入力と標準出力を扱えるあらゆる言語で記述可能
    • HiveやPigはSQLに似たインタフェースを提供する(のでプログラミングできない人も大丈夫)
    • Custom JARはJavaによるMapReduceの機能を作ることができる
    • Cascadingは組み込みのMapReduceサポートで、複雑な分散したプロセスを作ることができるAPIのこと