どこもそれなりに苦労・工夫しているよなぁと、興味深く聞かせていただきました。
「グリーを支えるデータ分析基盤の過去と現在」
- 橋本 泰一 氏
- グリー
- 10年ほど東工大で助手・特任准教授した後、2012年にグリーにジョイン
過去の話(2011年)
- Webサーバからログをrsyncでストレージへ
- バッチ処理で集計してDBへ(MySQL)
- ストレージもDBもハードウェアはSolaris Sun Fire X4540
だんだん困ってきた
- データがほしい人が増えてきた
- サービスや人が増えてきた
- データ提供が正直しんどくなってきた
今の話: コンセプト
- Accessability
- だれでも自由に
- Scalability
- どれだけ貯めこんでも
グリーのデータ分析基盤
- ゲーム
- Treasure Data ベース
- ゲームへのアクセスログ
- Treasure Data ベース
- GREE Platform
- Hadoopベース
- ゲームからAPIへのログ
- ユーザ情報
- Hadoopベース
ゲームのデータ分析基盤
- 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
- 自社製
- Macaron
- その他
- Shell, Python, R, PHP, …
- thanks to Thrift
Macaron
- データをグラフ化してくれるツール
- RDB/Hiveに対応
- 過去に投げたクエリはキャッシュする機能
- 出力: 画像、HTML
Ruby Scripting in Hive Query Language
- HQLの中にRubyのコードを埋め込めるものを作った
- HQLの中でRubyの関数を定義
- HQL(SQL)で書きにくいクエリを処理できる
- https://github.com/gree/hive-ruby-scripting
データのインポート
- ログデータのインポート
- ハイブリッド: 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
- データ処理フレームワーク
- 機械学習の利用に最適化されていて、速いのが特徴