Skip to main content
Amebaサービスにおける
Hadoopおよび関連プロダクトの活用
- WebDB Forum 2011 -
株式会社サイバーエージェント
アメーバ事業本部
Ameba Technology Laboratory
福田 一郎
2
株式会社サイバーエージェント
名前 : 福田一郎 (フクダ イチロー)
所属 : 株式会社サイバーエージェント
アメーバ事業本部
Ameba Technology Laboratory(新卒4年目)
• Ameba Pigg運用,開発
• ログ解析基盤 「Patriot」設計,開発,運用
• Ameba Technology Laboratory 研究室長
【Twitter】 @toutou 【はてなID】 id:ICHIRO
自己紹介
過 去
現 在
アメーバサービス
4
株式会社サイバーエージェント
ブログ主な数値
【月間ページビュー】
289.0億 PV
【Ameba会員数】
1823万 ID
【アメーバピグユーザ数】
935万 ID
(2011年9月末時点)
5
株式会社サイバーエージェント
アメーバピグ
6
株式会社サイバーエージェント
ピグライフ
7
株式会社サイバーエージェント
モバイルゲーム
9月末時点:18タイトル
Ameba Technology Laboratory
9
株式会社サイバーエージェント
2011年4月 秋葉原に開設
メンバー:11名(10月末時点)
@秋葉原ダイビル8階
概 略
10
株式会社サイバーエージェント
ログ解析
基盤
インキュベーション
ラボラトリ 検索
2010年4月 2008年末 2010年2月
2011年4月
Ameba
Technology
Laboratory
大量データを集約的に扱う組織
設立の経緯
11
株式会社サイバーエージェント
推薦 フィルタリング
ログ解析
データマイニング検索
ブログ
ニュース profile
大規模
分散処理
(ログ解析基盤)
なう
pigg ピグライフ
モバイル
ゲーム
メッセージ
ぐるっぽブログ
ブログ アプリmkt
Ameba全般
領 域
アメーバ と Hadoop
13
株式会社サイバーエージェント
アメーバピグ
(HDFS)
アクセス解析(0.13.1 → 0.20.1)
pico
(Amazon EMR,
Pig)
Hadoop使用実績
ログ解析基盤 Patriot
15
株式会社サイバーエージェント
ログ解析基盤としての機能 解決策
ログファイルの集約 HDFS
ログデータの構造化 Hive
独自DSL
ログの集計 Map/Reduce
Hive
集計サマリの表示 WebUI(通称:CIC)
アドホック集計,解析 HUE
16
株式会社サイバーエージェント
NameNode SecondaryNN
NNバックアップ
JobTracker
23232323台台台台
DataNode,
TaskTracker
システム構成
10101010台台台台
DataNode,
TaskTracker
データセンタBデータセンタA
Batch
MySQLレプリ
HinemosWeb,API,Ganglia,
Nagios,Hudson,
Puppet
MySQL, HUE
Hadoopクラスタ
Amebaサービス
ログ転送
MySQLレプリ
ログ整形
Hiveインポート
Hiveクエリ
集計データ
ブラウザで
確認
Adhocクエリ
(HUE経由)
CDH3u0
Hive & HUE
18
株式会社サイバーエージェント
•Apacheプロジェクト
•Facebookが開発
•SQLライクな言語(HiveQL)
Hive
•Clouderaが開発
•Hadoop用Web UI
•Hiveクエリを投げられる
HUE
19
株式会社サイバーエージェント
Hive
Hive
Driver
(Compiler, Optimizer, Executor)
Thrift Server
Web
Interface
JDBC ODBC
Metastore
CLI
HiveQL
20
株式会社サイバーエージェント
HiveQL
CREATE TABLE pigg_login
( time STRING, ameba_id STRING, ip STRING)
partitioned by(dt STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘¥t’
STORED AS SEQUENCEFILE;
SELECT p.age, count(distinct l.ameba_id)
FROM pigg_login l
JOIN profile p on (l.ameba_id=p.ameba_id)
WHERE l.dt= ‘2011-11-04‘ GROUP BY p.age;
• SQLライクに記述できるので便利
• Map/Reduceを直接書いた場合と同等の実行速度
21
株式会社サイバーエージェント
HUE
22
株式会社サイバーエージェント
Patriot WebUI
Flume + HBaseを用いた
準リアルタイム集計システム
Stinger
24
株式会社サイバーエージェント
• 集計をほぼリアルタイムに行いたい
• サービス施策の効果をすぐに確認したい
• ログ収集を効率化したい
Flume
• オープンソースログ(イベント)収集システム
• Clouderaが開発
Agent
Agent
Agent
Agent
Collector
Collector
Master
HDFS
25
株式会社サイバーエージェント
Flume
• リアルタイムに近い形でHDFSにログ書き込みができる
• Logical Node
• 「Source」と「Sink」の組み合わせ
Agent
Tail
Source
SinkLogFile
Processor
Source Sink
Matcher
Collector
Source
HDFS
Sink HDFS
26
株式会社サイバーエージェント
HBase
• Google BigTableをモデルとした分散カラム指向データストア
• HDFSにランダムRead/Write機能を追加
• Facebook Messagesで大規模に利用されている
データモデル
• Table
• RowKey
• ColumnFamily
• Column
• Timestamp
SortedMap<RowKey, List<
SortedMap<Column, List<Value, Timestamp>>>>>
• Table
• RowKey順にソート
• Row
• カラム順にソート
• Column
• バージョン順にソート
27
株式会社サイバーエージェント
アーキテクチャ
Zookeeper
Client HMaster
Region
Server
Region
Server
Region
Server
Read/Write
Region割り当て
ヘルスチェック
データの場所を
登録
データの場所を
問い合わせ
28
株式会社サイバーエージェント
特徴
• 書き込みスループットが高い
• 大容量データを扱える
• Hadoop Map/Reduceをサポート
• 高可用性
• 強い一貫性
• カウンタ(incrementColumnValue,checkAndPut)
29
株式会社サイバーエージェント
Stinger システム構成
node + soket.io HBaseクラスタ
pollingpush
flume agent
log
flume collector
increment
flume master
websocket
• リアルタイム集計のデモアプリケーション
• ブログのIDごとのリアルタイムPV集計
• 閲覧者属性ごとのPV集計
HBaseを用いた
グラフ構造を扱うデータストア
Hornet
31
株式会社サイバーエージェント
これまで
• グラフ構造は基本的にMySQLを使って管理していた
• マスタの分散が難しい
• シャーディング管理が煩雑
※ グラフ構造データ
• ブログチェックリスト
• なうのフォロー、フォロワー
• ピグとも
• etc・・・
HBaseを使ってみるのはどうだろうか?
(検証中)
32
株式会社サイバーエージェント
目的
• 大規模なグラフデータに対して高速に追加・更新処理ができる
• シンプルなクエリを高速に(隣接ノードが取れれば良い)
• オンライン処理
データモデル
• プロパティグラフ
NameNameNameName FukudaFukudaFukudaFukuda
Age 28
1
NameNameNameName SuzukiSuzukiSuzukiSuzuki
Age 28
2
NameNameNameName YasudaYasudaYasudaYasuda
Age 26
3
datedatedatedate 2011/01/022011/01/022011/01/022011/01/02
Follow
Friend
Friend
33
株式会社サイバーエージェント
アーキテクチャ
HDFS
Client
Gateway
HBase
Gateway Gateway
Hornet
RPC
34
株式会社サイバーエージェント
RowKeyの設計
Row Key Column Key Value
“1,FOLLOW,OUTGOING” g:2 date=2011/1/12
g:3 date=2011/4/20
“2,FOLLOW,INCOMING” g:1 date=2011/1/12
“2,FOLLOW,OUTGOING” g:3 date=2011/2/9
“3,FOLLOW,INCOMING” g:1 date=2011/4/20
g:2 date=2011/2/9
1 2
3
datedatedatedate 2011/01/122011/01/122011/01/122011/01/12
Follow
Follow Follow
まとめ
36
株式会社サイバーエージェント
• 定型集計,解析
• 非定型集計,解析
• リアルタイム集計,解析
• オンライン処理向けデータストア
Hadoop関連プロダクト適用範囲の拡大
• Hive,HBase,Zookeeper
• Flume
• Flume NG:大きめの改修か?
• Hadoop0.23
• Map/Reduce以外のアルゴリズムサポート(BSP,MPIなど?)
• NameNode,JobTrackerの大幅な変更
• Hadoopディストリビューション:CDHなど
Hadoop関連プロダクトの充実
37
株式会社サイバーエージェント
• ご質問などあれば是非!
企業ブース
• ご相談下さい
• akb-lab@cyberagent.co.jp
• fukuda_ichiro@cyberagent.co.jp
研究向けデータのご提供
• 本日14時~
• 推薦まわりをメインテーマに
技術報告セッション
ありがとうございました