【文献】
小林 弘明,NetroSphereの普及に向けた取り組み,NTT技術ジャーナル,一般社団法人電気通信協会,2016年 8月 1日,第28巻,第8号,pp.28-30
(58)【調査した分野】(Int.Cl.,DB名)
前記サブパーティション生成部は、複数の前記サブパーティションに各々含まれる前記頂点の数を均等にし、複数の前記サブパーティション間をまたぐ辺数を最小化するように、複数の前記頂点の各々を複数の前記サブパーティションのうち何れかに割り当てる
ことを特徴とする請求項2に記載の計算装置。
【背景技術】
【0002】
複数のコンピュータを有する分散処理システムのフレームワークとして、非特許文献1にはマップレデュース(MapReduce)が開示されている。但し、マップレデュースは、ある処理の結果を次の処理で利用するようなイテレーティブな処理には不向きであり、この種の処理には、非特許文献2に開示されているBSP(bulk-synchronous parallel)が適していると考えられる。
【0003】
BSPを適用した例として、非特許文献3には、「Pregel」という分散処理フレームワークが開示されている。BSPにおいては、全体の処理内容をグラフG=(V,E)として表現することができる。ここで、Vは頂点(vertex)の集合であり、各頂点は、細分化された個々の処理内容に対応する。また、Eは辺(edge)の集合であり、辺は各頂点間の情報伝達を行う経路に対応する。
【0004】
BSPでは、「スーパーステップ(superstep)」という処理単位を繰り返し実行することにより、分散環境でのデータ処理を実行する。
図1は、BSP計算モデルを説明するための図である。一つのスーパーステップは、
図1に示すように、フェーズPH1として「ローカル計算(LC:Local computation)」、フェーズPH2として「データ交換(COM:Communication)」、フェーズPH3として「同期(SYNC:Synchronization)」の3つのフェーズPH1〜PH3を有している。
【0005】
具体的には、
図1示すように、複数の頂点v
1〜v
4は、フェーズPH1において、これら頂点v
1〜v
4内の計算処理(ローカル計算(LC))を実行する。続いて、フェーズPH2において、各頂点v
1〜v
4が保持しているローカル計算の結果であるデータについて、頂点v
1〜v
4間でのデータ交換を実行する。次に、フェーズPH3において、各頂点の処理時刻の同期処理を行う。より詳細には、すべての頂点v
1〜v
4間でのデータ交換の終了を待つ。そして、Step1として、一つのスーパーステップの処理(PH1〜PH3)が終了すると、各頂点v
1〜v
4はその計算結果を保持した上で、次のスーパーステップの処理であるStep2へと進む。以下、同様にして、複数のスーパーステップが繰り返される。
【0006】
ここで、
図2を参照し、具体的なアプリケーションとして、交通システムのシミュレーションにBSPを適用した例を説明する。
図2においては、各交差点が頂点v
1〜v
4に対応付けられ、各交差点を結ぶ道路が辺e
1〜e
6に対応付けられている。ここで、辺(edge)は一方通行であり、双方向の道路は2つの辺に対応付けられる。ある頂点(vertex)から見て、車両が出てゆく方向の辺(edge)を、「出力辺(outgoing edge)」と呼び、車両が流入する方向の辺を「入力辺(incoming edge)」と呼ぶ。例えば、
図2において、頂点v
2から見ると、辺e
1は入力辺であり、辺e
2は出力辺になる。逆に、頂点v
1から見ると、辺e
1は出力辺であり、辺e
2は入力辺になる。
【0007】
図1にて述べたフェーズPH1(ローカル計算)では、例えば、所定時間内における、各頂点v
1〜v
4に対応付けられている交差点内の信号の色(赤・黄・青)や車両の動き等と、各頂点v
1〜v
4に接続されている出力辺(outgoing edge)に対応する道路内の車両の動き(車両の台数や平均速度)とをシミュレートする。また、上述したフェーズPH2(データ交換)では、出力辺(outgoing edge)を介して接する他の頂点に対して、該出力辺を介して出てゆく車両の情報を送信するとともに、入力辺(incoming edge)を介して接する他の頂点から、該入力辺を介して流入する車両の情報を受信する。また、上述したフェーズPH3(SYNC)では、各頂点の処理時刻の同期処理を行う。
【0008】
このように、交差点単位で頂点(vertex)を定め、分散処理を実行することにより、大規模な交通システムの挙動を短時間でシミュレートできる。ここで、分散処理システムでは、一台のサーバ(コンピュータ)または仮想マシンに、一または複数の頂点が割り当てられる。これら頂点が割り当てられるサーバまたは仮想マシンをワーカ(worker)と呼ぶ。また、複数のワーカに一または複数の頂点を割り当てる際に、割り当てるデータや処理対象を生成する処理を「パーティショニング」と呼ぶ。
【0009】
次に、
図3を参照し、パーティショニングの一例を説明する。
図3においてグラフG全体は12個の頂点v
1〜v
12を有しており、これらが4個ずつ、3つのパーティションPT1〜PT3に割り当てられている。そして、パーティションPT1〜PT3は、3台のワーカWK1〜WK3に、それぞれ割り当てられる。パーティショニングは、処理速度/効率性を大きく左右するため、如何なる手法を採るが重要になる。既存のパーティショニング方法、例えば非特許文献4に開示されている方法は、パーティションの大きさ(含まれる頂点の数)をなるべく均等にし、パーティション間をまたぐ辺(edge)数をなるべく少なくすることを目指すものであった。これにより、複数のワーカの処理時間のばらつきを小さくでき、ワーカ間の通信量も最小化できるためである。このような手法をPBM(Partitioning for Balancing workload while Minimizing Inter-partition edges)と呼ぶこととする。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】Dean, J., et al., “MapReduce: Simplified Data Processing on Large Clusters,” OSDI '04, 2004.
【非特許文献2】Valiant, L., et al., “A bridging model for parallel computation,”Communications of the ACM, 1990.
【非特許文献3】Malewicz, G., et al., “Pregel: A System for Large-Scale Graph Processing,” SIGMOD '10, 2010.
【非特許文献4】藤森 俊匡,塩川 浩昭,鬼塚 真、分散グラフ処理におけるグラフ分割の最適化(第7回データ工学と情報マネジメントに関するフォーラム(DEIM2015),2015年3月)、[online]、[平成28年8月5日検索]、インターネット〈 URL:http://db-event.jpn.org/deim2015/paper/68.pdf 〉
【発明の概要】
【発明が解決しようとする課題】
【0011】
ところで、分散処理システムでは、ワーカの動的な追加や削除が発生する場合がある。このような場合は、パーティショニングをやり直すこと、すなわち再パーティショニングが必要になる。しかし、上述した従来のパーティショニング手法(PBM)では、再パーティショニング時の計算量が大きくなるという問題が生じる。また、PBMでは、再パーティショニング時に発生する、頂点とワーカとのマッピングの変更量を考慮していないため、再パーティショニングに基づく再割当時にワーカ間でデータの転送が大量に発生する可能性がある。
【0012】
図4を参照し、その問題点の一例を説明する。
図4は、上述した
図3のグラフGに対して、PBMによる再パーティショニングを行った結果を示す。まず、
図4は、
図3の状態に対してワーカの数が一つ増加している(ワーカWK4が追加されている)。その結果、グラフG全体は、パーティションPT1〜PT4に再パーティショニングされている。
図3と
図4とを比較すると、
図4にてハッチングを施した6個の頂点v
2,v
4,v
5,v
6,v
8,v
12は、マッピングされるワーカに変化が生じている。すなわち、全体の半数(6/12)に渡る頂点のマッピングが変更されており、それに応じた計算量や、データの伝送量が、再パーティショニングに基づく再割当時に発生することになる。
【0013】
この発明は上述した事情に鑑みてなされたものであり、ワーカの状態変更に伴う処理負荷を軽減できる計算装置および計算方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記課題を解決するため本発明にあっては、下記構成を有することを特徴とする。
請求項1記載の計算装置にあっては、並列して計算処理を行う複数のワーカと、複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置とを有する計算装置であって、前記マスタ装置は、複数の前記ワーカに対する複数の前記頂点の配置を、
コンシステントハッシュ法によって決定するパーティショニング部を有することを特徴とする
。
【0015】
請求項
1の構成によれば、ワーカの構成に変化が生じた際、パーティショニング部は、
コンシステントハッシュ法によって、頂点の配置を再決定する。これにより、再配置時に転送するデータ量を少なくすることができ、計算装置の処理負荷を軽減できる。
【0016】
さらに、請求項
2記載の構成にあっては、請求項
1に記載の計算装置において、前記マスタ装置は、複数の前記頂点を複数のサブパーティションの何れかに割り当てるサブパーティション生成部をさらに有し、前記パーティショニング部は、前記サブパーティションを単位として、複数の前記ワーカに対する複数の前記頂点の配置を決定することを特徴とする。
【0017】
この構成によれば、複数のサブパーティションに含まれる頂点の数をなるべく均等にし、また、複数のサブパーティションをまたぐ辺数をなるべく小さくすることによって、計算装置の実行速度を向上させることができる。
【0018】
さらに、請求項
3記載の構成にあっては、請求項
2に記載の計算装置において、前記サブパーティション生成部は、複数の前記サブパーティションに各々含まれる前記頂点の数を均等にし、複数の前記サブパーティション間をまたぐ辺数を最小化するように、複数の前記頂点の各々を複数の前記サブパーティションのうち何れかに割り当てることを特徴とする。
【0019】
この構成によれば、複数のサブパーティションに含まれる頂点の数を均等にし、また、複数のサブパーティションをまたぐ辺数を最小化できるため、計算装置の実行速度を一層向上させることができる。
【0020】
また、請求項
4記載の計算方法にあっては、並列して計算処理を行う複数のワーカと、複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置とを有する計算装置が行う計算方法であって、前記マスタ装置が、複数の前記ワーカに対する複数の前記頂点の配置を、
コンシステントハッシュ法によって決定することを特徴とする。
【0021】
この構成によれば、請求項1に係る構成と同様に、ワーカの構成に変化が生じた際、再配置時に転送するデータ量を少なくすることができ、計算装置の処理負荷を軽減できる。
【発明の効果】
【0022】
本発明によれば、ワーカの状態変更に伴う処理負荷を軽減できる。
【発明を実施するための形態】
【0024】
〈実施形態の構成〉
次に、
図5を参照し、本発明の一実施形態による分散処理システムSの構成を説明する。
分散処理システムSは、マスタ装置10と、並列して計算処理を行うP台のサーバ20−1〜20−Pと、これらを接続するネットワーク30と、を有している。
マスタ装置10およびサーバ20−1〜20−Pは、CPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)等、一般的なコンピュータとしてのハードウエアを備えており、HDDには、OS(Operating System)、アプリケーションプログラム、各種データ等が格納されている。OSおよびアプリケーションプログラムは、RAMに展開され、CPUによって実行される。
図5において、マスタ装置10の内部は、RAMに展開されたアプリケーションプログラム等によって実現される機能を、ブロックとして示している。
【0025】
本実施形態において、個々のサーバ20−1〜20−Pは、個々のワーカとして機能することとする。すなわち、分散処理システムSはP個のワーカを有している。分散処理システムSで処理される頂点をv
1〜v
nとすると、各頂点v
1〜v
nは、m個のサブパーティションSPT
1〜SPT
mのうち何れかに割り当てられ、これらサブパーティションSPT
1〜SPT
mが、サーバ20−1〜20−Pのうち何れかに割り当てられる。ここで、サブパーティションとは、十分に小さくしたグラフの断片であり、一つのサブパーティションに含まれる頂点の数は、一台のサーバに割当可能な頂点の数よりも十分に小さくしておくとよい。
【0026】
また、マスタ装置10は、頂点v
1〜v
nとサーバ20−1〜20−Pとを管理するために、頂点・辺テーブル102と、サブパーティション・テーブル104と、サブパーティション生成部106と、ワーカ・テーブル108と、パーティショニング部110と、ワーカ制御部112と、を有している。
【0027】
頂点・辺テーブル102は、頂点IDと、頂点データと、辺データと、を記憶する。ここで、頂点IDは、頂点v
1〜v
nを一意に特定する番号であり、例えば、「1」〜「n」の自然数にするとよい。頂点データは、各頂点IDに対応付けられ、各頂点の処理内容を特定するデータである。また、辺データは、各頂点を接続する辺(edge)の処理内容を特定するデータである。
サブパーティション・テーブル104は、サブパーティションSPT
1〜SPT
mの各々に対して、次のデータを記憶する。
(1)サブパーティションID、
(2)サブパーティション・ハッシュ
(3)複数の頂点ID
ここで、「サブパーティションID」とは、サブパーティションSPT
1〜SPT
mを一意に特定する番号である。
【0028】
また、「サブパーティション・ハッシュ」とは、サブパーティションIDに対して所定のハッシュ関数を施して得られたハッシュ値であり、これもサブパーティションを一意に特定するものである。あるサブパーティションに対応付けてサブパーティション・テーブル104に記憶される頂点IDは、当該サブパーティションに属する頂点を表すデータになる。
【0029】
サブパーティション生成部106は、分散処理システムSで実行しようとする処理内容に応じて、サブパーティションSPT
1〜SPT
mの内容を設定する。すなわち、頂点v
1〜v
nをサブパーティションSPT
1〜SPT
mに割り当てるように、サブパーティション・テーブル104の内容を設定する。
【0030】
また、ワーカ・テーブル108は、各ワーカすなわちサーバ20−1〜20−Pの各々に対して、次のデータを記憶する。
(1)ワーカID
(2)ワーカ・ハッシュ
(3)一または複数のサブパーティションID
ここで、「ワーカID」とは、ワーカすなわちサーバ20−1〜20−Pを一意に特定する番号であり、サブパーティションIDとは重複しない値に設定される。
【0031】
また、「ワーカ・ハッシュ」とは、ワーカIDに対して、上記ハッシュ関数(サブパーティション・ハッシュを求めるハッシュ関数と同一のハッシュ関数)を施して得られたハッシュ値であり、これもワーカを一意に特定するものである。また、「一または複数のサブパーティションID」とは、当該ワーカにパーティショニングされた一または複数のサブパーティションのIDである。本実施形態においては、コンシステントハッシュ法を用いて、サーバ20−1〜20−PとサブパーティションSPT
1〜SPT
mとを対応付ける。このため、上述したように、ワーカ・ハッシュと、サブパーティション・ハッシュとは、同一のハッシュ関数を用いて生成される。なお、コンシステントハッシュ法は、「Karger, D., et al., "Consistent hashing and random trees", ACM STOC '97, 1997.」等に詳述されている。
【0032】
パーティショニング部110は、実働中のワーカすなわちサーバ20−1〜20−Pが変化すると、これに応じてワーカ・テーブル108の内容を更新する。すなわち、実働中のワーカであるサーバ20−1〜20−Pに対して、サブパーティションSPT
1〜SPT
mをパーティショニングする。
【0033】
ワーカ制御部112は、ワーカ・テーブル108の内容に基づいて、サーバ20−1〜20−Pを制御する。すなわち、ワーカ・テーブル108に規定されている通りに、サーバ20−1〜20−P間で、サブパーティションの内容(頂点v
1〜v
nの実体も含む)を相互に伝送させる。そして、サーバ20−1〜20−PにおけるサブパーティションSPT
1〜SPT
mの配置がワーカ・テーブル108の通りになると、各サーバ20−1〜20−Pは、スーパーステップを繰り返し実行する。
【0034】
「スーパーステップ」は、
図1に示した通り、フェーズPH1(ローカル計算)と、フェーズPH2(データ交換)と、フェーズPH3(同期)とを有している。これにより、サーバ20−1〜20−Pにおいて、分散処理が実行される。
【0035】
〈実施形態の動作〉
(サブパーティション・テーブル104の設定)
次に、本実施形態の動作を説明する。
まず、分散処理システムSで行うべき処理内容に応じて、頂点・辺テーブル102には、頂点v
1〜v
nおよびこれらを結ぶ辺(edge)が特定されていることとする。サブパーティション生成部106は、これら頂点v
1〜v
nをサブパーティションSPT
1〜SPT
mに割り当てる。その手法は、上述したPBMを適用する。すなわち、各サブパーティションSPT
1〜SPT
mの大きさ(含まれる頂点の数)をなるべく均等にするとともに、サブパーティションをまたぐ辺をなるべく少なくするように(好ましくは最小化するように)、割当を行う。
【0036】
サブパーティション生成部106は、これらサブパーティションSPT
1〜SPT
mに対してサブパーティション・ハッシュを生成し、サブパーティションID、サブパーティション・ハッシュおよび複数の頂点IDをサブパーティション・テーブル104に書き込む。
【0037】
(ワーカ・テーブル108の設定)
サブパーティション・テーブル104が完成すると、パーティショニング部110は、ワーカであるサーバ20−1〜20−Pに対してワーカ・ハッシュを生成し、サブパーティションSPT
1〜SPT
mをサーバ20−1〜20−Pにパーティショニングする。そして、パーティショニング部110は、ワーカID、ワーカ・ハッシュおよび一または複数のサブパーティションIDをワーカ・テーブル108に書き込む。
【0038】
ここで、サブパーティションSPT
1〜SPT
mのサーバ20−1〜20−Pに対するパーティショニングは、サーバ20−1〜20−Pのワーカ・ハッシュに対する「距離」が短い順に、サブパーティション・ハッシュを検索し、対応するサブパーティションSPT
1〜SPT
mを当該サーバに割り当てるとよい。
【0039】
ここで、「距離」とは、様々な数値を適用することができるが、例えば、ワーカ・ハッシュとサブパーティション・ハッシュとのXOR(排他的論理和)を適用することができる。以上のようにして、ワーカ・テーブル108の内容が設定されると、ワーカ制御部112は、ワーカ・テーブル108の内容を反映させるように、サーバ20−1〜20−Pに対して、サブパーティションSPT
1〜SPT
mの配置を変更させる。
【0040】
(ワーカ・テーブル108の再設定)
サーバ20−1〜20−Pにおいて分散処理を実行中にサーバ20−1〜20−Pの構成が変更されると(例えばサーバの数が増加または減少すると)、パーティショニング部110は、変更後のサーバ20−1〜20−Pに応じて、ワーカ・テーブル108を再設定する。そして、ワーカ制御部112は、再設定されたワーカ・テーブル108の内容を、構成変更後のサーバ20−1〜20−Pに反映させる。
【0041】
ここで、サーバ20−1〜20−Pの構成が変更された場合であっても、継続して使用されるサーバは、同一のワーカIDおよびワーカ・ハッシュを維持することとする。なお、サーバの構成が変更された場合であっても、サブパーティションSPT
1〜SPT
mの構成は特に変更する必要はないため、サブパーティション・テーブル104は、従前の内容を維持する。
【0042】
(具体的な動作例)
次に、
図6(a)〜(d)を参照し、本実施形態の具体的な動作例を説明する。まず
図6(a)は、分散処理システムSにおいて処理される複数の頂点v
1〜v
nを示す。なお、各頂点v
1〜v
nを結ぶ辺(edge)については、図示を省略する。
【0043】
次に、
図6(b)は、サブパーティション生成部106が、頂点v
1〜v
nをサブパーティションSPT
1〜SPT
mに割り当てた状態を示す。上述したように、サブパーティション生成部106は、各サブパーティションSPT
1〜SPT
mの大きさ(含まれる頂点の数)をなるべく均等にするため、図示の例では、含まれる頂点の数は3個または4個になっている。
【0044】
次に、
図6(c)は、サブパーティションSPT
1〜SPT
mを3台のサーバ20−1〜20−3にパーティショニングした例を示す。次に、
図6(d)は、ワーカの構成が変更されたため、サブパーティションSPT
1〜SPT
mの再パーティショニングが行われた例を示す。すなわち、3台のサーバ20−1〜20−3に加えて、サーバ20−4がワーカとして追加されている。
【0045】
ワーカの構成が変更される前からワーカを構成していたサーバ20−1〜20−3は、同一のワーカIDおよびワーカ・ハッシュを維持する。このため、各サーバ20−1〜20−3にマッピングされていたサブパーティションは、マッピング状態をできるだけ維持する傾向が強くなる。
図6(c),(d)を比較すると、
図6(c)においてサーバ20−1〜20−3にマッピングされていた各1個(計3個)のサブパーティションが、サーバ20−4にマッピングされている。しかし、残りの9個のサブパーティションについては、マッピング状態が全く変化していないことが解る。
【0046】
〈実施形態の効果〉
以上のように、本実施形態によれば、コンシステントハッシュ法によってサブパーティションSPT
1〜SPT
mをワーカ(サーバ20−1〜20−P)にマッピングしたため、ワーカの構成を変更する際に、サブパーティションSPT
1〜SPT
mおよびこれらに含まれる頂点v
1〜v
nを移動するための処理量および通信量を小さくすることができ、分散処理システムSの処理負担を軽減できる。この結果、特に、分散処理の実行中に、ワーカの追加/削除が生じた際、分散処理の中断時間を短くできるという利点が生じる。
【0047】
また、コンシステントハッシュ法によれば、サブパーティションの数をm、増減後のワーカ数をPとすると、再パーティショニング時のマッピングの変更量は、平均「m/P」に抑制することができる。これにより、ワーカ数Pが大きいほど、その効果が顕著に現れる。
【0048】
さらに、本実施形態における、サブパーティション生成部106は、各サブパーティションSPT
1〜SPT
mに属する頂点v
1〜v
nの数と、サブパーティション間をまたぐ辺数とに基づいて、各頂点をサブパーティションに割り当てる。すなわち、各サブパーティションSPT
1〜SPT
mの大きさ(含まれる頂点の数)をなるべく均等にするとともに、サブパーティションをまたぐ辺をなるべく少なくするように、頂点v
1〜v
nをサブパーティションSPT
1〜SPT
mにマッピングする。これにより、各ワーカすなわちサーバ20−1〜20−Pの処理負担を均等化できるとともに、各ワーカ間の通信量も小さくすることができる。
【0049】
〈変形例〉
本発明は上述した実施形態に限定されるものではなく、種々の変形が可能である。上述した実施形態は本発明を理解しやすく説明するために例示したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部を他の構成に置換することも可能である。また、図中に示した制御線や情報線は説明上必要と考えられるものを示しており、製品上で必要な全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。上記実施形態に対して可能な変形は、例えば以下のようなものである。
【0050】
(1)上記実施形態におけるマスタ装置10のハードウエアは一般的なコンピュータによって実現できるため、上述したマスタ装置10内の処理を実行するプログラム等を記憶媒体に格納し、または伝送路を介して頒布してもよい。
【0051】
(2)上記実施形態におけるワーカは物理サーバであるサーバ20−1〜20−Pであったが、サーバ20−1〜20−Pにおいて仮想マシンを起動させ、これら仮想マシンをワーカにしてもよい。
【0052】
(3)上記実施形態においては、ワーカ(サーバ20−1〜20−P)に対するサブパーティションSPT
1〜SPT
mの配置を、コンシステントハッシュ法を用いて決定した。しかし、サブパーティションSPT
1〜SPT
mを配置する手法はコンシステントハッシュ法に限定されるわけではない。すなわち、ランダムに再配置した場合よりも転送するデータ量が少ない手法であれば、様々な手法を採用することができる。