デブサミ2014「グリーを支えるデータ分析基盤の過去と現在」講演メモ #devsumi

どこもそれなりに苦労・工夫しているよなぁと、興味深く聞かせていただきました。

「グリーを支えるデータ分析基盤の過去と現在」

  • 橋本 泰一 氏
  • グリー
  • 10年ほど東工大で助手・特任准教授した後、2012年にグリーにジョイン

過去の話(2011年)

  • Webサーバからログをrsyncでストレージへ
  • バッチ処理で集計してDBへ(MySQL)
  • ストレージもDBもハードウェアはSolaris Sun Fire X4540

だんだん困ってきた

  • データがほしい人が増えてきた
    • サービスや人が増えてきた
  • データ提供が正直しんどくなってきた

今の話: コンセプト

  • Accessability
    • だれでも自由に
  • Scalability
    • どれだけ貯めこんでも

グリーのデータ分析基盤

  • ゲーム
    • Treasure Data ベース
      • ゲームへのアクセスログ
  • GREE Platform
    • Hadoopベース
      • ゲームからAPIへのログ
      • ユーザ情報

ゲームのデータ分析基盤

  • Treasure Dataを採用
    • Hadoopクラスタの構築が不要ですぐに利用可能
    • ログのコレクトからストアまでワンストップで提供
    • スキーマレスで自由度の高いログフォーマット
    • データ・ウェアハウスの運用コスト低減
    • BIツールとの容易なインテグレーション

基本的な構成

タイトルごとに、、、
Web Server -> LOg Aggeregator Server (2台) -> Treasure Data

規模

  • 約20ゲームタイトル
  • Webサーバ2000台
  • log agg 40台以上
  • 送信データ量 1TB/月

データを使って何をやるか

  • ログデータをゲーム改善のアクションにつなげる
    • アクセス遷移分析
    • Webサイト分析では一般的な手法をソーシャルゲームに導入
  • ジョブ管理をしっかりする
    • 集計状況をモニタリングするジョブ管理ツール

アクセス遷移分析

  • ページ遷移
  • 離脱
  • クリック

離脱分析

  • ページ遷移+ユーザセグメント => 離脱原因を探る

クリック分析

  • データソースは、アクセス遷移分析結果
  • Chrome Extensionを利用して、実際の画面にオーバレイ表示
  • クリックログをJavaScriptでサーバ送信
  • お知らせやランキングの効果などで活用

ジョブ管理ツール

データを社内に解放したところ、非効率なジョブが大量に投げ込まれる。

  • ジョブのモニタリングと管理が重要
    • Treasure DataのAPIを使ってモニタリング
    • ジョブを可視化
    • ジョブ送信元の特定
      • クエリ実行の際に送信者を自動付与
    • スロークエリの可視化と特定

GREE Platformのデータ分析基盤

Hadoopをベースにして自作している。

  • source
    • Webサーバ - Fluentd
    • MySQL - db-express
    • Storage
  • Analysis Data Hub
    • HDFS
    • MapReduce
    • Hive
    • Presto
    • Macaron
      • 自社製
  • HBase

主な構成

  • JDK7 + CDH4 + Apache Hive (v0.12+α)
    • Hive Server2
    • 追加パッチ
      • Hive 1511, etc...
    • 独自拡張
      • 社内認証システムとの連携
      • auto-load extra UDFs

規模

  • 5000ジョブ/日
  • 60TB
    • 数ヶ月分のデータ、圧縮した状態、レプリカは除く
  • 今は120〜130ユーザ
    • ほとんど非エンジニア

データへのアクセス方法

  • 直接アクセス
    • SQuirreLSQL
    • JDBC, ODBC接続
  • グラフ化
    • Macaron
      • 自社製
  • その他
    • Shell, Python, R, PHP, …
    • thanks to Thrift

Macaron

  • データをグラフ化してくれるツール
  • RDB/Hiveに対応
  • 過去に投げたクエリはキャッシュする機能
  • 出力: 画像、HTML

Ruby Scripting in Hive Query Language

データのインポート

  • ログデータのインポート
    • ハイブリッド: bulk copy + streaming log events
    • Fluentd & WebHDFS (まだ不安定)
  • MySQLからのインポート: db-express
    • Sqoopのラッパー
    • Cooperation w/ in-house DSN catalog
    • Parallel import Shareded Databases / Tables
  • 手動インポート
    • ブラウザからアップロード

近い未来の話:

  • コンセプト
    • Speedy
    • Intelligently
  • PrestoとSpark(YARN)に注目

YARN

  • リソース管理をやりやすくする仕組み

Presto

  • OSSな分散SQLエンジン
    • Facebookが開発
    • HIveに置き換わるもので、Hiveより速い

Spark

  • データ処理フレームワーク
    • 機械学習の利用に最適化されていて、速いのが特徴