Mercurial > hg > Papers > 2013 > nobuyasu-jssst
comparison presen/index.html @ 55:307c87617e62 default tip
add slide
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 11 Sep 2013 10:21:42 +0900 |
parents | edc3972b949c |
children |
comparison
equal
deleted
inserted
replaced
54:edc3972b949c | 55:307c87617e62 |
---|---|
54 <li><font color="red">本研究では, Jungle に Alice を用いて分散データベースとしての実装を行った. また例題を作成し評価を行う.</font></li> | 54 <li><font color="red">本研究では, Jungle に Alice を用いて分散データベースとしての実装を行った. また例題を作成し評価を行う.</font></li> |
55 </ul> | 55 </ul> |
56 </article> | 56 </article> |
57 | 57 |
58 <article> | 58 <article> |
59 <h3>Alice</h3> | 59 <h3>Alice : Code Segment </h3> |
60 <ul> | 60 <ul> |
61 <li>当研究室で開発している並列分散フレームワーク</li> | 61 <li>Alice : 当研究室で開発している並列分散フレームワーク</li> |
62 <li>Data Segment と Code Segment による並列・分散プログラミングを提供</li> | 62 <li>Data Segment と Code Segment による並列・分散プログラミングを提供</li> |
63 <br> | 63 <p class="center"> |
64 <li>まず Data Segment と Code Segment, それと Alice におけるデータ表現について説明を行う</li> | 64 <img src="./pic/dsandcs.png"> |
65 </p> | |
66 <li>Code Segment : 並列プログラミングにおけるタスク</li> | |
67 <li>Data Segment を受け取り計算を行うコード</li> | |
68 <li>Data Segment の Key を登録することで, 登録された Data Segment が準備されしだい実行される</li> | |
65 </ul> | 69 </ul> |
66 </article> | 70 </article> |
67 | 71 |
68 <article> | 72 <article> |
69 <h3>Data Segment</h3> | 73 <h3>Data Segment</h3> |
113 <li>データを木構造かつ、非破壊で保持することが特徴</li> | 117 <li>データを木構造かつ、非破壊で保持することが特徴</li> |
114 </ul> | 118 </ul> |
115 </article> | 119 </article> |
116 | 120 |
117 | 121 |
118 <!-- | |
119 <article> | 122 <article> |
120 <h3>破壊的木構造</h3> | 123 <h3>破壊的木構造</h3> |
121 <ul> | 124 <ul> |
122 <li>木構造で保持するデータを直接書き換える</li> | 125 <li>木構造で保持するデータを直接書き換える</li> |
123 <li>編集を行う際にロックをかける必要がある</li> | 126 <li>編集を行う際にロックをかける必要がある</li> |
124 <p class="center"> | 127 <p class="center"> |
125 <img src="./pic/destructive_tree.png"> | 128 <img src="./pic/destructive_tree.png"> |
126 </p> | 129 </p> |
127 <li>データを受け取ろうと木を走査するスレッドは編集時には書き換えの終了をまつ必要がある</li> | 130 <li>データを受け取ろうと木を走査するスレッドは編集時には書き換えの終了をまつ必要がある</li> |
131 <!-- | |
128 <li><font color=red>ロックが多いためスケールしにくい</font></li> | 132 <li><font color=red>ロックが多いためスケールしにくい</font></li> |
129 </ul> | 133 --> |
130 </article> | 134 </ul> |
131 --> | 135 </article> |
132 <article> | 136 <article> |
133 <h3>非破壊的木構造</h3> | 137 <h3>非破壊的木構造</h3> |
134 <ul> | 138 <ul> |
135 <li>一度作成したデータの破壊は行わない</li> | 139 <li>一度作成したデータの破壊は行わない</li> |
136 <li>データの編集は, 編集が行われるノードまでをルートからコピーを行い新しい木構造を作ることで行う</li> | 140 <li>データの編集は, 編集が行われるノードまでをルートからコピーを行い新しい木構造を作ることで行う</li> |
255 </article> | 259 </article> |
256 | 260 |
257 <article> | 261 <article> |
258 <h3>ログを扱う Data Segment</h3> | 262 <h3>ログを扱う Data Segment</h3> |
259 <ul> | 263 <ul> |
260 <li>Data Segment にされた TreeOperaiontinLog はAlice上で "log", "childLog" というキーで扱われる</li> | 264 <li>Data Segment にされた TreeOperaiontinLog はAlice上で log, childLog というキーで扱われる</li> |
261 <li>"log" にはそのノードが行った木の編集ログが入る</li> | 265 <li>log にはそのノードが行った木の編集ログが入る</li> |
262 <li>子供となるノードは "parent" キーを使うことで親のノードの DSM にアクセスできる</li> | 266 <li>子供となるノードは parent キーを使うことで親のノードの DSM にアクセスできる</li> |
263 <p class="center"> | 267 <p class="center"> |
264 <img src="./pic/alice_topology.png"> | 268 <img src="./pic/alice_topology.png"> |
265 </p> | 269 </p> |
266 <li>子供となるノードは親の "log" を見張る Code Segment が走らせており, ログが put されると | 270 <li>子供となるノードは親の log を見張る Code Segment が走らせており, ログが put されると |
267 そのデータを受け取り自身の Tree へと反映を行う</li> | 271 そのデータを受け取り自身の Tree へと反映を行う</li> |
268 </ul> | 272 </ul> |
269 </article> | 273 </article> |
270 | 274 |
271 <article> | 275 <article> |
272 <h3>ログを扱う Data Segment</h3> | 276 <h3>ログを扱う Data Segment</h3> |
273 <ul> | 277 <ul> |
274 <li>"childLog" には子供となるノードが行った編集のログが入れられる</li> | 278 <li>childLog には子供となるノードが行った編集のログが入れられる</li> |
275 <li>各ノードでは "childLog" を見張る Code Segment が走っており, データが put され次第 | 279 <li>各ノードでは childLog を見張る Code Segment が走っており, データが put され次第 |
276 Tree へのログの反映が行われる</li> | 280 Tree へのログの反映が行われる</li> |
277 <li>親ノードの "log" と自身がもつ "childLog" を Code Segment でみはることでデータの分散を | 281 <li>親ノードの log と自身がもつ childLog を Code Segment でみはることでデータの分散を |
278 行う</li> | 282 行う</li> |
279 <table> | 283 <table> |
280 <tr style="width:100%;"> | 284 <tr style="width:100%;"> |
281 <td style="width:50%;"> | 285 <td style="width:50%;"> |
282 <p> | 286 <p> |
311 <ul> | 315 <ul> |
312 <li>Jungle の例題のアプリケーションとして掲示板を作成した</li> | 316 <li>Jungle の例題のアプリケーションとして掲示板を作成した</li> |
313 <li>組み込みウェブサーバである jetty をフロントエンドに実装</li> | 317 <li>組み込みウェブサーバである jetty をフロントエンドに実装</li> |
314 <li>今回作成した分散バージョンと元のバージョンをシングルサーバ上で動かし, 2つの | 318 <li>今回作成した分散バージョンと元のバージョンをシングルサーバ上で動かし, 2つの |
315 ベンチマークをとり性能比較を行う</li> | 319 ベンチマークをとり性能比較を行う</li> |
320 <li>また, Cassandra でも同様のアプリケーションを作成し性能比較を行う</li> | |
316 <li>ベンチマークは学科の提供するVMのクラスタを用いる</li> | 321 <li>ベンチマークは学科の提供するVMのクラスタを用いる</li> |
317 </ul> | 322 </ul> |
318 </article> | 323 </article> |
319 | 324 |
320 <article> | 325 <article> |
421 <article> | 426 <article> |
422 <h3>まとめ</h3> | 427 <h3>まとめ</h3> |
423 <ul> | 428 <ul> |
424 <li>今回, 並列分散フレームワークである Alice を用いて Jungle の分散データベースの実装を行った</li> | 429 <li>今回, 並列分散フレームワークである Alice を用いて Jungle の分散データベースの実装を行った</li> |
425 <li>Jungle の編集のログを Data Segment として Alice 上で他ノードへと送ることで実装</li> | 430 <li>Jungle の編集のログを Data Segment として Alice 上で他ノードへと送ることで実装</li> |
431 <li>具体的には, データを Data Segment で扱うための変換と, その Data Segment により Tree へ反映を行う | |
432 Code Segment を用意することで実装を行った</li> | |
433 <li>トポロジーの形成部分は Alice の提供する機能を使用した</li> | |
434 <li>また, 実装を行った分散データベースで掲示板の作成をし, 元の Jungle との性能比較も行った</li> | |
435 <li>読み込み速度に差は無いが, 書き込み速度は分散版が遅いことを確認した</li> | |
436 <!-- | |
426 <li>今回シングル版から分散版への変更は1000行程度のコードの追加で行うことができた</li> | 437 <li>今回シングル版から分散版への変更は1000行程度のコードの追加で行うことができた</li> |
427 <li>これは Alice によりトポロジーの形成部分を書く必要がなかったことがあげられる</li> | 438 <li>これは Alice によりトポロジーの形成部分を書く必要がなかったことがあげられる</li> |
428 <li>Alice を用いてると比較的楽に分散プログラムの作成ができることが確認できた</li> | 439 <li>Alice を用いて少ない変更で分散プログラムの作成ができることが確認できた</li> |
429 </ul> | 440 --> |
430 </article> | |
431 | |
432 <article> | |
433 <h3>まとめ 2</h3> | |
434 <ul> | |
435 <li>また, 実装を行った分散データベースで掲示板の作成を, 元の Jungle との性能比較も行った</li> | |
436 <li>読み込み速度に差は無いが, 書き込み速度は分散版が遅いことを確認した</li> | |
437 </ul> | 441 </ul> |
438 </article> | 442 </article> |
439 | 443 |
440 <article> | 444 <article> |
441 <h3>今後の課題</h3> | 445 <h3>今後の課題</h3> |
447 <li>また, Alice 内部 java.util.concurrent.Executorを使用している為, Jungle側のThread Pool に干渉している可能性がある. | 451 <li>また, Alice 内部 java.util.concurrent.Executorを使用している為, Jungle側のThread Pool に干渉している可能性がある. |
448 調整を行いスピードアップを目指したい</li> | 452 調整を行いスピードアップを目指したい</li> |
449 </ul> | 453 </ul> |
450 </article> | 454 </article> |
451 | 455 |
456 <article> | |
457 <h3>スケーラビリティとは?</h3> | |
458 <p>スケーラビリティとは, システムの特性で, 利用者の増大やその負荷に応じて柔軟に対応できるような性質.</p> | |
459 <p>分散システムの場合, ノードを追加するだけで性能を線形に向上させる事ができる</p> | |
460 <br/> | |
461 <p>スケーラビリティを上げる方法は?</p> | |
462 <ul style="color:red;text-weight:bold;"> | |
463 <li>スケールアップ : 高価なサーバーを買う</li> | |
464 <li>スケールアウト : 安価なサーバーを複数用意して利用する</li> | |
465 </ul> | |
466 <p>という2種類の方法がある.</p> | |
467 </article> | |
452 | 468 |
453 <article> | 469 <article> |
454 <h3>Cassandra の実装との比較</h3> | 470 <h3>Cassandra の実装との比較</h3> |
455 <ul> | 471 <ul> |
472 <li>Cassandraとは, スケーラブルな分散KeyValueStoreデータベースである</li> | |
456 <li>Cassandra ではデータの書き込みはノードの過半数に行われるのを待つ</l> | 473 <li>Cassandra ではデータの書き込みはノードの過半数に行われるのを待つ</l> |
457 <li>読み込みに関しても過半数のノードを調べ, 最も新しいタイムスタンプを持つデータを返す</li> | 474 <li>読み込みに関しても過半数のノードを調べ, 最も新しいタイムスタンプを持つデータを返す</li> |
458 <p class="center"> | 475 <p class="center"> |
459 <img src="./pic/cassandra.png"> | 476 <img src="./pic/cassandra.png"> |
460 </p> | 477 </p> |