Mercurial > hg > Papers > 2018 > suruga-thesis
view paper/slides/sample.html @ 39:48fbb9e3c335
fix slides
author | suruga |
---|---|
date | Wed, 21 Feb 2018 18:16:11 +0900 |
parents | 254dce6f6501 |
children | 9978f2fd4954 |
line wrap: on
line source
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>分散版 Jungle データベースの性能測定方法</title> <meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin14]"> <meta name="author" content="仲松栞" > <!-- style sheet links --> <link rel="stylesheet" href="s6/themes/projection.css" media="screen,projection"> <link rel="stylesheet" href="s6/themes/screen.css" media="screen"> <link rel="stylesheet" href="s6/themes/print.css" media="print"> <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection"> <!-- JS --> <script src="s6/js/jquery-1.11.3.min.js"></script> <script src="s6/js/jquery.slideshow.js"></script> <script src="s6/js/jquery.slideshow.counter.js"></script> <script src="s6/js/jquery.slideshow.controls.js"></script> <script src="s6/js/jquery.slideshow.footer.js"></script> <script src="s6/js/jquery.slideshow.autoplay.js"></script> <!-- prettify --> <link rel="stylesheet" href="scripts/prettify.css"> <script src="scripts/prettify.js"></script> <script> $(document).ready( function() { Slideshow.init(); $('code').each(function(_, el) { if (!el.classList.contains('noprettyprint')) { el.classList.add('prettyprint'); } }); prettyPrint(); } ); </script> <!-- Better Browser Banner for Microsoft Internet Explorer (IE) --> <!--[if IE]> <script src="s6/js/jquery.microsoft.js"></script> <![endif]--> </head> <body> <div class="layout"> <div id="header"></div> <div id="footer"> <div align="right"> <img src="s6/images/logo.svg" width="200px"> </div> </div> </div> <div class="presentation"> <div class='slide cover'> <table width="90%" height="90%" border="0" align="center"> <tr> <td> <div align="center"> <h1><font color="#808db5">分散版 Jungle データベースの性能測定方法</font></h1> </div> </td> </tr> <tr> <td> <div align="left"> 仲松栞 琉球大学 工学部 情報工学科 河野研 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;"> </div> </td> </tr> </table> </div> <div class='slide '> <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin14] on 2018-02-21 18:15:45 +0900 with Markdown engine kramdown (1.13.2) using options {} --> <!-- _S9SLIDE_ --> <h1 id="section">研究背景(1/2)</h1> <ul> <li>スマートフォン等の普及により、Webサービスの利用者が増え、Webサーバーにかかる負荷も増大している</li> <li>この問題を解決する為に当研究室では、スケーラビリティを持つ分散データベースとしてJungleを開発している</li> <li>ここで言うスケーラビリティとは、複数のマシンに処理を分散させたりすることで、システムの処理能力を向上させる性能を指す</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-1">研究背景(2/2)</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、Jungleはデータ構造として木構造を採用している</li> <li>JungleはNoSQLで開発されており、木構造をそのまま読み込むことが可能</li> <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している。</li> <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceを使用している</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-2">問題提起</h1> <ul> <li>これまでJungleの分散性能を測定する方法はWebサーバー込みで行われていた</li> <li>Jungleの単体の分散性能を測定したい</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-3">研究目的</h1> <ul> <li>Jungleを用いるデータの伝搬方式や、トランザクションのmergeに関する研究開発をしやすくする為 木構造に構築したJungleのノード上で、いくつかのノードから書き込みを伝搬させて、 変更が全体に伝搬するまでの実験をできるようにする</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="jungle">JUngleデータベースの構造</h1> <ul> <li>一般的なウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している</li> <li>NoSQLを元に開発されている為、RDBと異なり、木構造をそのまま読み込める</li> <li>Jungle はデータの変更を非破壊で行なっており、編集ごとのデータをバージョンとして TreeOperationLog に残している</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="jungle12">Jungleの分散機構(1/2)</h1> <ul> <li>ノード間でデータの衝突が起きるのを避ける為、Mergeの機能が実装されている</li> <li>Jungleの分散機構には、当研究室で開発している分散フレームワークAliceのTopologyManagerという機能を使用している</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="jungle22">Jungleの分散機構(2/2)</h1> <ul> <li>Jungleの分散機構はツリートポロジーを想定している</li> <li>ツリー型であれば、データの整合性をとる場合、一度トップまでデータを伝搬させることで行える</li> <li>ノード間でデータの衝突が生じても、Mergeして改めて送り直せばいいからである <img src="./pictures/tree.pdf" alt="tree" width="60%" /></li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-4">評価実験</h1> <ul> <li>学科から16台のVMを借り,15台でJungleを1つずつ起動し、分散させる</li> <li>15台のJungleはAliceのTopologyManagerでツリートポロジーを形成する</li> <li>1~7台の子ノードのJungleに書き込んだデータがrootノードのJungleへMergeし終わるまでの時間を計測する (画像)</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-5">実験環境</h1> <ul> <li>学科のKVM上の仮想マシンによる仮想クラスタ環境を用いて実験を行った</li> <li>他の利用者とリソースが競合しないよう、TORQUEジョブスケジューラーを利用している</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="torque-resource-manager">TORQUE Resource Manager</h1> <ul> <li>TORQUEはジョブを管理・投下・実行する3つのデーモンで構 成されており、ジョブの管理・投下を担うデーモンが稼働しているヘッダーノードから、 ジョブの実行を担うデーモンが稼働している計算ノードへジョブが投下される</li> <li>本実験では、TORQUEを用いて、計測用に作成したperlスクリプトを15台のJungleに一度に投入するジョブスクリプトを投入した</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="torque">TORQUEの使い方</h1> <ul> <li>ジョブはqsubで投入</li> <li>ジョブの処理状況はqstatで確認できる <ul> <li>その際、Rは処理中であり、Cは処理完了を表している (ジョブの状態のテキストを貼る)</li> </ul> </li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="torque-1">TORQUEを使うにあたり工夫した所</h1> <ul> <li>TORQUEで測定するにはJungleのノードを15台全部起動して、全部終了するようにしないといけない</li> <li>実験が終了したらタスクを終了させるコードを実装した <ul> <li>書き込みの最後にnullLogを送ると全体が終了するコードを実装した</li> </ul> </li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="alice">分散フレームワークAlice</h1> <ul> <li>Aliceは当研究室で開発している並列分散フレームワークである</li> <li>Alice は、ネットワーク上の複数のサーバーノードにトポロジーを形成させ、通信する機能を提供する</li> <li>本実験では、Aliceを用いて15台のJungleにツリートポロジーを形成させ、子ノードとJungleノード間のデータの通信を行なった</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="topologymanager">TopologyManager</h1> <ul> <li>TopologyManagerは、ネットワーク上の複数のサーバーノードにトポロジーを形成さる機能である</li> <li>TopologyManagerにトポロジーの内容が書かれたトポロジーファイルを渡すことで、任意のトポロジーを構成させることができる。</li> <li>本実験ではTopologyManagerにツリー型のトポロジーファイルを渡すことで、15台のJUngleでツリートポロジーを構成させた。</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="treeoperationlog">TreeOperationLog</h1> <ul> <li>TreeOperationLogには、Jungleのノード編集の履歴が入っている。</li> <li>TreeOperationLogはAliceでも扱えるようシリアライズされている</li> <li>Aliceによって他のノードへTreeOperationLogを送り、そこでTreeOperationLogと同じ編集をさせることで、トポロジー上でのデータの整合性を取る。</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-6">用意したスクリプト</h1> <ul> <li>任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-7">結果</h1> <ul> <li>無事7台の子ノードJungleからデータが書き込まれ、ルートノードJungleへデータがmergeされた時間を計測できた</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-8">まとめ</h1> <ul> <li>JungleとAliceで生じていたJava等のバージョンのズレを修正した</li> <li>測定用に、任意のnodeと任意のトポロジーを形成するperlスクリプトを作成した</li> <li>mavenリポジトリのキャッシュをクリアすることアップデートできた</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-9">今後の課題</h1> <ul> <li> <p>今回構築した測定環境で、現在のJungleのmergeや分散アルゴリズムを研究したい</p> </li> <li>再接続時に、Jungleのノードのデータを再ロードできるプロトコルを定義したい <ul> <li>方法としては、他のノード、もしくはディスクからデータを読み込む</li> </ul> </li> <li>ディスク上にしかないツリートポロジーを読み出すプロトコルを定義したい</li> </ul> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-10">計測結果</h1> </div> <div class='slide '> <!-- _S9SLIDE_ --> <h1 id="section-11">ジョブスクリプト</h1> <style type="text/css"> <!-- *{ font:nomal 100% 'PT Sans'; } ul > li{ list-style-type:disc; } .slide h1{ text-align:left; color:#777777; font:bold 40px/1.13 'PT Sans', sans-serif; margin-bottom: 50px; } div#slide1 h1{ text-align:left; color:#777777; font:bold 60px 'PT Sans', sans-serif; margin-bottom: 50px; } pre > code{ font-family:'Droid Sans Mono', 'Courier New', monospace; } img[alt="opt"]{ display: block; margin-left: auto; margin-right: auto; } img[alt="right"]{ margin-right: 0; } table { margin-left: auto; margin-right: auto; } th { font-size: 120%; } --> </style> <!-- === end markdown block === --> </div> </div><!-- presentation --> </body> </html>