研究実績の概要 |
有用なビッグデータ処理の多くが,並列性を引き出しやすい性質をもつ代数的構造(モノイド)と見なせることを利用し,データの分割と並列処理を行い,中間処理結果を,新開発するロック不要並列マージ処理を行う方式の開発を進めた。このマージ方式は,B+木の葉にデータがキー順で格納されていること,まだ葉に格納されていない分まで含めてキー空間全体を分割可能であること,そして主記憶上のB+木であるために一時的にオーバーフローが可能である事を利用している。 ビッグデータDに作用し,キーと値のペアの列に変換する関数をfとする。すなわち,f(D)=<(k1, v1), …, (km, vm)>とする。このペア列の要素に二項演算@を適用することによって,ビッグデータ処理の結果(...(< (k1, v1) > @ < (k2, v2) >) @ ... @ < (km, vm) >)が得られ,この処理結果もまたキーと値のペア列として表現されるとする。関数fが準同型写像であるとき,データDを< D1, ..., Dn >と分割して,f(< D1, ..., Dn>) = < f(D1), ..., f(Dn) >である。演算@がモノイドを構成するとき(@は結合則を満たし,単位元を持つ),ビッグデータ処理の結果はf(D1) @ f(D2) @ ... @ f(Dn)によって得られ,このとき,関数fおよび二項演算@適用の順番は自由度があり,並列に行うことができる。以上の処理形式は,本質的にMapReduceシステムで行う処理と同等であり,多くの有用なビッグデータ処理をこの形式によって行うことが可能である。 以上のような処理内容のプログラム記述とデバッグを行い,当研究室で使用可能となっている80コア・1TBメモリ(HP社ProLiant DL980)および240コア・16TBメモリ(HP社BL920s)等のメニーコアマシンで並列計算が可能であることを確認した。
|
今後の研究の推進方策 |
第一フェーズで作成された主記憶上の中間結果T1, ..., Tnに対して,本研究で新提案するロック不要並列マージ処理することにより最終結果を得る。このマージ処理は本質的にT1 @ ... @ Tnを行う。処理に先立って,中間結果の格納にB+木以外を用いた場合は,B+木形式に変換しておく。B+木では,すべてのキーは葉のみに存在する。つまり,B+木の各葉ノードはキー空間を排他的に分割している。葉より一段上の中間ノードに着目すると,このノードにあるキーは,この木に格納される可能性があるすべてのキー空間を排他的に分割しているとみなすことができる。このB+木の葉には任意個のキーの追加ができること(すなわちオーバーフロー可能なこと)を仮定すれば,これら5つの排他的区間にそれぞれ独立したスレッドを割当て,マージしたい任意個のB+木に対して,対応キー区間のキーを検索範囲問合せを発行して,葉にマージすることにより,このB+木に対して何らロック操作を行うことなく,並列にマージ処理を行うことができる。 初年度の開発部分と次年度開発部分を合わせ,ビッグデータ処理の典型的なアプリケーションを,本システムを用いて記述し,提案方式がビッグデータ処理において有効である事を検証する。初年度と同様,本研究費で購入する計算機を用いてプログラム記述とデバッグを行い,当研究室で使用可能となっているメニーコアマシンにコードをアップロードしてビッグデータの並列処理実験を行う。
|