52
資料の前に ソースコードはこちらhttp://code.google.com/p/fujene/ 1 2011530日月曜日

P2p search engine

Embed Size (px)

Citation preview

Page 1: P2p search engine

資料の前に•↓ソースコードはこちら↓•http://code.google.com/p/fujene/

1

2011年5月30日月曜日

Page 2: P2p search engine

P2P distributed-search engineYusuke FUJISAKA

2011年5月30日月曜日

Page 3: P2p search engine

検索システム•[ここでは]大量の文章から共通の言葉

(→クエリ)を探し出すシステム

•「できるだけたくさん」の中から「できるだけ早く」みつけだす

3

2011年5月30日月曜日

Page 4: P2p search engine

検索システムを作る•データ構造•インデックス・検索のしかた•スケールアウト方法•バックアップ•etc...

4

2011年5月30日月曜日

Page 5: P2p search engine

必要なこと?1.GB(~TB)オーダーのデータを保持する2.高負荷に耐える3.データが絶対に消えないこと4.実用的な速度

5

2011年5月30日月曜日

Page 6: P2p search engine

既存の検索システム•Namazu•Senna•Lucene•Solr•Hyper Estraier• ...

6

2011年5月30日月曜日

Page 7: P2p search engine

いままでの課題点•クリティカルポイント

•管理ノードが死んだら…?

•インデックス作成までのタイムラグ•リアルタイム検索エンジンもあるけど

7

2011年5月30日月曜日

Page 8: P2p search engine

Fujene(仮称)•特徴:

•マスター・スレーブが存在しない• P2Pの考えを用いたノード間連携

•リアルタイムインデックス機能•インデックス構造を定義可能•自己最適化

8

2011年5月30日月曜日

Page 9: P2p search engine

新しい名前?•考えてみた →FARE system

• Fast    →高速(・リアルタイム)

• Autonomous →自律

• Retrieval  →検索

• Engine   →エンジン

• system 

9

2011年5月30日月曜日

Page 10: P2p search engine

動作の流れ順に•起動時•レプリケーション•インデックス•検索•終了時•強制終了時

10

2011年5月30日月曜日

Page 11: P2p search engine

起動時•単独動作⇔協調動作をシームレスに行う•ワンタッチでノード追加!

11

2011年5月30日月曜日

Page 12: P2p search engine

起動時•設定ファイルにインデックス構造ほかを書いて起動

Content = TitleContent = BodyAppendix = IDAppendix = URL

Fujene --primary SettingFile

2011年5月30日月曜日

Page 13: P2p search engine

ノード追加•起動しているノードのIPを指定するだけ

•設定とデータがコピーされる

10.0.1.5

Fujene --secondary 10.0.1.52011年5月30日月曜日

Page 14: P2p search engine

起動の流れExisting node

New node ノードリスト取得ノード登録要請

レプリ範囲計算

インデックスコピーインデックス・検索開始

2011年5月30日月曜日

Page 15: P2p search engine

起動

AF

B

E

D

C

2011年5月30日月曜日

Page 16: P2p search engine

起動

AF

B

E

D

C必要なデータ範囲

2011年5月30日月曜日

Page 17: P2p search engine

起動

AF

B

E

D

C必要なデータ範囲

コピー

2011年5月30日月曜日

Page 18: P2p search engine

Replicate chain•Chord chain[1]を応用:

•各ノードがハッシュ値をもつ• Consistent hash[2]の要領でレプリケート

•冗長化でデータの一貫性を保つ

2011年5月30日月曜日

Page 19: P2p search engine

Chord chain

AF

B

C

E

D2011年5月30日月曜日

Page 20: P2p search engine

Chord chain

AF

B

C

E

D

Hash: 0xEF459AB...

2011年5月30日月曜日

Page 21: P2p search engine

Topic: 仮想ノード•1台にたくさんハッシュを割り振る

•物理ノード1台あたりの請負範囲を平準化する

2011年5月30日月曜日

Page 22: P2p search engine

仮想ノードなしの例:

2

3

1Node 1: 56%

Node 3: 24%

Node 2: 20%

2011年5月30日月曜日

Page 23: P2p search engine

仮想ノードなしの例:

2

3

1Node 1: 56%

Node 3: 24%

Node 2: 20%

過大な負荷

2011年5月30日月曜日

Page 24: P2p search engine

仮想ノードあり:

2

31

3

1

1

2

12

31

21

2

Node 1 56% 42%Node 2 20% 32%Node 3 24% 26%

2011年5月30日月曜日

Page 25: P2p search engine

仮想ノードあり:

2

31

3

1

1

2

12

31

21

2

Node 1 56% 42%Node 2 20% 32%Node 3 24% 26%

平準化!

2011年5月30日月曜日

Page 26: P2p search engine

Indexing•文章・単語のハッシュから     受け入れノードを決定する

•インデックス追加時点で検索対象になる•形態素解析は設定(実装も)可能

•既存の形態素解析エンジン: Sen(=MeCab)

•文字ごと分割: Bi-gram, Uni-gram

•いずれ自作形態素解析を!

2011年5月30日月曜日

Page 27: P2p search engine

Indexing•結果的に各ノードは別々のインデックスを持つことになる

•利用不能になったときの話は後述

2011年5月30日月曜日

Page 28: P2p search engine

Indexing

AF

B

C

E

D

ID: 12345Title: ...Body: ...URL: ...

RPC/API(予定)Content

TermTerm

2011年5月30日月曜日

Page 29: P2p search engine

Indexing

AF

B HashE

D

Hash直後のノードに保存

Content

C

2011年5月30日月曜日

Page 30: P2p search engine

Indexing

AF

B

E

D

C

責任範囲(replication=3)

2011年5月30日月曜日

Page 31: P2p search engine

インデックス構造…Skip pointer

…Dictionary

Invert index …

…Skip pointer

Content …Appendix…

ID

2011年5月30日月曜日

Page 32: P2p search engine

インデックス順序…Skip pointer

…Dictionary

Invert index …

…Skip pointer

Content …Appendix

(16)

(14)

(15)

(13) Lookup

(12)

(8) Lookup

(9) Lookup

(11)

(10)

(1)(4)

(7)

(6)(5)

(2) Lookup

(3) Lookup

2011年5月30日月曜日

Page 33: P2p search engine

•トランザクショングループ:

• Contents ... (1)~(7)

• Dictionary ... (8)~(12)

• Invert index ... (13)~(16)

•すべての処理が終わるとはじめて検索結果に反映される

インデックス順序

28

2011年5月30日月曜日

Page 34: P2p search engine

Searching•サーバ役のノードが形態素解析→単語ごとに検索要求を投げる

•サーバ役が検索結果をとりまとめる→本文を各ノードに要求する

•またサーバ役がまとめてクライアントに返す

29

2011年5月30日月曜日

Page 35: P2p search engine

Term

TermTerm

Searching

AF

B

C

Query

E

D

Analyze

2011年5月30日月曜日

Page 36: P2p search engine

Searching

AF

B

C

E

D

ID: 12, 24, 35, 49, ...

ID: 12, 30, 49, 55, ...

Intersection

ID: 7, 12, 30, 49, ...

2011年5月30日月曜日

Page 37: P2p search engine

Searching

AF

B

C

E

D

ID: 12

ID: 49

Output

2011年5月30日月曜日

Page 38: P2p search engine

検索順…Skip pointer

…Dictionary

Invert index …

…Skip pointer

Content …Appendix…

ID

Query

Output Output2011年5月30日月曜日

Page 39: P2p search engine

ノード終了時•終了の仕方は正常・異常に関わらず同じ流れ

•各ノードが消滅ノードを自分で判断して動作する

2011年5月30日月曜日

Page 40: P2p search engine

生存確認

AF

B

C

E

D

beacon

2011年5月30日月曜日

Page 41: P2p search engine

生存確認

AF

B

C

E

D

“live”

2011年5月30日月曜日

Page 42: P2p search engine

生存確認

AF

B

C

E

D

ノード不具合 ×

××

2011年5月30日月曜日

Page 43: P2p search engine

生存確認

AF

B

C

E

D

×

××

残存ノードでレプリケーション

1

2

34

5

6

2011年5月30日月曜日

Page 44: P2p search engine

コピー例A B C D E F4 5 6 1 2 3

5 6 1 2 3 4

6 1 2 3 4 5

3 4 5

レプリケーション数を保持

2011年5月30日月曜日

Page 45: P2p search engine

Future work•まだまだ未実装なところが

•バックアップ機能・リバート•ノード・システム全体の一時停止

• メンテのため一部停止はありうる• Web appをつくる

• インターフェイスを考える•複数システムの協調

40

2011年5月30日月曜日

Page 46: P2p search engine

Topic: システム階層

41

窓口

通信

解析・整理

格納場所

2011年5月30日月曜日

Page 47: P2p search engine

Topic: システム階層

42

Index Server

Node Manager /Search Gather

Store/Lookup, Query Parser

Memory/Disk Blocks

Search Server

2011年5月30日月曜日

Page 48: P2p search engine

Topic: Intersection•結果件数: r1, r2, ..., rnとしてO(∑ r)でできる

•以下の例でちょっと実証

r1 1 4 6 10 12 16 22 29 30 31 37 40 43 47r2 2 4 6 9 12 14 26 30 32 37 43 44 47 50r3 4 5 6 10 11 12 23 27 30 37 39 41 43 47

2011年5月30日月曜日

Page 49: P2p search engine

Topic: Intersection1.比較ポインタをそれぞれの先頭に置く2.比較

2.1.違うなら一番小さい数字のポインタを次に2.2.合っていれば格納、全ポインタを次に進める

r1 1 4 6 10 12 16 22 29 30 31 37 40 43 47r2 2 4 6 9 12 14 26 30 32 37 43 44 47 50r3 4 5 6 10 11 12 23 27 30 37 39 41 43 47

2011年5月30日月曜日

Page 50: P2p search engine

Topic: メモリプール

45

MemoryBlockPool

Skip Pointer Invert Index Content

withdraw deposit

2011年5月30日月曜日

Page 51: P2p search engine

Bibliography(1)(1) I. Stoica, et al.; Chord: A Scalable Peer-

to-peer Lookup Service for Internet Applications; SIGCOMM 2001; October 2001

(2) D. Karger, et al.; Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web; STOC ’97; 1997

46

2011年5月30日月曜日

Page 52: P2p search engine

Bibliography(2)(3) C. D. Manning, et al.; An Introduction to

Information Retrieval; Cambridge UP; 2009

(4) T. Luu, et al.; ALVIS Peers: A Scalable Full-text Peer-to-Peer Retrieval Engine; P2PIR ’06; Nov. 2006

47

2011年5月30日月曜日