ほぼ週刊AWSマイスターシリーズ第10回 – EMR編に参加しました

AWS

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。くろの(福田)です。

先日AWSのオンラインセミナーシリーズである「ほぼ週刊AWSマイスターシリーズ」が開催されました。第10回目は大谷さんによるAmazon Elastic Map Reduceでした。

■開催概要

  • 日時:2011年11月30日(水)17時~18時
  • 場所:オンラインセミナー
  • 講師:AWS大谷さん


AWSマイスターシリーズはほぼ毎週AWSの中の人がAWSの各サービスに関して詳細に解説をしてくれるとても^10ありがたいオンラインセミナーです。

クラスメソッドでは多くの社員がセミナーに参加しています。

■セミナー開始に先立って

今週のプレゼントはウィンドブレーカー。豆情報としては絶賛AWS社員募集中

■ネタ

Hadoopはイケテナイヨ。理由ハ下記画像ガ○○ダカラダヨ

 

(ネタ終わり)

■Apache Hadoop

  • Big Dataの取り扱い
  • Hadoopはオープンソース製品。下記2つで構成される
    • HDFS(Hadoop Distributed File System)
    • MapReduce
  • メリット
    • スケーラブル
    • 誰でも入手可能
    • 柔軟性

■Hadoopの処理の流れ

  • 大元の大量データがある。このデータから平均値、最大値、分析結果、計算結果といった「人間が理解しやすい(元データに比べると非常に小量な)数値」を取得したい
  • データが非常に多いので、いくつかのグループに分割する(チャンクに分解)
  • Mapする:特定のルールで各グループを細かく細分化する
  • Shuffleする:グループ(チャンク)ごとのマッピング結果で同じものを集める
  • Reduceする:あつまったマッピング結果を集計してデータ量を圧縮(Reduce=縮小)する。
  • 「人間が理解しやすい」ように圧縮された少量のデータが出力される

※セミナーではフルーツジュースの例が紹介されていました。

 (参考)いまさら聞けないHadoopとテキストマイニング入門 - @IT
http://www.atmarkit.co.jp/fjava/rensai4/hadoop_tm01/01.html

■RDBMSとHadoopの違い

RDBMSとHadoopの違い
RDBMS Hadoop
事前定義したスキーマ スキーマなし
1台で稼働する事が前提 分散・強調して動くことが前提
SQLによるアクセス SQLでない複数言語サポート
リニアにスケールしない リニアにスケールする
リアルタイム処理 バッチ処理
小規模データ 大規模データ
構造化データ 半構造化データ

※基本的にRDBMSでもデータ分析は賄える。
※HadoopでBig Dataではないデータの分析も行えます。もちろんBig Dataの分析は得意

■Hadoopの課題 

  • Hadoopのスケーラビリティを活かすには大量のサーバーが必要
  • 大量にサーバーを購入してしまうとノードの追加縮小が自由にはできない
  • データをHDFSだけに保存するのはリスク

■Amazon Elastic MapReduce

  • Hadoopをいつでもオンデマンドで利用可能にしたサービス
  • 開発者はデータの分析・解析アプリケーションに集中
  • AWSサービスとの強力なインテグレーション
  • Big Data処理のための煩雑なタスクが不要
  • 解析をトライアンドエラーできる

※Elasticity、AWS SDK、Amazon S3連携がポイント!

■Amazon EMR全体アーキテクチャ

  • データソースから入力データををAmazon S3に保存
    • 消失の恐れが無い(SLA=99.999999999%)
  • Amazon EMRを起動する
  • EMR Hadoop Clusterがオンデマンドで生成され、分析が行われる
    • Masterインスタンスグループ
    • Coreインスタンスグループ
    • Taskインスタンスグループ
  • 出力結果がAmazon S3に保存される。メタデータはAmazon SimpleDBに保存される

■Amazon EMRコンポーネント

  • インスタンスグループ
    • Master
    • Core
    • Task
  • Master:ジョブ全体を管理。1台のみ起動
  • Core Node:MapReduceを実行。HDFSのDataNodeを持つ。複数台起動。TaskTrackerも搭載
  • Task Node:オプション。MapReduceのみを実行

■Amazon EMRとAWSプラットフォーム

  • Amazon EC2
  • Amazon S3:Amazon EMRのデータおよびアプリケーションのアップロード先
  • SimpleDB:Amazon EMRのジョブ状態情報を保持
  • IAM:Amazon EMRのアクションを制限

■Amazon EMRでの処理の流れ

  • Amazon S3のバケットにデータをアップロードする
  • Amazon EMR上にジョブフローを生成する
    • AWS Management Console
    • コマンドライン
    • REST API
  • Amazon S3のバケットから結果を取得する

※ジョブフロー:データ分析処理。Amazon EMRの場合はこの処理能力をスケールアウト/インする事が可能

■Amazon EMRでのアプリケーション開発

  • Hadoop Streaming
    • Perl、PHPなどのstdin/stdoutで連携
  • Hive
    • SQLライクにクエリが記述可能
    • アドホックな(特定目的の)クエリに最適
  • MapReduceアプリケーション
    • Javaで記述する
    • 自由度は高いが、大変

HiveのWikiのGettingStartedのクエリサンプル

hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';

■EMR機能:稼働中ジョブフローの拡張

■EMR機能:稼働中ジョブフローの拡張/伸縮

■Amazon EMRが有効な領域

  • データマイニング/BI
  • データウェアハウスアプリケーション
  • 大量ファイル処理・変換
  • バイオインフォマティクス(遺伝子解析)
  • 金融シミュレーション(モンテカルロ計算等)
  • Webインデックス構築

■大規模データ処理=Elastic Batch Processing

  • Hadoopデファクト分散処理フレームワーク
  • Amazon EMR
  • Amazon EC2 Cluster Compute HPCによるスーパーコンピュータクラスの高速処理
  • Amazon EC2スポットインスタンスによるコスト削減
  • 状況に応じてAWSリソースを拡張/縮減

おしまい

@Cronoloves