(57)【要約】【課題】分散処理システムにおいて、ワーカの状態変更に伴う処理負荷を軽減する。【解決手段】並列して計算処理を行う複数のワーカ（２０−１〜２０−Ｐ）と、複数のワーカ（２０−１〜２０−Ｐ）の中の処理単位である複数の頂点（ｖ1〜ｖn）と、ワーカ（２０−１〜２０−Ｐ）とを管理するマスタ装置（１０）とを有する計算装置（Ｓ）において、マスタ装置（１０）は、複数のワーカ（２０−１〜２０−Ｐ）に対する複数の頂点（ｖ1〜ｖn）の配置を、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法によって決定するようにした。【選択図】図５
2018032345.tif 000002
【特許請求の範囲】
【請求項１】
並列して計算処理を行う複数のワーカと、
複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置と
を有する計算装置であって、
前記マスタ装置は、複数の前記ワーカに対する複数の前記頂点の配置を、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法によって決定するパーティショニング部を有する
ことを特徴とする計算装置。
【請求項２】
前記手法は、コンシステントハッシュ法であることを特徴とする請求項１に記載の計算装置。
【請求項３】
前記マスタ装置は、複数の前記頂点を複数のサブパーティションの何れかに割り当てるサブパーティション生成部をさらに有し、
前記パーティショニング部は、前記サブパーティションを単位として、複数の前記ワーカに対する複数の前記頂点の配置を決定する
ことを特徴とする請求項２に記載の計算装置。
【請求項４】
前記サブパーティション生成部は、複数の前記サブパーティションに各々含まれる前記頂点の数を均等にし、複数の前記サブパーティション間をまたぐ辺数を最小化するように、複数の前記頂点の各々を複数の前記サブパーティションのうち何れかに割り当てる
ことを特徴とする請求項３に記載の計算装置。
【請求項５】
並列して計算処理を行う複数のワーカと、
複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置と
を有する計算装置が行う計算方法であって、
前記マスタ装置が、複数の前記ワーカに対する複数の前記頂点の配置を、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法によって決定する
ことを特徴とする計算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータによる分散処理に用いて好適な計算装置および計算方法に関する。
【背景技術】
【０００２】
複数のコンピュータを有する分散処理システムのフレームワークとして、非特許文献１にはマップレデュース（MapReduce）が開示されている。但し、マップレデュースは、ある処理の結果を次の処理で利用するようなイテレーティブな処理には不向きであり、この種の処理には、非特許文献２に開示されているＢＳＰ（bulk-synchronous parallel）が適していると考えられる。
【０００３】
ＢＳＰを適用した例として、非特許文献３には、「Pregel」という分散処理フレームワークが開示されている。ＢＳＰにおいては、全体の処理内容をグラフＧ＝（Ｖ，Ｅ）として表現することができる。ここで、Ｖは頂点（vertex）の集合であり、各頂点は、細分化された個々の処理内容に対応する。また、Ｅは辺（edge）の集合であり、辺は各頂点間の情報伝達を行う経路に対応する。
【０００４】
ＢＳＰでは、「スーパーステップ（superstep)」という処理単位を繰り返し実行することにより、分散環境でのデータ処理を実行する。図１は、ＢＳＰ計算モデルを説明するための図である。一つのスーパーステップは、図１に示すように、フェーズＰＨ１として「ローカル計算（ＬＣ：Local computation）」、フェーズＰＨ２として「データ交換（ＣＯＭ：Communication）」、フェーズＰＨ３として「同期（ＳＹＮＣ：Synchronization）」の３つのフェーズＰＨ１〜ＰＨ３を有している。
【０００５】
具体的には、図１示すように、複数の頂点ｖ1〜ｖ4は、フェーズＰＨ１において、これら頂点ｖ1〜ｖ4内の計算処理（ローカル計算（ＬＣ））を実行する。続いて、フェーズＰＨ２において、各頂点ｖ1〜ｖ4が保持しているローカル計算の結果であるデータについて、頂点ｖ1〜ｖ4間でのデータ交換を実行する。次に、フェーズＰＨ３において、各頂点の処理時刻の同期処理を行う。より詳細には、すべての頂点ｖ1〜ｖ4間でのデータ交換の終了を待つ。そして、Ｓｔｅｐ１として、一つのスーパーステップの処理（ＰＨ１〜ＰＨ３）が終了すると、各頂点ｖ1〜ｖ4はその計算結果を保持した上で、次のスーパーステップの処理であるＳｔｅｐ２へと進む。以下、同様にして、複数のスーパーステップが繰り返される。
【０００６】
ここで、図２を参照し、具体的なアプリケーションとして、交通システムのシミュレーションにＢＳＰを適用した例を説明する。
図２においては、各交差点が頂点ｖ1〜ｖ4に対応付けられ、各交差点を結ぶ道路が辺ｅ1〜ｅ6に対応付けられている。ここで、辺（edge）は一方通行であり、双方向の道路は２つの辺に対応付けられる。ある頂点（vertex）から見て、車両が出てゆく方向の辺（edge）を、「出力辺（outgoing edge）」と呼び、車両が流入する方向の辺を「入力辺（incoming edge）」と呼ぶ。例えば、図２において、頂点ｖ2から見ると、辺ｅ1は入力辺であり、辺ｅ2は出力辺になる。逆に、頂点ｖ1から見ると、辺ｅ1は出力辺であり、辺ｅ2は入力辺になる。
【０００７】
図１にて述べたフェーズＰＨ１（ローカル計算）では、例えば、所定時間内における、各頂点ｖ1〜ｖ4に対応付けられている交差点内の信号の色（赤・黄・青）や車両の動き等と、各頂点ｖ1〜ｖ4に接続されている出力辺（outgoing edge）に対応する道路内の車両の動き（車両の台数や平均速度）とをシミュレートする。また、上述したフェーズＰＨ２（データ交換）では、出力辺（outgoing edge）を介して接する他の頂点に対して、該出力辺を介して出てゆく車両の情報を送信するとともに、入力辺（incoming edge）を介して接する他の頂点から、該入力辺を介して流入する車両の情報を受信する。また、上述したフェーズＰＨ３（ＳＹＮＣ）では、各頂点の処理時刻の同期処理を行う。
【０００８】
このように、交差点単位で頂点（vertex）を定め、分散処理を実行することにより、大規模な交通システムの挙動を短時間でシミュレートできる。ここで、分散処理システムでは、一台のサーバ（コンピュータ）または仮想マシンに、一または複数の頂点が割り当てられる。これら頂点が割り当てられるサーバまたは仮想マシンをワーカ（worker）と呼ぶ。また、複数のワーカに一または複数の頂点を割り当てる際に、割り当てるデータや処理対象を生成する処理を「パーティショニング」と呼ぶ。
【０００９】
次に、図３を参照し、パーティショニングの一例を説明する。
図３においてグラフＧ全体は１２個の頂点ｖ1〜ｖ12を有しており、これらが４個ずつ、３つのパーティションＰＴ１〜ＰＴ３に割り当てられている。そして、パーティションＰＴ１〜ＰＴ３は、３台のワーカＷＫ１〜ＷＫ３に、それぞれ割り当てられる。パーティショニングは、処理速度／効率性を大きく左右するため、如何なる手法を採るが重要になる。既存のパーティショニング方法、例えば非特許文献４に開示されている方法は、パーティションの大きさ（含まれる頂点の数）をなるべく均等にし、パーティション間をまたぐ辺（edge）数をなるべく少なくすることを目指すものであった。これにより、複数のワーカの処理時間のばらつきを小さくでき、ワーカ間の通信量も最小化できるためである。このような手法をＰＢＭ（Partitioning for Balancing workload while Minimizing Inter-partition edges）と呼ぶこととする。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Dean, J., et al., “MapReduce: Simplified Data Processing on Large Clusters,” OSDI '04, 2004.
【非特許文献２】Valiant, L., et al., “A bridging model for parallel computation,”Communications of the ACM, 1990.
【非特許文献３】Malewicz, G., et al., “Pregel: A System for Large-Scale Graph Processing,” SIGMOD '10, 2010.
【非特許文献４】藤森 俊匡，塩川 浩昭，鬼塚 真、分散グラフ処理におけるグラフ分割の最適化（第7回データ工学と情報マネジメントに関するフォーラム(DEIM2015)，2015年3月）、［online］、［平成２８年８月５日検索］、インターネット〈 URL：http://db-event.jpn.org/deim2015/paper/68.pdf 〉
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、分散処理システムでは、ワーカの動的な追加や削除が発生する場合がある。このような場合は、パーティショニングをやり直すこと、すなわち再パーティショニングが必要になる。しかし、上述した従来のパーティショニング手法（ＰＢＭ）では、再パーティショニング時の計算量が大きくなるという問題が生じる。また、ＰＢＭでは、再パーティショニング時に発生する、頂点とワーカとのマッピングの変更量を考慮していないため、再パーティショニングに基づく再割当時にワーカ間でデータの転送が大量に発生する可能性がある。
【００１２】
図４を参照し、その問題点の一例を説明する。図４は、上述した図３のグラフＧに対して、ＰＢＭによる再パーティショニングを行った結果を示す。まず、図４は、図３の状態に対してワーカの数が一つ増加している（ワーカＷＫ４が追加されている）。その結果、グラフＧ全体は、パーティションＰＴ１〜ＰＴ４に再パーティショニングされている。図３と図４とを比較すると、図４にてハッチングを施した６個の頂点ｖ2，ｖ4，ｖ5，ｖ6，ｖ8，ｖ12は、マッピングされるワーカに変化が生じている。すなわち、全体の半数（６／１２）に渡る頂点のマッピングが変更されており、それに応じた計算量や、データの伝送量が、再パーティショニングに基づく再割当時に発生することになる。
【００１３】
この発明は上述した事情に鑑みてなされたものであり、ワーカの状態変更に伴う処理負荷を軽減できる計算装置および計算方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するため本発明にあっては、下記構成を有することを特徴とする。
請求項１記載の計算装置にあっては、並列して計算処理を行う複数のワーカと、複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置とを有する計算装置であって、前記マスタ装置は、複数の前記ワーカに対する複数の前記頂点の配置を、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法によって決定するパーティショニング部を有することを特徴とする。
さらに、請求項２記載の構成にあっては、請求項１に記載の計算装置において、前記手法は、コンシステントハッシュ法であることを特徴とする。
【００１５】
請求項１，２の構成によれば、ワーカの構成に変化が生じた際、パーティショニング部は、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法（例えばコンシステントハッシュ法）によって、頂点の配置を再決定する。これにより、再配置時に転送するデータ量を少なくすることができ、計算装置の処理負荷を軽減できる。
【００１６】
さらに、請求項３記載の構成にあっては、請求項２に記載の計算装置において、前記マスタ装置は、複数の前記頂点を複数のサブパーティションの何れかに割り当てるサブパーティション生成部をさらに有し、前記パーティショニング部は、前記サブパーティションを単位として、複数の前記ワーカに対する複数の前記頂点の配置を決定することを特徴とする。
【００１７】
この構成によれば、複数のサブパーティションに含まれる頂点の数をなるべく均等にし、また、複数のサブパーティションをまたぐ辺数をなるべく小さくすることによって、計算装置の実行速度を向上させることができる。
【００１８】
さらに、請求項４記載の構成にあっては、請求項３に記載の計算装置において、前記サブパーティション生成部は、複数の前記サブパーティションに各々含まれる前記頂点の数を均等にし、複数の前記サブパーティション間をまたぐ辺数を最小化するように、複数の前記頂点の各々を複数の前記サブパーティションのうち何れかに割り当てることを特徴とする。
【００１９】
この構成によれば、複数のサブパーティションに含まれる頂点の数を均等にし、また、複数のサブパーティションをまたぐ辺数を最小化できるため、計算装置の実行速度を一層向上させることができる。
【００２０】
また、請求項５記載の計算方法にあっては、並列して計算処理を行う複数のワーカと、複数の前記ワーカの中の処理単位である複数の頂点と、前記ワーカとを管理するマスタ装置とを有する計算装置が行う計算方法であって、前記マスタ装置が、複数の前記ワーカに対する複数の前記頂点の配置を、再配置を行う際にランダムに再配置した場合よりも転送するデータ量が少ない手法によって決定することを特徴とする。
【００２１】
この構成によれば、請求項１に係る構成と同様に、ワーカの構成に変化が生じた際、再配置時に転送するデータ量を少なくすることができ、計算装置の処理負荷を軽減できる。
【発明の効果】
【００２２】
本発明によれば、ワーカの状態変更に伴う処理負荷を軽減できる。
【図面の簡単な説明】
【００２３】
【図１】ＢＳＰ計算モデルの説明図である。
【図２】交通システムのシミュレーションに適用したＢＳＰ計算モデルの説明図である。
【図３】ＢＳＰ計算モデルにおけるグラフの模式図である。
【図４】ＢＳＰ計算モデルにおける他のグラフの模式図である。
【図５】本発明の一実施形態による分散処理システムＳのブロック図である。
【図６】一実施形態における（ａ）複数の頂点、（ｂ）サブパーティション、（ｃ）パーティショニング例、および（ｄ）再パーティショニング例の模式図である。
【発明を実施するための形態】
【００２４】
〈実施形態の構成〉
次に、図５を参照し、本発明の一実施形態による分散処理システムＳの構成を説明する。
分散処理システムＳは、マスタ装置１０と、並列して計算処理を行うＰ台のサーバ２０−１〜２０−Ｐと、これらを接続するネットワーク３０と、を有している。
マスタ装置１０およびサーバ２０−１〜２０−Ｐは、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等、一般的なコンピュータとしてのハードウエアを備えており、ＨＤＤには、ＯＳ（Operating System）、アプリケーションプログラム、各種データ等が格納されている。ＯＳおよびアプリケーションプログラムは、ＲＡＭに展開され、ＣＰＵによって実行される。図５において、マスタ装置１０の内部は、ＲＡＭに展開されたアプリケーションプログラム等によって実現される機能を、ブロックとして示している。
【００２５】
本実施形態において、個々のサーバ２０−１〜２０−Ｐは、個々のワーカとして機能することとする。すなわち、分散処理システムＳはＰ個のワーカを有している。分散処理システムＳで処理される頂点をｖ1〜ｖnとすると、各頂点ｖ1〜ｖnは、ｍ個のサブパーティションＳＰＴ1〜ＳＰＴmのうち何れかに割り当てられ、これらサブパーティションＳＰＴ1〜ＳＰＴmが、サーバ２０−１〜２０−Ｐのうち何れかに割り当てられる。ここで、サブパーティションとは、十分に小さくしたグラフの断片であり、一つのサブパーティションに含まれる頂点の数は、一台のサーバに割当可能な頂点の数よりも十分に小さくしておくとよい。
【００２６】
また、マスタ装置１０は、頂点ｖ1〜ｖnとサーバ２０−１〜２０−Ｐとを管理するために、頂点・辺テーブル１０２と、サブパーティション・テーブル１０４と、サブパーティション生成部１０６と、ワーカ・テーブル１０８と、パーティショニング部１１０と、ワーカ制御部１１２と、を有している。
【００２７】
頂点・辺テーブル１０２は、頂点ＩＤと、頂点データと、辺データと、を記憶する。ここで、頂点ＩＤは、頂点ｖ1〜ｖnを一意に特定する番号であり、例えば、「１」〜「ｎ」の自然数にするとよい。頂点データは、各頂点ＩＤに対応付けられ、各頂点の処理内容を特定するデータである。また、辺データは、各頂点を接続する辺（edge）の処理内容を特定するデータである。
サブパーティション・テーブル１０４は、サブパーティションＳＰＴ1〜ＳＰＴmの各々に対して、次のデータを記憶する。
（１）サブパーティションＩＤ、
（２）サブパーティション・ハッシュ
（３）複数の頂点ＩＤ
ここで、「サブパーティションＩＤ」とは、サブパーティションＳＰＴ1〜ＳＰＴmを一意に特定する番号である。
【００２８】
また、「サブパーティション・ハッシュ」とは、サブパーティションＩＤに対して所定のハッシュ関数を施して得られたハッシュ値であり、これもサブパーティションを一意に特定するものである。あるサブパーティションに対応付けてサブパーティション・テーブル１０４に記憶される頂点ＩＤは、当該サブパーティションに属する頂点を表すデータになる。
【００２９】
サブパーティション生成部１０６は、分散処理システムＳで実行しようとする処理内容に応じて、サブパーティションＳＰＴ1〜ＳＰＴmの内容を設定する。すなわち、頂点ｖ1〜ｖnをサブパーティションＳＰＴ1〜ＳＰＴmに割り当てるように、サブパーティション・テーブル１０４の内容を設定する。
【００３０】
また、ワーカ・テーブル１０８は、各ワーカすなわちサーバ２０−１〜２０−Ｐの各々に対して、次のデータを記憶する。
（１）ワーカＩＤ
（２）ワーカ・ハッシュ
（３）一または複数のサブパーティションＩＤ
ここで、「ワーカＩＤ」とは、ワーカすなわちサーバ２０−１〜２０−Ｐを一意に特定する番号であり、サブパーティションＩＤとは重複しない値に設定される。
【００３１】
また、「ワーカ・ハッシュ」とは、ワーカＩＤに対して、上記ハッシュ関数（サブパーティション・ハッシュを求めるハッシュ関数と同一のハッシュ関数）を施して得られたハッシュ値であり、これもワーカを一意に特定するものである。また、「一または複数のサブパーティションＩＤ」とは、当該ワーカにパーティショニングされた一または複数のサブパーティションのＩＤである。本実施形態においては、コンシステントハッシュ法を用いて、サーバ２０−１〜２０−ＰとサブパーティションＳＰＴ1〜ＳＰＴmとを対応付ける。このため、上述したように、ワーカ・ハッシュと、サブパーティション・ハッシュとは、同一のハッシュ関数を用いて生成される。なお、コンシステントハッシュ法は、「Karger, D., et al., "Consistent hashing and random trees", ACM STOC '97, 1997.」等に詳述されている。
【００３２】
パーティショニング部１１０は、実働中のワーカすなわちサーバ２０−１〜２０−Ｐが変化すると、これに応じてワーカ・テーブル１０８の内容を更新する。すなわち、実働中のワーカであるサーバ２０−１〜２０−Ｐに対して、サブパーティションＳＰＴ1〜ＳＰＴmをパーティショニングする。
【００３３】
ワーカ制御部１１２は、ワーカ・テーブル１０８の内容に基づいて、サーバ２０−１〜２０−Ｐを制御する。すなわち、ワーカ・テーブル１０８に規定されている通りに、サーバ２０−１〜２０−Ｐ間で、サブパーティションの内容（頂点ｖ1〜ｖnの実体も含む）を相互に伝送させる。そして、サーバ２０−１〜２０−ＰにおけるサブパーティションＳＰＴ1〜ＳＰＴmの配置がワーカ・テーブル１０８の通りになると、各サーバ２０−１〜２０−Ｐは、スーパーステップを繰り返し実行する。
【００３４】
「スーパーステップ」は、図１に示した通り、フェーズＰＨ１（ローカル計算）と、フェーズＰＨ２（データ交換）と、フェーズＰＨ３（同期）とを有している。これにより、サーバ２０−１〜２０−Ｐにおいて、分散処理が実行される。
【００３５】
〈実施形態の動作〉
（サブパーティション・テーブル１０４の設定）
次に、本実施形態の動作を説明する。
まず、分散処理システムＳで行うべき処理内容に応じて、頂点・辺テーブル１０２には、頂点ｖ1〜ｖnおよびこれらを結ぶ辺（edge）が特定されていることとする。サブパーティション生成部１０６は、これら頂点ｖ1〜ｖnをサブパーティションＳＰＴ1〜ＳＰＴmに割り当てる。その手法は、上述したＰＢＭを適用する。すなわち、各サブパーティションＳＰＴ1〜ＳＰＴmの大きさ（含まれる頂点の数）をなるべく均等にするとともに、サブパーティションをまたぐ辺をなるべく少なくするように（好ましくは最小化するように）、割当を行う。
【００３６】
サブパーティション生成部１０６は、これらサブパーティションＳＰＴ1〜ＳＰＴmに対してサブパーティション・ハッシュを生成し、サブパーティションＩＤ、サブパーティション・ハッシュおよび複数の頂点ＩＤをサブパーティション・テーブル１０４に書き込む。
【００３７】
（ワーカ・テーブル１０８の設定）
サブパーティション・テーブル１０４が完成すると、パーティショニング部１１０は、ワーカであるサーバ２０−１〜２０−Ｐに対してワーカ・ハッシュを生成し、サブパーティションＳＰＴ1〜ＳＰＴmをサーバ２０−１〜２０−Ｐにパーティショニングする。そして、パーティショニング部１１０は、ワーカＩＤ、ワーカ・ハッシュおよび一または複数のサブパーティションＩＤをワーカ・テーブル１０８に書き込む。
【００３８】
ここで、サブパーティションＳＰＴ1〜ＳＰＴmのサーバ２０−１〜２０−Ｐに対するパーティショニングは、サーバ２０−１〜２０−Ｐのワーカ・ハッシュに対する「距離」が短い順に、サブパーティション・ハッシュを検索し、対応するサブパーティションＳＰＴ1〜ＳＰＴmを当該サーバに割り当てるとよい。
【００３９】
ここで、「距離」とは、様々な数値を適用することができるが、例えば、ワーカ・ハッシュとサブパーティション・ハッシュとのＸＯＲ（排他的論理和）を適用することができる。以上のようにして、ワーカ・テーブル１０８の内容が設定されると、ワーカ制御部１１２は、ワーカ・テーブル１０８の内容を反映させるように、サーバ２０−１〜２０−Ｐに対して、サブパーティションＳＰＴ1〜ＳＰＴmの配置を変更させる。
【００４０】
（ワーカ・テーブル１０８の再設定）
サーバ２０−１〜２０−Ｐにおいて分散処理を実行中にサーバ２０−１〜２０−Ｐの構成が変更されると（例えばサーバの数が増加または減少すると）、パーティショニング部１１０は、変更後のサーバ２０−１〜２０−Ｐに応じて、ワーカ・テーブル１０８を再設定する。そして、ワーカ制御部１１２は、再設定されたワーカ・テーブル１０８の内容を、構成変更後のサーバ２０−１〜２０−Ｐに反映させる。
【００４１】
ここで、サーバ２０−１〜２０−Ｐの構成が変更された場合であっても、継続して使用されるサーバは、同一のワーカＩＤおよびワーカ・ハッシュを維持することとする。なお、サーバの構成が変更された場合であっても、サブパーティションＳＰＴ1〜ＳＰＴmの構成は特に変更する必要はないため、サブパーティション・テーブル１０４は、従前の内容を維持する。
【００４２】
（具体的な動作例）
次に、図６（ａ）〜（ｄ）を参照し、本実施形態の具体的な動作例を説明する。まず図６（ａ）は、分散処理システムＳにおいて処理される複数の頂点ｖ1〜ｖnを示す。なお、各頂点ｖ1〜ｖnを結ぶ辺（edge）については、図示を省略する。
【００４３】
次に、図６（ｂ）は、サブパーティション生成部１０６が、頂点ｖ1〜ｖnをサブパーティションＳＰＴ1〜ＳＰＴmに割り当てた状態を示す。上述したように、サブパーティション生成部１０６は、各サブパーティションＳＰＴ1〜ＳＰＴmの大きさ（含まれる頂点の数）をなるべく均等にするため、図示の例では、含まれる頂点の数は３個または４個になっている。
【００４４】
次に、図６（ｃ）は、サブパーティションＳＰＴ1〜ＳＰＴmを３台のサーバ２０−１〜２０−３にパーティショニングした例を示す。次に、図６（ｄ）は、ワーカの構成が変更されたため、サブパーティションＳＰＴ1〜ＳＰＴmの再パーティショニングが行われた例を示す。すなわち、３台のサーバ２０−１〜２０−３に加えて、サーバ２０−４がワーカとして追加されている。
【００４５】
ワーカの構成が変更される前からワーカを構成していたサーバ２０−１〜２０−３は、同一のワーカＩＤおよびワーカ・ハッシュを維持する。このため、各サーバ２０−１〜２０−３にマッピングされていたサブパーティションは、マッピング状態をできるだけ維持する傾向が強くなる。図６（ｃ），（ｄ）を比較すると、図６（ｃ）においてサーバ２０−１〜２０−３にマッピングされていた各１個（計３個）のサブパーティションが、サーバ２０−４にマッピングされている。しかし、残りの９個のサブパーティションについては、マッピング状態が全く変化していないことが解る。
【００４６】
〈実施形態の効果〉
以上のように、本実施形態によれば、コンシステントハッシュ法によってサブパーティションＳＰＴ1〜ＳＰＴmをワーカ（サーバ２０−１〜２０−Ｐ）にマッピングしたため、ワーカの構成を変更する際に、サブパーティションＳＰＴ1〜ＳＰＴmおよびこれらに含まれる頂点ｖ1〜ｖnを移動するための処理量および通信量を小さくすることができ、分散処理システムＳの処理負担を軽減できる。この結果、特に、分散処理の実行中に、ワーカの追加／削除が生じた際、分散処理の中断時間を短くできるという利点が生じる。
【００４７】
また、コンシステントハッシュ法によれば、サブパーティションの数をｍ、増減後のワーカ数をＰとすると、再パーティショニング時のマッピングの変更量は、平均「ｍ／Ｐ」に抑制することができる。これにより、ワーカ数Ｐが大きいほど、その効果が顕著に現れる。
【００４８】
さらに、本実施形態における、サブパーティション生成部１０６は、各サブパーティションＳＰＴ1〜ＳＰＴmに属する頂点ｖ1〜ｖnの数と、サブパーティション間をまたぐ辺数とに基づいて、各頂点をサブパーティションに割り当てる。すなわち、各サブパーティションＳＰＴ1〜ＳＰＴmの大きさ（含まれる頂点の数）をなるべく均等にするとともに、サブパーティションをまたぐ辺をなるべく少なくするように、頂点ｖ1〜ｖnをサブパーティションＳＰＴ1〜ＳＰＴmにマッピングする。これにより、各ワーカすなわちサーバ２０−１〜２０−Ｐの処理負担を均等化できるとともに、各ワーカ間の通信量も小さくすることができる。
【００４９】
〈変形例〉
本発明は上述した実施形態に限定されるものではなく、種々の変形が可能である。上述した実施形態は本発明を理解しやすく説明するために例示したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部を他の構成に置換することも可能である。また、図中に示した制御線や情報線は説明上必要と考えられるものを示しており、製品上で必要な全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。上記実施形態に対して可能な変形は、例えば以下のようなものである。
【００５０】
（１）上記実施形態におけるマスタ装置１０のハードウエアは一般的なコンピュータによって実現できるため、上述したマスタ装置１０内の処理を実行するプログラム等を記憶媒体に格納し、または伝送路を介して頒布してもよい。
【００５１】
（２）上記実施形態におけるワーカは物理サーバであるサーバ２０−１〜２０−Ｐであったが、サーバ２０−１〜２０−Ｐにおいて仮想マシンを起動させ、これら仮想マシンをワーカにしてもよい。
【００５２】
（３）上記実施形態においては、ワーカ（サーバ２０−１〜２０−Ｐ）に対するサブパーティションＳＰＴ1〜ＳＰＴmの配置を、コンシステントハッシュ法を用いて決定した。しかし、サブパーティションＳＰＴ1〜ＳＰＴmを配置する手法はコンシステントハッシュ法に限定されるわけではない。すなわち、ランダムに再配置した場合よりも転送するデータ量が少ない手法であれば、様々な手法を採用することができる。
【符号の説明】
【００５３】
１０  マスタ装置
２０−１〜２０−Ｐ  サーバ（ワーカ）
３０  ネットワーク
１０４  サブパーティション・テーブル
１０６  サブパーティション生成部
１０８  ワーカ・テーブル
１１０  パーティショニング部
１１２  ワーカ制御部
Ｓ  分散処理システム（計算装置）
ＳＰＴ1〜ＳＰＴm  サブパーティション
ｖ1〜ｖn  頂点
【図１】
2018032345.tif 000003
【図２】
2018032345.tif 000004
【図３】
2018032345.tif 000005
【図４】
2018032345.tif 000006
【図５】
2018032345.tif 000007
【図６】
2018032345.tif 000008