第1回EMR勉強会に参加しました

2011.12.21

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

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

先日、第1回EMR勉強会に参加してきました。

■開催概要

■クラウド型Hadoop Service - Amazon Elastic MapReduce

クリエーションライン株式会社 李さん

  • クラウド型Hadoopサービス
    • オンデマンド
      • -ジョブフロータイプ、データ処理タイプ、クラスタ規模を指定してHadoop作成
    • プロビジョン
      • Hadoopクラスタ構成/ソフトウェアインストールが自動的に行われる
      • Amazon S3、RDS、SimpleDB
    • エフェメラル
      • -結果がS3に保存され、ジョブフローは削除される
      • ephemeral:はかない、短命の、一時的な
  • ジョブフロー
    • EMRのエージェント(処理の受付)
    • バッチジョブフロー(1回処理したら終了)
    • インタラクティブフロー(要求を待ち続ける)
  • ステップ
    • データ処理やソフトウェア構成などの単位
    • Hadoopジョブの実行
    • 定義順で逐次的な処理
  • Hadoopメソッド
    • EMRでも従来通りにそのまま使える
    • Streaming
    • Hive(SQLライク)
    • Pig(シェルスクリプトライク)
    • CustomJAR
    • Cascading
    • これらのライブラリを用いてアプリケーションを構築する
  • ツール、その他
  • 最適化
    • Bootstrapアクション
    • Hadoop環境構成のチューニング
    • Hive環境構成のチューニング
    • ジョブフローのリサイズ
    • EC2インスタンスのタイプおよび数の決定
  • Amazon EMRとは
    • 調達や運用の手間ゼロ
    • 運用管理のためのインターフェース
    • データ処理のためのフレームワーク
    • BigDataでもSmallDataでも何でもいい

※データ量はバイク便から貨物列車級まで対応可能!

■EMR公開事例のご紹介

Amazon Data Services Japan 大谷さん(@shot6

  • Foursquare
    • スマートフォンチェックインデータ
    • 機械学習、データ分析、トレンド分析、レポーティング
    • EMR平均40ノードクラスタを動的に起動
    • 地域の近似製で誰がチェックインしているかの分析
    • ログ収集:Apache Flume
    • ログ解析:Amazon S3
    • ログ解析:Amazon EMR
  • Razorfish
  • So-net
    • 広告配信ログの分析
  • Etsy
    • 年商$30M規模の巨大小売りサイト。Amazon.comのライバル
  • Yelp
    • 地理情報データ

※大谷さんは直前までAWSオンラインセミナーをやられていたので、少し会場到着が遅れました。私はAWSオンラインセミナーのQAタイム開始直後に会社を出て、会場にぎりぎり間に合いました(汗)

■クックパッドでのEMR利用事例

クックパッド 佐々木さん(@sasata299

[slideshare id=10600897&doc=111215emr-111215052342-phpapp01]

  • Hadoop利用初期
    • 「たべみる」の1年分の検索データを分析
    • 2009/9頃。MySQLでがんばろう。7000時間くらいかかるかもorz
    • 1年のデータを1年分析だとダメだ
    • EC2でHadoop、ClouderaのCDH1、RubyでHadoop Streamingで処理を記述
    • 7000時間⇒30時間
  • なぜEMRを使うようになったか
    • Hadoopクラスタの起動が不安定
    • Hadoopのバグにあたる
    • SocketTimeoutExceptionが頻発
    • CDH2にバージョン上げれば直る
    • EMRが登場し始めた
    • クラウデラはEC2とS3代だけでOK。なのでEMRの方が少し高い(1年前情報)
    • パッチとかのことを考えるとEMRだよね(開発者の大きな負担の解消)
  • Hadoop利用後期
  • こんな処理に使っています
    • ※MySQLでは扱いにくい処理(Group by系)
    • MySQLで出来る事はMySQLで、MySQLで出来ない事はEMRで
  • 最近のEMR事情
    • 各エンジニアがそれぞれ利用
    • Rubyで処理が書けるので、誰でも使える
    • 特別な事はしなくて普通に使っている
    • 利用する際の敷居が低いのがいいですね
  • 工夫している点
    • 参照量を減らす
    • 5万件のデータがあると。まずは何らかのルールでデータをグループ(1グループ50件)に分割。
    • そしてグループ内を処理。最後に集計。
  • 非エンジニアでも
    • 非エンジニアでも触れられるようにIFを用意
    • 条件(期間など)を入力するとExcelが帰ってくるようなアプリを作成

■アクセスログ解析システム構築事例 インフラ設計編/アプリ設計編

ヴェルク 津久井さん(@quaterkota)、石田さん(@o918

[slideshare id=10611656&doc=201112151emr-111216030335-phpapp02]

  • インフラ設計編
    • ・利用時のみ起動するインスタンス群⇒運用コストを安価に
  • アプリ設計編
    • Hive
      • MapReduceのラッパー
      • SQL(HiveQL)で操作ができる
      • @ITにHiveの記事有り。またはオフィシャルサイト
    • データ作成
      • RDBのようにTableを作成し、Insertでデータを挿入
      • EMRが常時起動している場合はOK。そうでない場合は使えない
    • データ抽出
      • CREATE文でTableの作成とS3上のデータをロード
      • (HDFSにデータがロードされた状態)
      • Hadoop Hive環境+S3 DATA
      • SELECTの出力先をS3に指定
      • EMR起動時にHiveQLを指定
    • ■その他
      • EMRエラーハンドリング
      • EMR完了確認
      • EMR起動制限

■ソーシャルゲームのEMR利用事例~ユーザーに愛されるカスタマーサポートを目指して~

gumi 本間さん(@CkReal

[slideshare id=10609485&doc=20111215emr1-111215203121-phpapp01]

  • EMR利用に至る経緯:gumiの課題
    • カスタマーサポートの対応負荷
    • エンジニアが調査に時間を取れない
    • NFSサーバーが単一障害点
  • EMRを使ってみて
    • S3上のファイルをいつでも利用できる
    • 必要な時だけEMRクラスタを使える
    • 変化する要件にも対応しやすい
    • たまにジョブが失敗する
    • チューニング方法模索中

■最後に

今回はHadoopやEMR未体験状態ですが、来年からEMR使ってみたいという事で参加しました。 HadoopやEMRはまだ若い技術なのでツールなどが成熟していない印象でしたが、データ分析分野では今後必須となる技術なので、今後積極的にウォッチ、活用していきたいと思います。

おしまい

@Cronoloves