hbaseでグラフ構造を扱う(開発中)

27
HBaseでグラフ構造を扱う (開発中) 株式会社サイバーエージェント アメーバ事業本部 Ameba Technology Laboratory 鈴木 俊裕

Upload: toshihiro-suzuki

Post on 28-May-2015

6.997 views

Category:

Technology


3 download

DESCRIPTION

Hadoop

TRANSCRIPT

Page 1: HBaseでグラフ構造を扱う(開発中)

HBaseでグラフ構造を扱う(開発中)

株式会社サイバーエージェントアメーバ事業本部Ameba Technology Laboratory

鈴木 俊裕

Page 2: HBaseでグラフ構造を扱う(開発中)

自己紹介

• 鈴木 俊裕(すずき としひろ)

• 27歳

• 株式会社サイバーエージェントアメーバ事業本部 Ameba Technology Laboratory

(新卒入社4年目)

• アメーバのログ解析基盤をやっている

• 【Twitter】@brfrn169

Page 3: HBaseでグラフ構造を扱う(開発中)

今日話すこと

• HBaseでグラフ構造をどう扱うか

Page 4: HBaseでグラフ構造を扱う(開発中)

背景

• アメーバのソーシャルグラフ

ピグ

なう

グルっぽ

Page 5: HBaseでグラフ構造を扱う(開発中)

背景

• アメーバのソーシャルグラフ

- 基本的にはMySQLを使っている

➡ マスタの分散が難しい(単一障害点)

➡ シャーディングの管理がめんどくさい

Page 6: HBaseでグラフ構造を扱う(開発中)

背景

• アメーバのソーシャルグラフ

- 基本的にはMySQLを使っている

➡ マスタの分散が難しい(単一障害点)

➡ シャーディングの管理がめんどくさい

HBaseでやってみよう!

Page 7: HBaseでグラフ構造を扱う(開発中)

Goals

• 大規模なグラフデータに対して高速に追加・更新処理ができる

• シンプルなクエリを高速に(隣接ノードが取れれば良い)

• オンライン処理

• 運用コストの削減

- 自動的にシャーディング

- 簡単にスケールアウト

Page 8: HBaseでグラフ構造を扱う(開発中)

Non-Goals

• 複雑なクエリ(マルチホップ)

Page 9: HBaseでグラフ構造を扱う(開発中)

データモデル

• プロパティグラフ

1

follow

friends

friends

name Suzuki Toshihiro

age 27

name Yasuda Masahiro

age 26

name Fukuda Ichiro

age 28

2

3

date 2011/1/3

date 2011/4/12

date 2011/4/12

Page 10: HBaseでグラフ構造を扱う(開発中)

アーキテクチャ

• HBase + Gateway(Java)

Client

Gateway Gateway Gateway

RPC

HBase

HDFS

Page 11: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

• Row Key : [srcNodeId + type + direction]

• Column Family : “g”

• Column : destNodeId

• Value : Properties

Page 12: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

Page 13: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

FOLLOW

date 2011/1/12

Page 14: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

Page 15: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“2,FOLLOW,INCOMING” g:1 date=2011/1/12

Page 16: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

FOLLOW

date 2011/1/12

Page 17: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

FOLLOW

date 2011/1/12

FOLLOWdate 2011/2/9

Page 18: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“2,FOLLOW,INCOMING” g:1 date=2011/1/12

Page 19: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“2,FOLLOW,INCOMING” g:1 date=2011/1/12“2,FOLLOW,OUTGOING” g:3 date=2011/2/9“3,FOLLOW,INCOMING” g:2 date=2011/2/9

Page 20: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

FOLLOW

date 2011/1/12

FOLLOWdate 2011/2/9

Page 21: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計

1

2

3

FOLLOW

date 2011/1/12

FOLLOWdate 2011/2/9

FOLLOWdate 2011/4/20

Page 22: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“2,FOLLOW,INCOMING” g:1 date=2011/1/12“2,FOLLOW,OUTGOING” g:3 date=2011/2/9“3,FOLLOW,INCOMING” g:2 date=2011/2/9

Page 23: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“1,FOLLOW,OUTGOING”

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“3,FOLLOW,INCOMING”

g:2 date=2011/2/9

Page 24: HBaseでグラフ構造を扱う(開発中)

Row Keyの設計Row Key Column Key Value

“1,FOLLOW,OUTGOING” g:2 date=2011/1/12“1,FOLLOW,OUTGOING”

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“3,FOLLOW,INCOMING”

g:2 date=2011/2/9

結果のソートはどうする?アプリによって違う?

Page 25: HBaseでグラフ構造を扱う(開発中)

• Define Graph機能

- 予め、どのようなクエリを発行するかを定義

- この定義にしたがって、Row Keyを決める

Row Keyの設計

Page 26: HBaseでグラフ構造を扱う(開発中)

まとめ

• グラフ構造をオンラインで扱うDBをHBaseで開発中

• 今後、FB出来る内容があれば、FBしていく予定です

Page 27: HBaseでグラフ構造を扱う(開発中)

• ご清聴ありがとうございました。