Mercurial > hg > Papers > 2014 > nobuyasu-master
comparison paper/chapter3.tex @ 69:4f31182c8244
fixed
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 01 Feb 2014 22:41:24 +0900 |
parents | d770a2b534b3 |
children | 4e8bfd65768f |
comparison
equal
deleted
inserted
replaced
68:01fadc801c18 | 69:4f31182c8244 |
---|---|
96 動くようにしたい. | 96 動くようにしたい. |
97 そのために必要なことはトポロジーの形成と, サーバノード間でのデータアクセス機構である. | 97 そのために必要なことはトポロジーの形成と, サーバノード間でのデータアクセス機構である. |
98 また, データ分散のために形成したトポロジー上で扱うデータを決めなければならない. | 98 また, データ分散のために形成したトポロジー上で扱うデータを決めなければならない. |
99 | 99 |
100 | 100 |
101 \subsection{ツリートポロジーの形成} | 101 \subsection{ツリートポロジーの形成とルーティング} |
102 分散データーベス Jungle で形成されるネットワークトポロジーはツリー構造を想定している. | 102 分散データーベス Jungle で形成されるネットワークトポロジーはツリー構造を想定している. |
103 ツリー構造ならば, データの整合性をとる場合, 一度トップまでデータを伝搬させることで行える. | 103 ツリー構造ならば, データの整合性をとる場合, 一度トップまでデータを伝搬させることで行える. |
104 トップもしくはトップまでの間にあるサーバノードでデータ伝搬中に衝突が発生したらMergeを行い, Mergeの結果を改めて伝搬すれば | 104 トップもしくはトップまでの間にあるサーバノードでデータ伝搬中に衝突が発生したらMergeを行い, Mergeの結果を改めて伝搬すれば |
105 よいからである. | 105 よいからである. |
106 また, リング型, スター型, メッシュ側ではデータ編集の結果を他サーバノードに流すとき | 106 また, リング型, スター型, メッシュ側ではデータ編集の結果を他サーバノードに流すとき |
138 \label{fig:topology_mesh} | 138 \label{fig:topology_mesh} |
139 \end{center} | 139 \end{center} |
140 \end{minipage} | 140 \end{minipage} |
141 \end{figure} | 141 \end{figure} |
142 | 142 |
143 | |
144 そこで当研究室で開発を行っている並列分散フレームワークである Alice を使用する. | 143 そこで当研究室で開発を行っている並列分散フレームワークである Alice を使用する. |
145 Alice はユーザが望んだマシンへの接続や必要なデータへのアクセスを行う機構と, 接続トポロジー | 144 Alice はユーザが望んだマシンへの接続や必要なデータへのアクセスを行う機構と, ネットワークトポロジー |
146 形成機能を提供している. | 145 形成機能を提供している. |
147 | 146 |
148 % トポロジー形成の説明をする. 重要さなども。 | 147 % トポロジー形成の説明をする. 重要さなども。 |
149 % トポロジーの形成は容易ではない. | 148 % トポロジーの形成は容易ではない. |
150 % Alice が必要な機能を提供してくれることを述べる | 149 % Alice が必要な機能を提供してくれることを述べる |
153 | 152 |
154 | 153 |
155 \section{並列分散フレームワークAlice} | 154 \section{並列分散フレームワークAlice} |
156 Alice は当研究室で開発している並列分散フレームワークである. | 155 Alice は当研究室で開発している並列分散フレームワークである. |
157 Alice はデータを DataSegment, タスクを CodeSegment という単位で扱うプログラミングを提供している. | 156 Alice はデータを DataSegment, タスクを CodeSegment という単位で扱うプログラミングを提供している. |
158 コードの部分となる CodeSegment は, 計算に必要なデータである DataSegment が揃い次第実行が行われる(図\ref{fig:cs_ds}). | 157 タスクの部分となる CodeSegment は, 計算に必要なデータである DataSegment が揃い次第実行が行われる(図\ref{fig:cs_ds}). |
159 CodeSegment の結果により出力される新たなデータでは, 別の CodeSegment が実行されるための DataSegment となる. | 158 CodeSegment の結果により出力される新たなデータでは, 別の CodeSegment が実行されるための DataSegment となる. |
160 DataSegment と CodeSegment の組み合わせにより並列・分散プログラミングの依存関係が表される. | 159 DataSegment と CodeSegment の組み合わせにより並列・分散プログラミングの依存関係が表されるようになっている. |
161 | 160 |
162 \begin{figure}[htpb] | 161 \begin{figure}[htpb] |
163 \begin{center} | 162 \begin{center} |
164 \includegraphics[scale=0.70]{figures/cs_ds.pdf} | 163 \includegraphics[scale=0.70]{figures/cs_ds.pdf} |
165 \caption{DataSegment と CodeSegment によるプログラムの流れ} | 164 \caption{DataSegment と CodeSegment によるプログラムの流れ} |
166 \label{fig:cs_ds} | 165 \label{fig:cs_ds} |
167 \end{center} | 166 \end{center} |
168 \end{figure} | 167 \end{figure} |
169 | 168 |
170 \subsection{MessagePack によるシリアライズ} | 169 \subsection{MessagePack によるシリアライズ} |
171 Alice では DataSegment のデータ表現に MessagePack(http://msgpack.org) を利用している. | 170 Alice では DataSegment のデータ表現に MessagePack\cite{msgpack:2013}を利用している. |
172 MessagePack はオブジェクトをバイナリへと変換させるシリアライズライブラリである. | 171 MessagePack はオブジェクトをバイナリへと変換させるシリアライズライブラリである. |
173 Alice によりネットワークを介してデータにアクセスするときは, そのデータが MessagePack でシリアライズが | 172 Alice によりネットワークを介してデータにアクセスするときは, そのデータが MessagePack でシリアライズが |
174 行えることが条件である. | 173 行えることが条件である. |
175 | 174 |
176 | 175 |
177 | 176 |
178 \section{Jungle のデータ分散} | 177 \section{Jungle のデータ分散} |
179 Alice によりトポロジーの形成とデータアクセスの機構が提供された. | 178 Alice によりトポロジーの形成とデータアクセスの機構が提供される. |
180 後はデータ分散の為にどのデータをネットワークに流すのか決めなければならない. | 179 後はデータ分散の為にどのデータをネットワークに流すのか決めなければならない. |
181 そこで選ばれたのが TreeOperationLog である. | 180 そこで選ばれたのが TreeOperationLog である. |
182 TreeOperationLog はデータ編集の履歴になる. | 181 TreeOperationLog はデータ編集の履歴になる. |
183 どの Node にどのような操作をしたのかという情報が入っている. | 182 どの Node にどのような操作をしたのかという情報が入っている. |
184 この TreeOperationLog を Alice を使って他サーバノードに送り, データの編集をしてもらうことで | 183 この TreeOperationLog を Alice を使って他サーバノードに送り, データの編集をしてもらうことで |
195 Jungle は非破壊でオンメモリにデータを保持している. | 194 Jungle は非破壊でオンメモリにデータを保持している. |
196 だが, オンメモリのままでは電源が落ちた際にデータが失われてしまう. | 195 だが, オンメモリのままでは電源が落ちた際にデータが失われてしまう. |
197 ディスクからデータを読み込むことでデータの復旧を行えるようにしたい. | 196 ディスクからデータを読み込むことでデータの復旧を行えるようにしたい. |
198 そこで, ログによるデータの永続性の実装を行う. | 197 そこで, ログによるデータの永続性の実装を行う. |
199 | 198 |
200 Jungleの永続性実装の余地としてJournalという機能が用意されている. | 199 Jungleの永続性実装の余地としてJournalという機能が元々用意されている. |
201 このJournalにはディスクへ書き出すためのクラスとしてWriterが用意されている. | 200 このJournalにはディスクへ書き出すためのクラスとしてWriterが用意されている. |
202 Jungleはデータの編集が完了した際にこのWriterクラスのwrite関数を呼び出すようになっている. | 201 Jungleはデータの編集が完了した際にこのWriterクラスのwrite関数を呼び出すようになっている. |
203 | 202 |
204 このJournalとWriterクラスを新たに用意し, ディスクへと書き込み行える機能を実装する. | 203 このJournalとWriterクラスを新たに用意し, ディスクへと書き込みが行える機能を実装する. |
205 このとき, ログをどのようなデータ表現でハードディスクへと書きだすかという問題が発生するが, これは Alice を使うことで | 204 このとき, ログをどのようなデータ表現でハードディスクへと書きだすかという問題が発生するが, これは Alice を使うことで |
206 解決している. | 205 解決している. |
207 Aliceを用いるためMessagePackによりシリアライズ可能な TreeOperationLog ができる. | 206 Aliceを用いるためMessagePackによりシリアライズ可能な TreeOperationLog ができる. |
208 このシリアライズ可能な TreeOperationLog をそのままハードディスクへ書き込むこととでログの永続性ができる. | 207 このシリアライズ可能な TreeOperationLog をそのままハードディスクへ書き込むこととでログの永続性ができる. |
209 | 208 |