SlideShare una empresa de Scribd logo
1 de 9
参考資料参考資料
DHTの基礎知識
※発表内容ではありません。 2009.12.11 VIOPS事務局
DHT(Distributed Hash Table)分散ハッシュテーブル
・ P2Pオーバーレイネットワークを構成
・ Key-Valueペア分散探索技術Key Valueペア分散探索技術
・ IDにConsistent-Hashを利用
・ スケールアウトしやすいスケ ルアウトしやすい
代表的なDHTアルゴリズム代表的なDHTアルゴリズム
・ CAN (2001) N次トーラスCAN (2001) N次ト ラス
・ Tapestry, Pastry (2001 ) Plaxton
・ Kademlia (2002) 二分木Kademlia (2002) 二分木
・ Chord (2001) 環状
・ Koorde (2004) Chord改Koorde (2004) Chord改
・ Broose (2004) Koorde+Kademlia改
CAN Content Addressable Network
論文 A Scalable Content Addressable Network (2001 UCB & ATT)
y
N次元トーラス空間にノードIDとコンテンツIDをマッピング
探索ホップ数= )( /1 d
dNO
(0xF,0xF)
y
)(
X = Hash1(‘Hello’) = 0xE (0xF,0xF)
D
(0 C 0 C)
Y = Hash2(‘Hello’) = 0xC
C
(0x9,0x9)
(0xC,0xC)
Put(‘Hello’,’World’) → ノードD
A
(0x4,0x4)
B
(0xC,0x4)
x
(0xE,0xC)のコンテンツをAから探索
A→C→D→(0xE 0xC)→’World’
(0x0,0x0)
xA→C→D→(0xE,0xC)→ World
Pastry PlaxtonアルゴリズムによるDHT
論文
ズ
論文 Scalable distributed object location and routing
for large-scale peer-to-peer systems (2001 MS & Rice)
• Plaxtonアルゴリズム
• IDは基数(b)と桁数(n)により構成 (例 3桁4進数)
ノードabcの経路表023
0-23 1-12 2-23 3-03
a0 1 a1 0 a2 1 a3 2
abc 112
303 a0-1 a1-0 a2-1 a3-2
ab0 ab1 ab2 ab3
332
303
112
ab0 ab1 ab2 ab3
223
Pastryアルゴリズム )log( NbOy
Plaxtonテーブルとリーフセット、ネイバーフッドセットの組み合わせ
Kademlia(カデムリア)
論文 A Peer-to-peer information System
Based on the XOR Metric (2002 NYU)( )
二分木構造のID空間
を空 離 定義XORを空間の距離として定義
距離 = XOR(ノードID Key)距離 = XOR(ノ ドID、Key)
ノードA = 001
ノ ドB = 010
000 001 010 011 100 101 110 111
ノードB = 010
Key = 100
XOR(001 100) 010 2XOR(001, 100) = 010 = 2
XOR(010, 100) = 001 = 1 → ノードBにValueをストア
グ ブプレフィックス一致長によるルーティングテーブル
Chord
論文 A S l bl P P L k S i f論文 A Scalable Peer-to-Peer Lookup Service for
Internet Applications (2001 MIT)
160bit SHA-1によるハッシュ化
1次元環状空間 にノ ドIDをマ ピング1次元環状空間 にノードIDをマッピング
スキップリストによる探索(Finger Table) )(log NO
Chord
Finger Table (mビット空間の場合、m個のエントリ)
1. finger[i].start =
mi
n 2mod)2( 1−
+
2. Interval (範囲) = finger[i].start ≦ interval < finger[i+1].start
3. successor (id) = interval内の一番近いノードID( )
3ビット空間での例(原論文より抜粋)
Chord
探索「ノード3がキー1を探す」
1. ノード3のFinger Tableから[7,3)のsuccessorを見つける
2. ノード0のFinger Tableから[1,2)のsuccessorを知りノード3に返す
3. ノード3はノード1にキー1をリクエストする
3ビット空間での例(原論文より抜粋)
探索シーケンスの擬似コード
// ノードn上で、id のsucecssorを探す
n.find_successor(id) { // ノード3上のプロシージャを実行
n' = find_predecessor(id); // idのpredecessorを探す、この場合 n' はノード0。
return n' successor; // ノード n' = 0 の finger table から id の successorノードIDを返すreturn n .successor; // ノ ド n 0 の finger table から id の successorノ ドIDを返す
}
// ノ ド で id の d を探す// ノード n で id の predecessorを探す
n.find_predecessor(id) {
n' = n; // まず、自分から
while(id !∈ (n', n'.successor]) { // finger table内のエントリで、id が intervalに入るまで
' ' l t di fi (id) // id に最も近いノ ドIDを ' とするn' = n'.closest_preceding_finger(id); // id に最も近いノードIDを n' とする
}
return n'; // finger table内で最もidに近いpredecessorを見つけた!
}
// id が interval 内に含まれるエントリを探す
n.closest_preceding_finger(id) { // 自分のfinger tableをみるよ!
for i = m downto 1 { // finger table の下の方から順番に
if(finger[i].node ∈ (n, id)) { // successorノードが 自分 と id との間にあれば、
return finger[i].node; // そのsuccessorノードIDを返す
}
return n; // 無ければ、それは自分だよ
}
}

Más contenido relacionado

Más de VIOPS Virtualized Infrastructure Operators group ARCHIVES

VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~
VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~
VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~VIOPS Virtualized Infrastructure Operators group ARCHIVES
 
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところ
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところVIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところ
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところVIOPS Virtualized Infrastructure Operators group ARCHIVES
 
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密VIOPS Virtualized Infrastructure Operators group ARCHIVES
 

Más de VIOPS Virtualized Infrastructure Operators group ARCHIVES (20)

VIOPS10: クラウドのつぎに起こるコト
VIOPS10: クラウドのつぎに起こるコトVIOPS10: クラウドのつぎに起こるコト
VIOPS10: クラウドのつぎに起こるコト
 
VIOPS10: いまパブリッククラウドで起きているコト
VIOPS10: いまパブリッククラウドで起きているコトVIOPS10: いまパブリッククラウドで起きているコト
VIOPS10: いまパブリッククラウドで起きているコト
 
VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~
VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~
VIOPS09: 本当に必要なのはSoftware- Defined Networking? ~今、改めて考えるデータセンタ・ネットワークの役割~
 
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところ
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところVIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところ
VIOPS09: Hadoop向けバッチアプリケーション開発フレームワーク Asakura Frameworkが目指すところ
 
VIOPS09: AWSで実現する クラウドと物理製品の融合
VIOPS09: AWSで実現する クラウドと物理製品の融合VIOPS09: AWSで実現する クラウドと物理製品の融合
VIOPS09: AWSで実現する クラウドと物理製品の融合
 
VIOPS09: クラウド時代におけるFusion-ioのポジショニング
VIOPS09: クラウド時代におけるFusion-ioのポジショニングVIOPS09: クラウド時代におけるFusion-ioのポジショニング
VIOPS09: クラウド時代におけるFusion-ioのポジショニング
 
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密
VIOPS09: 圧倒的なコストパフォーマンスを実現するクラウドアーキテクチャの秘密
 
VIOPS08: マイクロサーバー アーキテクチャトレンド
VIOPS08: マイクロサーバー アーキテクチャトレンドVIOPS08: マイクロサーバー アーキテクチャトレンド
VIOPS08: マイクロサーバー アーキテクチャトレンド
 
VIOPS08: Behavior Analysis Solution for Bigdata
VIOPS08: Behavior Analysis Solution for BigdataVIOPS08: Behavior Analysis Solution for Bigdata
VIOPS08: Behavior Analysis Solution for Bigdata
 
VIOPS08: ハードウェアオフロードの現在と今後
VIOPS08: ハードウェアオフロードの現在と今後VIOPS08: ハードウェアオフロードの現在と今後
VIOPS08: ハードウェアオフロードの現在と今後
 
VIOPS08: PaaSのメリットと課題
VIOPS08: PaaSのメリットと課題VIOPS08: PaaSのメリットと課題
VIOPS08: PaaSのメリットと課題
 
VIOPS07: “Practical” Guide to GlusterFS
VIOPS07: “Practical” Guide to GlusterFSVIOPS07: “Practical” Guide to GlusterFS
VIOPS07: “Practical” Guide to GlusterFS
 
VIOPS07: アプリケーションサービスの自動化
VIOPS07: アプリケーションサービスの自動化VIOPS07: アプリケーションサービスの自動化
VIOPS07: アプリケーションサービスの自動化
 
VIOPS07: OSMと地理空間情報
VIOPS07: OSMと地理空間情報VIOPS07: OSMと地理空間情報
VIOPS07: OSMと地理空間情報
 
VIOPS07: CDNの困ったネタ
VIOPS07: CDNの困ったネタVIOPS07: CDNの困ったネタ
VIOPS07: CDNの困ったネタ
 
VIOPS07: ETRI GLORY-FS
VIOPS07: ETRI GLORY-FSVIOPS07: ETRI GLORY-FS
VIOPS07: ETRI GLORY-FS
 
VIOPS06: マルチコア時代のコンピューティング活用術
VIOPS06: マルチコア時代のコンピューティング活用術VIOPS06: マルチコア時代のコンピューティング活用術
VIOPS06: マルチコア時代のコンピューティング活用術
 
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件
 
VIOPS06: Infiniband技術動向および導入事例
VIOPS06: Infiniband技術動向および導入事例VIOPS06: Infiniband技術動向および導入事例
VIOPS06: Infiniband技術動向および導入事例
 
VIOPS06: 災害発生!~通信キャリアの場合~
VIOPS06: 災害発生!~通信キャリアの場合~VIOPS06: 災害発生!~通信キャリアの場合~
VIOPS06: 災害発生!~通信キャリアの場合~
 

Último

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Último (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

VIOPS04: DHTの基礎知識

  • 2. DHT(Distributed Hash Table)分散ハッシュテーブル ・ P2Pオーバーレイネットワークを構成 ・ Key-Valueペア分散探索技術Key Valueペア分散探索技術 ・ IDにConsistent-Hashを利用 ・ スケールアウトしやすいスケ ルアウトしやすい 代表的なDHTアルゴリズム代表的なDHTアルゴリズム ・ CAN (2001) N次トーラスCAN (2001) N次ト ラス ・ Tapestry, Pastry (2001 ) Plaxton ・ Kademlia (2002) 二分木Kademlia (2002) 二分木 ・ Chord (2001) 環状 ・ Koorde (2004) Chord改Koorde (2004) Chord改 ・ Broose (2004) Koorde+Kademlia改
  • 3. CAN Content Addressable Network 論文 A Scalable Content Addressable Network (2001 UCB & ATT) y N次元トーラス空間にノードIDとコンテンツIDをマッピング 探索ホップ数= )( /1 d dNO (0xF,0xF) y )( X = Hash1(‘Hello’) = 0xE (0xF,0xF) D (0 C 0 C) Y = Hash2(‘Hello’) = 0xC C (0x9,0x9) (0xC,0xC) Put(‘Hello’,’World’) → ノードD A (0x4,0x4) B (0xC,0x4) x (0xE,0xC)のコンテンツをAから探索 A→C→D→(0xE 0xC)→’World’ (0x0,0x0) xA→C→D→(0xE,0xC)→ World
  • 4. Pastry PlaxtonアルゴリズムによるDHT 論文 ズ 論文 Scalable distributed object location and routing for large-scale peer-to-peer systems (2001 MS & Rice) • Plaxtonアルゴリズム • IDは基数(b)と桁数(n)により構成 (例 3桁4進数) ノードabcの経路表023 0-23 1-12 2-23 3-03 a0 1 a1 0 a2 1 a3 2 abc 112 303 a0-1 a1-0 a2-1 a3-2 ab0 ab1 ab2 ab3 332 303 112 ab0 ab1 ab2 ab3 223 Pastryアルゴリズム )log( NbOy Plaxtonテーブルとリーフセット、ネイバーフッドセットの組み合わせ
  • 5. Kademlia(カデムリア) 論文 A Peer-to-peer information System Based on the XOR Metric (2002 NYU)( ) 二分木構造のID空間 を空 離 定義XORを空間の距離として定義 距離 = XOR(ノードID Key)距離 = XOR(ノ ドID、Key) ノードA = 001 ノ ドB = 010 000 001 010 011 100 101 110 111 ノードB = 010 Key = 100 XOR(001 100) 010 2XOR(001, 100) = 010 = 2 XOR(010, 100) = 001 = 1 → ノードBにValueをストア グ ブプレフィックス一致長によるルーティングテーブル
  • 6. Chord 論文 A S l bl P P L k S i f論文 A Scalable Peer-to-Peer Lookup Service for Internet Applications (2001 MIT) 160bit SHA-1によるハッシュ化 1次元環状空間 にノ ドIDをマ ピング1次元環状空間 にノードIDをマッピング スキップリストによる探索(Finger Table) )(log NO
  • 7. Chord Finger Table (mビット空間の場合、m個のエントリ) 1. finger[i].start = mi n 2mod)2( 1− + 2. Interval (範囲) = finger[i].start ≦ interval < finger[i+1].start 3. successor (id) = interval内の一番近いノードID( ) 3ビット空間での例(原論文より抜粋)
  • 8. Chord 探索「ノード3がキー1を探す」 1. ノード3のFinger Tableから[7,3)のsuccessorを見つける 2. ノード0のFinger Tableから[1,2)のsuccessorを知りノード3に返す 3. ノード3はノード1にキー1をリクエストする 3ビット空間での例(原論文より抜粋)
  • 9. 探索シーケンスの擬似コード // ノードn上で、id のsucecssorを探す n.find_successor(id) { // ノード3上のプロシージャを実行 n' = find_predecessor(id); // idのpredecessorを探す、この場合 n' はノード0。 return n' successor; // ノード n' = 0 の finger table から id の successorノードIDを返すreturn n .successor; // ノ ド n 0 の finger table から id の successorノ ドIDを返す } // ノ ド で id の d を探す// ノード n で id の predecessorを探す n.find_predecessor(id) { n' = n; // まず、自分から while(id !∈ (n', n'.successor]) { // finger table内のエントリで、id が intervalに入るまで ' ' l t di fi (id) // id に最も近いノ ドIDを ' とするn' = n'.closest_preceding_finger(id); // id に最も近いノードIDを n' とする } return n'; // finger table内で最もidに近いpredecessorを見つけた! } // id が interval 内に含まれるエントリを探す n.closest_preceding_finger(id) { // 自分のfinger tableをみるよ! for i = m downto 1 { // finger table の下の方から順番に if(finger[i].node ∈ (n, id)) { // successorノードが 自分 と id との間にあれば、 return finger[i].node; // そのsuccessorノードIDを返す } return n; // 無ければ、それは自分だよ } }