(57)【要約】  分散処理管理装置は、複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、当該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、当該トータル実行時間が最小となる分散実行パターンを選択する選択部、を備える。
2013024597.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を備えることを特徴とする分散処理管理装置。
【請求項２】
前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記選択部は、前記Ｍａｐフェーズの処理時間の推定式により得られる、又は、前記Ｍａｐフェーズの処理時間の推定式と前記Ｒｅｄｕｃｅフェーズの処理時間の推定式とを合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする請求項１に記載の分散処理管理装置。
【請求項３】
前記複数のコンピュータの少なくとも１つに前記Ｍａｐフェーズを実行させることにより、前記Ｍａｐフェーズの計算時間を計測するＭａｐフェーズ計測部、
を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間、及び、前記Ｍａｐフェーズ計測部により計測された前記Ｍａｐフェーズの前記計算時間を取得し、取得されたいずれか一方の時間を、前記トータル実行時間に含まれる前記Ｍａｐフェーズの処理時間として用いる、
ことを特徴とする請求項２に記載の分散処理管理装置。
【請求項４】
前記複数の分散実行パターンの中の第１分散実行パターンで前記複数の処理の中の１つを実行させることにより、該第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を計測するＲｅｄｕｃｅフェーズ計測部、
を更に備え、
前記選択部は、処理されるデータ量と前記各分散実行パターンとに応じて前記Ｒｅｄｕｃｅフェーズの処理の基準とされる基準処理の処理時間を予測する予測モデル式を取得し、該予測モデル式に基づいて前記第１分散実行パターンに対応する基準処理の処理時間を推定し、前記第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間と前記第１分散実行パターンに対応する基準処理の処理時間との比を用いて該予測モデル式を補正することにより、前記各分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を推定し、該推定されたＲｅｄｕｃｅフェーズの処理時間を用いて、前記トータル実行時間に含まれる前記Ｒｅｄｕｃｅフェーズの実行時間を推定する、
ことを特徴とする請求項２又は３に記載の分散処理管理装置。
【請求項５】
担当するコンピュータの数及び処理されるデータ量を変えながら、前記基準処理を実際に実行することにより、前記基準処理の実行時間を計測する基準処理計測部と、
前記基準処理計測部により取得された、担当するコンピュータの数、処理されるデータ量及び前記基準処理の実行時間の複数の組み合わせデータを用いて回帰分析を行うことにより、前記予測モデル式を推定する回帰分析部と、
を更に備えることを特徴とする請求項４に記載の分散処理管理装置。
【請求項６】
前記基準処理の処理時間を予測する複数の予測モデル式を格納する予測モデル格納部と、
前記回帰分析部による各予測モデル式に対する回帰分析の結果に基づいて情報量基準により前記複数の予測モデル式を評価することにより、前記複数の予測モデル式の中の１つを選択する予測モデル選択部と、
を更に備え、
前記選択部は、前記予測モデル選択部により選択された予測モデル式を取得する、
ことを特徴とする請求項５に記載の分散処理管理装置。
【請求項７】
前記複数のフェーズは、後段のフェーズのための初期化処理を行うＳｅｔｕｐフェーズを更に含み、
前記分散処理管理装置は、
前記複数のコンピュータの少なくとも１つに前記複数の処理の中の１つを実行させることにより、１処理あたりのＳｅｔｕｐフェーズの処理時間を計測するＳｅｔｕｐフェーズ計測部、
を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりの処理数を取得し、前記１処理あたりのＳｅｔｕｐフェーズの処理時間に、該１コンピュータ当たりの処理数を掛け合わせることにより、前記Ｓｅｔｕｐフェーズの処理時間の推定式を推定し、前記Ｍａｐフェーズの処理時間の推定式及び前記Ｒｅｄｕｃｅフェーズの処理時間の推定式に加えて、前記Ｓｅｔｕｐフェーズの処理時間の推定式を更に合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする請求項２から６のいずれか１項に記載の分散処理管理装置。
【請求項８】
前記選択部により選択された分散実行パターンにより示されるグループ分け形態に基づいて、各グループに対して各パラメータをそれぞれ割り当て、前記複数の処理を分散実行するように該各グループに指示する分散処理実行部、
を更に備える請求項１から７のいずれか１項に記載の分散処理管理装置。
【請求項９】
コンピュータが、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する、
ことを含む分散処理管理方法。
【請求項１０】
コンピュータに、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行する分散処理環境における分散処理の管理技術に関する。
【背景技術】
【０００２】
近年、インターネットの普及や記憶装置の大容量化により、日々膨大なデータが生成され蓄積されている。これらの膨大な量のデータの処理には分散処理システムを利用することが一般的となりつつある。分散処理システム又は分散処理技術としてのＭａｐＲｅｄｕｃｅは有名である。ＭａｐＲｅｄｕｃｅによれば、開発者は、Ｍａｐ関数とＲｅｄｕｃｅ関数とを記述するだけで、分散に関するプログラムを一切記述することなく、並列分散で動作するアプリケーションを作成することができる。ＭａｐＲｅｄｕｃｅは、現在、様々な企業において大規模データ処理に活用されている。【０００３】
ＭａｐＲｅｄｕｃｅの重要な応用先として機械学習やデータマイニング等がある。機械学習やデータマイニングの技術を使うことで大量の情報の中から有益な情報を抽出することができる。例えば、銀行の取引データから不正取引のパターンを学習したり、購買履歴からユーザの好みを学習することでレコメンドを行ったりすることができる。Ｃｈｅｎｇ−ｔａｏらの論文「Ｍａｐ−Ｒｅｄｕｃｅ  ｆｏｒ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ  ｏｎ  Ｍｕｌｔｉｃｏｒｅ」により様々な機械学習アルゴリズムがＭａｐ関数とＲｅｄｕｃｅ関数とで記述できることが示されたことで、現在までに様々な機械学習アルゴリズムがＭａｐＲｅｄｕｃｅで実装されている（例えば、Ａｐａｃｈｅ  Ｍａｈｏｕｔ等）。【０００４】
多くの機械学習のアルゴリズムは、事前に設定されるパラメータ（ハイパーパラメータ）を有する。設定されるパラメータ次第で学習精度が異なるため、実用上、適切なパラメータを求めることは重要である。しかし、適切なパラメータを求めるには、パラメータ値を変更しながら何度も学習を行い評価する必要があり、多くの時間がかかるという課題があった。【０００５】
下記非特許文献１は、このような課題を解決するための技術を提案する。この技術は、ＭａｐＲｅｄｕｃｅで記述された機械学習プログラムをハイパーパラメータ値を変えて繰り返し実行するのにかかる時間を短縮する。この技術では、機械学習プログラムにおいて重複する部分が共有化される。例えば、ＭａｐＲｅｄｕｃｅで記述されパラメータのみ異なるジョブＡ及びＢにおいて、ジョブＡを実行した後にジョブＢを実行する場合、両者は入力が同じであるため、それぞれ個別に同じデータを読み込むことは無駄である。そこで、ジョブＡ及びＢにおけるデータ読み込みという重複する処理が共有化される。これにより、データの読み込み終了後、ジョブＡが実行され、次にジョブＢが実行される。これにより、複数回の冗長なデータ読み込みを避けることができ、実行時間を短縮することができる。【０００６】
また、下記特許文献１では、並列実行環境を持つ計算機システムにおいて全体の処理時間が最短となるように、個々の解析を各処理装置に割り当てる技術が提案されている。この技術では、パラメータの値ごとに内容の異なる解析を特定のアプリケーションにより複数の処理装置で多数実行する場合に、解析の内容を特徴付けるパラメータの値をもとに個々の解析の実行時間を予測し、この予測をもとに個々の解析を処理装置に割り当てる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２５９４３３号公報
【非特許文献】
【０００８】
【非特許文献１】福本 佳史、鬼塚 真、"複数分析処理におけるMapReduce最適化"、DEIM Forum 2011 C3-4
【発明の概要】
【０００９】
上述の特許文献１で提案される技術では、個々の解析をどの処理装置で実行するかが決められるが、個々の解析自体を分散実行することについては考慮されていない。
【００１０】
また、上述の非特許文献１で提案される技術は、パラメータの異なる各ＭａｐＲｅｄｕｃｅ処理がクラスタ内の全マシン（全コンピュータ）で分散処理される形態における効率化技術である。そのため、各ＭａｐＲｅｄｕｃｅ処理をクラスタ内の一部のマシンで処理する形態は考慮されていない。例えば、２０台のマシンで構成されるクラスタにおいて、パラメータのみ異なる４０個のＭａｐＲｅｄｕｃｅ処理を実行する場合、非特許文献１の技術は、全マシン（２０台）を１つのグループとして扱い、４０個の処理をそれぞれ２０台で効率よく実行する方法を提供する。
【００１１】
しかしながら、実行形態はこのような形態のみではない。例えば、クラスタ内を１０台ずつのマシンからなる２つのグループに分けて、各グループで２０個の処理をそれぞれ実行させる形態や、５台ずつのマシンからなる４つのグループに分けて、各グループで１０個の処理を実行させる形態なども存在する。ＭａｐＲｅｄｕｃｅ等で実現される分散処理環境では、このような各実行パターンによって実行時間は異なる。
【００１２】
本発明は、上述の事情に鑑みてなされたものであり、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行する分散処理環境において、当該複数の処理のトータル実行時間を短縮させる分散処理管理技術を提供する。
【００１３】
本発明の各態様では、上述した課題を解決するために、それぞれ以下の構成を採用する。
【００１４】
第１の態様は、分散処理管理装置に関する。第１の態様に係る分散処理管理装置は、複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、当該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、当該トータル実行時間が最小となる分散実行パターンを選択する選択部、を備える。
【００１５】
第２の態様は、分散処理管理方法に関する。第２の態様に係る分散処理管理方法は、コンピュータが、複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、当該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、当該トータル実行時間が最小となる分散実行パターンを選択することを含む。
【００１６】
なお、本発明の他の態様としては、上記第１の態様に係る各構成をコンピュータに実現させるコンピュータプログラムであってもよいし、このようなプログラムを記録したコンピュータが読み取り可能な記憶媒体であってもよい。この記録媒体は、非一時的な有形の媒体を含む。
【００１７】
上記各態様によれば、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行する分散処理環境において、当該複数の処理のトータル実行時間を短縮させる分散処理管理技術を提供することができる。
【図面の簡単な説明】
【００１８】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１９】
【図１】図１は、第１実施形態における分散処理システムの構成例を概念的に示す図である。
【図２】図２は、第１実施形態におけるマスタ装置の構成例を概念的に示す図である。
【図３】図３は、分散実行パターンと各マシンの負担との関係の一例を示す図である。
【図４】図４は、ディスクからデータを読み込む場合における、グループあたりのマシン数とユーザＭａｐの処理時間との関係を示す図である。
【図５Ａ】図５Aは、読み込むべきデータのサイズに応じてメモリ及びディスクのいずれか一方から当該データの全てを読み込む場合における、グループあたりのマシン数とユーザＭａｐの処理時間との関係を示す図である（ＰＭＤ＞ＰＣＤ）。
【図５Ｂ】図５Bは、読み込むべきデータのサイズに応じてメモリ及びディスクのいずれか一方から当該データの全てを読み込む場合における、グループあたりのマシン数とユーザＭａｐの処理時間との関係を示す図である（ＰＭＤ＜ＰＣＤ）。
【図６】図６は、グループあたりのマシン数とユーザＲｅｄｕｃｅの処理時間との関係を示す図である。
【図７】図７は、グループあたりのマシン数とユーザＳｅｔｕｐの処理時間との関係を示す図である。
【図８】図８は、グループあたりのマシン数とトータル実行時間との関係を示す図である。
【図９】図９は、第１実施形態における分散処理システムの動作例を示すフローチャートである。
【図１０】図１０は、第２実施形態におけるマスタ装置の構成例を概念的に示す図である。
【図１１】図１１は、第２実施形態における分散処理システムの動作例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について説明する。なお、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
【００２１】
本実施形態における分散処理管理装置は、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、当該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する、分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、当該トータル実行時間が最小となる分散実行パターンを選択する選択部を備える。
【００２２】
上述したように、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行する分散処理環境において、当該複数の処理の実行形態は複数存在する。このような実行形態を分散実行パターンと表記する。よって、各分散実行パターンは、複数のコンピュータのグループ分け形態の１つを示し、かつ、各処理を担当するコンピュータの数に対応する。本実施形態では、複数の分散実行パターンの中から、当該複数処理のトータル実行時間が最小となる分散実行パターンが選択される。
【００２３】
このように、本実施形態によれば、パラメータの異なる複数の処理を行うにあたり、複数の分散実行パターンの中から常に最小の実行時間のパターンを選択して実行することができる。従って、本実施形態によれば、上述のように選択された分散実行パターンを用いて複数の処理を分散実行することにより、当該複数の処理のトータル実行時間を短縮させることができる。
【００２４】
以下、上述の実施形態について更に詳細を説明する。以下の各実施形態は、上述の分散処理管理装置の構成をＭａｐＲｅｄｕｃｅにより実現される分散処理システムに適用した場合の例である。よって、下記実施形態における分散処理システムで分散実行される複数の処理は、ＭａｐＲｅｄｕｃｅで記述された分散プログラムで実現され、Ｓｅｔｕｐフェーズ、Ｍａｐフェーズ及びＲｅｄｕｃｅフェーズで構成される。
【００２５】
Ｍａｐフェーズでは、入力データを読み込み、読み込まれた入力データに所定処理を施すことにより得られるデータを後段のＲｅｄｕｃｅフェーズに送るＭａｐ処理が実行される。Ｍａｐフェーズでの所定処理には例えば入力データの分解処理が含まれる。Ｒｅｄｕｃｅフェーズでは、Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅ処理が実行される。Ｓｅｔｕｐフェーズでは、後段のＭａｐフェーズ及びＲｅｄｕｃｅフェーズのための初期化処理等を行うＳｅｔｕｐ処理が実行される。
【００２６】
以下の実施形態では、ＭａｐＲｅｄｕｃｅで実現される複数の処理の内容、入力データの内容等は制限されない。また、以下の実施形態では、分散処理技術として、ＭａｐＲｅｄｕｃｅを例に挙げるが、クラスタ内の複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行する分散処理環境を実現可能な技術であれば、分散処理技術は制限されない。
【００２７】
［第１実施形態］
〔システム構成〕
図１は、第１実施形態における分散処理システム１の構成例を概念的に示す図である。第１実施形態における分散処理システム１は、マスタ装置１０、複数のスレーブ装置２０（＃１、＃２、・・・、＃ｎ）を有する。上述の分散処理管理装置は、マスタ装置１０上で実現される。これにより、マスタ装置１０は、分散処理管理装置と呼ぶこともできる。各スレーブ装置２０（＃１、＃２、・・・、＃ｎ）はそれぞれ同じ機能を持てばよいため、特に個々を区別する必要がある場合を除き、スレーブ装置２０と総称する。
【００２８】
マスタ装置１０及びスレーブ装置２０は、ハードウェア構成として、ＲＡＭ（Random Access Memory）１２、ＲＯＭ（Read Only Memory、図示せず）、ハードディスク（ＨＤＤ）１３等のようなメモリ、ＣＰＵ（Central Processing Unit）１１、入出力インタフェース１４等を有する。これら各ハードウェア要素は例えばバス１５により接続される。入出力インタフェース１４は、マスタ装置１０及びスレーブ装置２０の間で通信網５を介して所定通信方式の通信を可能とするネットワークインタフェースを含む。即ち、マスタ装置１０及びスレーブ装置２０は、一般的なコンピュータである。
【００２９】
図１の例では、マスタ装置１０及びスレーブ装置２０はそれぞれ１つずつのＣＰＵ１１を有するが、それらは複数のＣＰＵ１１を有してもよい。本実施形態は、マスタ装置１０及びスレーブ装置２０のハードウェア構成を限定しない。また、ここでは、分散処理の管理を行う装置をその他の装置と区別するために、マスタ装置１０とスレーブ装置２０とを区別したが、両者は特に区別されなくてもよい。
【００３０】
〔装置構成〕
図２は、第１実施形態におけるマスタ装置１０の構成例を概念的に示す図である。図２に示されるように、マスタ装置１０は、分散プログラム実行部１０１、ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３、ユーザＲｅｄｕｃｅ計測部１０４、基準Ｒｅｄｕｃｅ計測部１０５、回帰分析部１０６、データ格納部１０７、クラスタプロファイル読込部１０８、パターン選択部１０９等を有する。マスタ装置１０は、例えば、メモリに格納されるプログラムがＣＰＵ１１により実行されることにより、図２に示される各処理部をそれぞれ実現する。当該プログラムは、例えば、ＣＤ（Compact Disc）、メモリカード等のような可搬型記録媒体やネットワーク上の他のコンピュータから入出力Ｉ／Ｆ１４を介してインストールされ、メモリに格納される。
【００３１】
分散プログラム実行部１０１は、対象となるパラメータの異なる複数の処理を実現する分散プログラムに関する情報を受け、パターン選択部１０９に、当該分散プログラムのトータル実行時間を最小化する分散実行パターンを選択させ、選択された分散実行パターンに基づいて分散処理システム１に当該分散プログラムを実行させる。以降、分散プログラム実行部１０１は、省略して実行部１０１とも表記される。また、実行部１０１は、本件発明の分散処理実行部に相当する。
【００３２】
分散処理システム１（クラスタ）内で分散プログラムを実際に実行し得るコンピュータは、マスタ装置１０及びスレーブ装置２０である。しかし、以降の説明では、説明の便宜のために、分散プログラムを実際に実行し得るコンピュータはスレーブ装置２０のみとする。
【００３３】
各分散実行パターンは、分散処理システム１（クラスタ）内の複数のスレーブ装置２０のグループ分け形態の１つを示し、かつ、各処理を担当するスレーブ装置２０の数に対応する。実行部１０１は、パターン選択部１０９により選択された分散実行パターンにより特定される各グループに対してパラメータをそれぞれ振り分け、各スレーブ装置２０に、対応するグループに割り当てられた分散プログラムの実行をそれぞれ依頼する。
【００３４】
ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４は、パターン選択部１０９で分散実行パターンを選択するのに必要な情報を計測し、各計測結果をそれぞれデータ格納部１０７に格納する。ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４は、実行部１０１からの指示に応じて計測処理を実行してもよいし、所定のタイミングで計測処理を実行してもよい。ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４は、本件発明におけるＭａｐフェーズ計測部、Ｓｅｔｕｐフェーズ計測部、Ｒｅｄｕｃｅフェーズ計測部に相当する。
【００３５】
ユーザＭａｐ計測部１０２は、スレーブ装置２０（マスタ装置１０を含んでもよい）にＭａｐ処理を実際に実行させることにより、Ｍａｐ処理の計算時間（ｔＭ）を計測し、計測された計算時間をデータ格納部１０７に格納する。以降、ここでのＭａｐ処理は、後述する基準処理と区別するために、ユーザＭａｐと表記される。ここで計測されるユーザＭａｐの計算時間ｔＭの詳細については後述する。
【００３６】
ユーザＳｅｔｕｐ計測部１０３は、スレーブ装置２０（マスタ装置１０を含んでもよい）に、１処理分のＳｅｔｕｐ処理を実際に実行させることにより、１処理あたりのＳｅｔｕｐ処理の処理時間（ｔＳ）を計測し、計測された処理時間をデータ格納部１０７に格納する。以降、ここでのＳｅｔｕｐ処理は、後述する基準処理と区別するために、ユーザＳｅｔｕｐとも表記される。
【００３７】
ユーザＲｅｄｕｃｅ計測部１０４は、或る特定の分散実行パターンにおいて、１処理分のＲｅｄｕｃｅ処理を実際に実行させることにより、或る特定の分散実行パターンにおける１処理あたりのＲｅｄｕｃｅ処理の処理時間（ｔＲ）を計測し、計測された処理時間をデータ格納部１０７に格納する。或る特定の分散実行パターンとは、分散処理システム１で取り得る複数の分散実行パターンの中のいずれか１つであり、後述する基準Ｒｅｄｕｃｅの処理時間（ｔＲａ）の算出にも利用される。以降、ここでのＲｅｄｕｃｅ処理は、後述する基準処理と区別するために、ユーザＲｅｄｕｃｅとも表記される。
【００３８】
基準Ｒｅｄｕｃｅ計測部１０５は、Ｒｅｄｕｃｅ処理の基準とされる基準処理の処理時間を予測する予測モデルを構築する上で必要となる情報を計測する。基準処理とは、当該予測モデルを構築するための専用処理であり、合計値を得るＳｕｍ関数や最大値を得るＭａｘ関数等のような組み込み演算が利用される。以降、この基準処理を基準Ｒｅｄｕｃｅと表記する場合もある。
【００３９】
例えば、基準Ｒｅｄｕｃｅ計測部１０５は、基準Ｒｅｄｕｃｅで処理されるデータサイズと基準Ｒｅｄｕｃｅを実行するマシン数とを変化させながら、当該基準Ｒｅｄｕｃｅを実際に実行させ、その基準Ｒｅｄｕｃｅの処理時間を計測する。具体的には、データサイズは、５１２ＫＢ（キロバイト）、１ＭＢ（メガバイト）、２ＭＢ、４ＭＢというように変えられる。また、マシン数は、３、５、１０、１５、２０というように変えられる。基準Ｒｅｄｕｃｅ計測部１０５で用いられるデータサイズ及びマシン数は、予測モデルの精度を高めるためには、実際に分散プログラムを実行するマシン数やそこで扱われるデータサイズと近似する値が採用されることが望ましい。最終的に、基準Ｒｅｄｕｃｅ計測部１０５は、マシン数、データサイズ及び処理時間の複数の組み合わせを取得し、この複数の組み合わせの情報を回帰分析部１０６へ提供する。
【００４０】
回帰分析部１０６は、１回の基準Ｒｅｄｕｃｅの処理時間を予測する予測モデル式を予め保持する。この予測モデル式は、Ｒｅｄｕｃｅ処理の実装アルゴリズムに基づいて導かれた計算量の式であってもよいし、当該実装アルゴリズムがブラックボックス化された一般的な多項式であってもよい。本実施形態は、データサイズ及びマシン数から処理時間を得ることができる式であれば、この予測モデル式自体を制限しない。例えば、マシン数をｐ、データサイズをｎとした場合、以下の多項式を予測モデル式としてもよい。
ａ１＋ａ２＊ｐ＋ａ３＊ｎ＋ａ４＊ｐ＊ｎ＝ｆ（ｐ，ｎ）    （式１）
【００４１】
回帰分析部１０６は、基準Ｒｅｄｕｃｅ計測部１０５から上記情報の提供を受けると、それら情報を用いて回帰分析を行うことで予測モデル式の係数を決定し、決定された係数をデータ格納部１０７に格納する。回帰分析手法には、最小二乗法などのような周知な手法が利用されればよい。上記（式１）の予測モデル式の場合には、回帰分析部１０６は、最小二乗法により、係数ａ１、ａ２、ａ３、及びａ４を算出する。
【００４２】
基準Ｒｅｄｕｃｅ計測部１０５及び回帰分析部１０６の各処理は、実行部１０１の指示により実行されてもよいし、所定のタイミングで実行されてもよい。
【００４３】
クラスタプロファイル読込部１０８は、クラスタに関する情報が記載されたクラスタプロファイルを読み込み、読み込まれた情報をデータ格納部１０７に格納する。クラスタプロファイル読込部１０８は、例えば、クラスタ（分散処理システム１）内のマシン数Ｍ、１マシンあたりのメモリサイズＭｅｍ、ディスクバンド幅Ｗ等を読み込む。本実施形態では、クラスタ内のマシン数Ｍは、実際に分散プログラムを実行するスレーブ装置２０の数に相当する。メモリサイズＭｅｍは、一次記憶装置、主記憶装置等と呼ばれるＲＡＭ（以降、単にメモリと表記する）のサイズである。ディスクバンド幅Ｗは、ハードディスク、フラッシュメモリ等のような、Ｍａｐ処理で入力データとして読み込まれるデータが格納されている補助記憶装置（以降、ディスクと表記する）の入出力インタフェースの帯域幅である。
【００４４】
データ格納部１０７は、パターン選択部１０９が対象分散処理のトータル実行時間を推定するために利用される各種データを格納する。具体的には、データ格納部１０７は、ユーザＭａｐの計算時間ｔＭ、ユーザＳｅｔｕｐの処理時間ｔＳ、ユーザＲｅｄｕｃｅの処理時間ｔＲ、予測モデル式の各係数、クラスタ内のマシン数Ｍ、１マシンあたりのメモリサイズＭｅｍ、ディスクバンド幅Ｗ等を格納する。データ格納部１０７は、例えば、連想配列、ＫｅｙＶａｌｕｅストア、ＲＤＢ（Relational Database）等として実現される。
【００４５】
パターン選択部１０９は、実行部１０１及びデータ格納部１０７から取得される各種情報を用いて、分散処理システム１において対象となるパラメータの異なる複数処理を分散実行するのにかかるトータル実行時間を推定し、推定されるトータル実行時間が最小となる分散実行パターンを選択する。パターン選択部１０９は、選択された分散実行パターンの情報を実行部１０１へ送る。なお、パターン選択部１０９により推定されるトータル実行時間は、分散プログラムのトータル実行時間と呼ぶこともできる。パターン選択部１０９は本発明の選択部に相当する。
【００４６】
パターン選択部１０９は、例えば、以下の（式２）を用いて、各分散実行パターンに対応する当該トータル実行時間をそれぞれ推定し得る。パターン選択部１０９は、以下の（式２）の値（トータル実行時間）が最小となるｐを算出する。以下の（式２）においてｐはグループ当たりのマシン数を示すため、ｐは分散実行パターンを特定する情報であるといえる。
【００４７】
以下の（式２）において、ＤはＭａｐ処理で読み込まれるデータサイズを示し、Ｃは対象処理の数を示し、ｎはＲｅｄｕｃｅ処理で扱われるデータサイズを示す。他の記号は上述したとおりである。繰り返し表記すれば、Ｗはディスクバンド幅を示し、Ｍはクラスタ内マシン数を示し、ｆ（ｐ，ｎ）は予測モデル式を示し、ｔＲは１処理あたりのユーザＲｅｄｕｃｅの処理時間を示し、ｔＳは１処理あたりのユーザＳｅｔｕｐの処理時間を示し、ｔＭはユーザＭａｐの計算時間を示す。ユーザＭａｐの計算時間とは、データを読み込む時間を除くユーザＭａｐ処理のみにかかる時間を意味する。
【数１】
2013024597.tif 000003
【００４８】
Ｄ、Ｃ及びｎは、実行すべき分散プログラムの情報として実行部１０１により取得され、パターン選択部１０９に渡される。Ｗ、Ｍ、ｆ（ｐ，ｎ）、ｔＲ、ｔＳ、及びｔＭはデータ格納部１０７から取得される。
【００４９】
ｔＲａは、１処理あたりの基準Ｒｅｄｕｃｅの処理時間を示す。パターン選択部１０９は、取得された予測モデル式ｆ（ｐ，ｎ）のｐに、ユーザＲｅｄｕｃｅ計測部１０４で利用された特定の分散実行パターンに対応するグループあたりのマシン数を代入することにより、ｔＲａを算出する。
【００５０】
パターン選択部１０９は、以下の（式３）及び（式４）により、ＰＣＤ及びＰＭＤを算出する。なお、ＰＣＤ及びＰＭＤの意味については後述する。上記（式２）におけるｍｉｎ（ＰＭＤ，ＰＣＤ）は、ＰＭＤ及びＰＣＤの小さい方を意味する。
ＰＣＤ＝Ｄ／（Ｗ＊ｔＭ）      （式３）
ＰＭＤは（Ｄ／ｐ）＜Ｍｅｍを満たす最小のｐである。    （式４）
【００５１】
以下、上記（式２）で示されるようなトータル実行時間の推定手法の原理について説明する。対象となる複数処理（分散プログラム）のトータル実行時間は、分散プログラムを形成する各フェーズ（ユーザＳｅｔｕｐ、ユーザＭａｐ、ユーザＲｅｄｕｃｅ）の処理時間の合計により求めることができる。そこで、各フェーズの処理時間についてそれぞれ考察する。
【００５２】
まず、ユーザＭａｐの処理時間について説明する。
図３は、分散実行パターンと各マシンの負担との関係の一例を示す図である。図３の例では、クラスタ内のマシン数Ｍが２０であり、処理数Ｃが４０であり、データサイズＤが４０ＧＢである場合が示されている。この場合、図３に示されるように、６個の分散実行パターンが存在し得る。
【００５３】
分散実行パターンＡでは、２０台のマシンが１グループとして扱われ、１グループの２０台で４０個の処理が実行される。分散実行パターンＢでは、２０台のマシンが１０台ずつの２グループに区分けされ、各グループの１０台で２０個の処理がそれぞれ実行される。分散実行パターンＣでは、２０台のマシンが５台ずつの４グループに区分けされ、各グループの５台で１０個の処理がそれぞれ実行される。分散実行パターンＤでは、２０台のマシンが４台ずつの５グループに区分けされ、各グループの４台で８個の処理がそれぞれ実行される。分散実行パターンＥでは、２０台のマシンが２台ずつの１０グループに区分けされ、各グループの２台で４個の処理がそれぞれ実行される。分散実行パターンＦでは、２０台のマシンが２０グループに区分けされ、１台で２個の処理がそれぞれ実行される。１処理はグループ内の全マシンで並列分散処理されるため、１マシンが担当する処理の数はグループが担当する処理の数である。これが図３における「１マシンが担当する処理数」である。
【００５４】
上述のような各分散実行パターンは以下のように言い換えることもできる。即ち、分散実行パターンＡでは１個の処理が２０台のマシンで遂行され、分散実行パターンＢでは１個の処理が１０台のマシンで遂行され、分散実行パターンＣでは１個の処理が５台のマシンで遂行され、分散実行パターンＤでは１個の処理が４台のマシンで遂行され、分散実行パターンＥでは１個の処理が２台のマシンで遂行され、分散実行パターンＦでは１個の処理が１台のマシンで遂行される。
【００５５】
一方で、ユーザＭａｐで読み込まれるデータサイズは、図３の例では、各処理につき４０ＧＢである。よって、分散実行パターンＡでは１個の処理が２０台のマシンで遂行されるため、１台のマシンが読み込むデータサイズは２ＧＢとなる。同様に、分散実行パターンＢでは１個の処理が１０台のマシンで遂行されるため、１台のマシンが読み込むデータサイズは４ＧＢとなる。これが、図３における「１マシンが担当するデータサイズ」で示される。
【００５６】
このように、グループ内のマシン数が小さくなるにしたがって（図３において左から右の方向に）、１マシンあたりの読み込むデータ量が増加し、担当する処理数が減少する。更に、読み込まれるデータ量と処理数との積がどの分散実行パターンでも一定であるため、ユーザＭａｐに必要な計算量は分散実行パターンによらず不変である。但し、当該計算量が一定であっても１データあたりの計算量は、グループ内のマシン数が小さくなるにしたがって（図３において左から右の方向に）、減少している。
【００５７】
このような特性を考慮して、ユーザＭａｐの処理時間を考える。ここでは、全ての分散実行パターンにおいてデータがディスクから読み込まれ、ユーザＭａｐの処理（計算）のバックグラウンドでデータ読み込みが行われると仮定する。この場合、グループ内のマシン数が多い分散実行パターン（例えば、Ａ、Ｂ等）では、１データあたりの計算量が多いため、計算がボトルネックとなる。よって、ユーザＭａｐの処理時間はユーザＭａｐの計算時間のみで表される。一方、グループ内のマシン数が少ない分散実行パターン（例えば、Ｅ、Ｆ等）では、１データあたりの計算量が少なく、計算が速く終了し次のデータの読み込みを待つことになるため、データの読み込みがボトルネックとなる。この場合、ユーザＭａｐの処理時間はデータの読み込み時間のみで表される。或る分散実行パターンが計算ボトルネックかデータの読み込みボトルネックかは、１データあたりの読み込み時間と１データあたりの計算時間のどちらが大きいかで決定される。１データあたりの読み込み時間が大きい場合にデータ読み込みボトルネック、１データあたりの計算時間が大きい場合に計算ボトルネックとなる。
【００５８】
図４は、ディスクからデータを読み込む場合における、グループあたりのマシン数とユーザＭａｐの処理時間との関係を示す図である。図４では、計算がボトルネックとなる分散実行パターンと、データの読み込みがボトルネックとなる分散実行パターンとの境界となるグループあたりのマシン数がＰＣＤで表わされている。この場合、グループあたりのマシン数がＰＣＤより多い領域、即ち、計算がボトルネックとなる分散実行パターンの領域では、ユーザＭａｐの処理時間は一定（ｔＭ）である。これは、上述したように、ユーザＭａｐに必要な計算量は分散実行パターンによらず一定であるからである。一方、グループあたりのマシン数がＰＣＤより小さい領域、即ち、データの読み込みがボトルネックとなる分散実行パターンの領域では、読み込まれるデータサイズに応じてユーザＭａｐの処理時間が増加する。
【００５９】
図５Ａ及び図５Ｂは、読み込むべきデータのサイズに応じてメモリ及びディスクのいずれか一方から当該データの全てを読み込む場合における、グループあたりのマシン数とユーザＭａｐの処理時間との関係を示す図である。例えば、各マシンのメモリサイズが８ＧＢである場合、図３に示される分散実行パターンＡ、Ｂ及びＣにおいて各マシンに読み込まれるデータは全てメモリに格納することができる。一方で、図３に示される分散実行パターンＤ、Ｅ及びＦにおいて各マシンに読み込まれるデータの全体はメモリに格納することができないため、そのデータ全てがディスクから読み込まれる。
【００６０】
従って、このように各マシンのメモリサイズを考慮する場合には、図５Ａ及び図５Ｂに示されるように、グループあたりのマシン数とユーザＭａｐの処理時間との関係は、各マシンのメモリサイズに依存して、２種類存在する。ここで、読み込まれるデータの全てが各マシンのメモリに格納されるか否かの境界となるグループあたりのマシン数がＰＭＤで表わされる。図５Ａは、ＰＭＤがＰＣＤよりも大きい場合を示し、図５Ｂは、ＰＭＤがＰＣＤよりも小さい場合を示す。
【００６１】
図５Ａの場合、即ち、ＰＭＤがＰＣＤよりも大きい場合にはグラフの形状は図４と同様となる。グループあたりのマシン数ｐがＰＣＤより大きい場合には、データがメモリとディスクのどちらに格納されていても計算がボトルネックとなるからである。
【００６２】
一方、図５Ｂの場合、即ち、ＰＭＤがＰＣＤよりも小さい場合には、図４とはグラフの形状が変わる。グループあたりのマシン数ｐがＰＣＤより小さくかつＰＭＤより大きい範囲では、ユーザＭａｐの処理時間は、ユーザＭａｐの計算時間ｔＭとなる。この範囲では、データの読み込みがボトルネックであるが、ディスクよりもアクセス速度の速いメモリにデータを格納することができれば、計算がボトルネックになるからである。グループあたりのマシン数ｐがＰＭＤより小さくなれば、メモリにデータの全てが格納できず、ディスクから全てのデータを読み込む必要があるため、データの読み込みがボトルネックとなる。
【００６３】
図５Ａ及び図５Ｂに示されるように、各マシンのメモリサイズを考慮し、読み込むべきデータのサイズに応じてメモリ及びディスクのいずれか一方から当該データの全てを読み込む場合における、ユーザＭａｐの処理時間ＴＭは、以下の（式５）により推定することができる。以下の（式５）に示されるように、ユーザＭａｐの処理時間ＴＭは、分散実行パターンに応じて、１コンピュータ当たりのデータ読み取り時間（式５の上側の式）、及び、ユーザＭａｐの計算時間ｔＭのいずれか一方の時間となる。
【数２】
2013024597.tif 000004
【００６４】
上述したように、ユーザＭａｐの計算時間（ｔＭ）は、分散実行パターンに依存せず一定である。ユーザＭａｐの計算時間（ｔＭ）は、ユーザＭａｐ計測部１０２により計測される。よって、ユーザＭａｐ計測部１０２は、例えば、１処理（１パラメータ）分のユーザＭａｐを実際に実行させることにより１処理あたりのユーザＭａｐ計算時間を計測し、この計測された１処理あたりのユーザＭａｐ計算時間に処理数を掛けることによりユーザＭａｐの計算時間（ｔＭ）を取得してもよい。もちろん、ユーザＭａｐ計測部１０２は、複数処理分のユーザＭａｐを実際に実行させてもよい。
【００６５】
次に、ユーザＲｅｄｕｃｅの処理時間について説明する。
【００６６】
ユーザＲｅｄｕｃｅは、ユーザＭａｐと異なり様々な実装形態を採ることができる。例えば、１台のマシンにデータを集め、その１台のマシンでＲｅｄｕｃｅ演算を行う実装形態、クラスタ内のマシンでツリーを形成することによりクラスタ全体でＲｅｄｕｃｅ演算行う実装形態等が考えられる。これにより、実装形態によりユーザＲｅｄｕｃｅの処理時間の予測式の形は異なると考えられる。
【００６７】
しかしながら、どのような実装形態であっても、ユーザＲｅｄｕｃｅの処理時間は概ね図６のようになる。図６は、グループあたりのマシン数とユーザＲｅｄｕｃｅの処理時間との関係を示す図である。本実施形態は、回帰分析により、１回の基準Ｒｅｄｕｃｅの処理時間を予測する予測モデル式を取得し、共通の或る分散実行パターンに対応するユーザＲｅｄｕｃｅの処理時間と基準Ｒｅｄｕｃｅの処理時間との比で、当該予測モデル式を補正することにより、各分散実行パターンに対応する１処理あたりのユーザＲｅｄｕｃｅの処理時間を推定する。この場合、ユーザＲｅｄｕｃｅの処理時間ＴＲは、以下の（式６）に示されるように、各分散実行パターンに対応する１処理あたりのユーザＲｅｄｕｃｅの処理時間に、各分散実行パターンに対応する１コンピュータ当たりの処理数が掛け合わされることにより、推定される。
【００６８】
【数３】
2013024597.tif 000005
上記（式６）における、ｆ（ｐ，ｎ）は１回の基準Ｒｅｄｕｃｅの処理時間を予測する予測モデル式であり、ｔＲ／ｔＲａが、共通の或る分散実行パターンに対応するユーザＲｅｄｕｃｅの処理時間と基準Ｒｅｄｕｃｅの処理時間との比である。よって、（ｔＲ／ｔＲａ）＊ｆ（ｐ，ｎ）は、各分散実行パターンに対応する１処理あたりのユーザＲｅｄｕｃｅの処理時間に相当する。
【００６９】
最後に、ユーザＳｅｔｕｐの処理時間について説明する。ユーザＳｅｔｕｐは、上述したように、ＭａｐＲｅｄｕｃｅの実行前の初期化等のために設けられるフェーズである。
【００７０】
図７は、グループあたりのマシン数とユーザＳｅｔｕｐの処理時間との関係を示す図である。図７に示されるように、ユーザＳｅｔｕｐでは、処理数に応じて処理時間ｔＳかかる。よって、ユーザＳｅｔｕｐの処理時間ＴＳは、以下の（式７）により推定することができる。
【数４】
2013024597.tif 000006
【００７１】
このように推定される各フェーズの処理時間ＴＭ、ＴＲ及びＴＳを加算することにより、図８に示されるような上記（式２）を導くことができる。図８は、グループあたりのマシン数とトータル実行時間との関係を示す図である。なお、上記（式２）の２つの式についてそれぞれ最小値を求めて、小さいほうの値を得るためのｐを最終的に取得すればよい。但し、上記（式２）の下側の式では、最小値を取るｐは、ｍｉｎ｛ＰＭＤ、ＰＣＤ｝となる。ユーザＭａｐの処理時間が一定で、ユーザＲｅｄｕｃｅ及びユーザＳｅｔｕｐの各処理時間がグループあたりのマシン数ｐが小さくなるにつれて減少するからである。よって、実際に計算する必要があるのは上記（式２）の上側の式である。上記（式２）の上側の式は、ｆ（ｎ，ｐ）に例えば式１を選んだ場合には、微分して整理するとｐに関する３次式となる。この場合、上記（式２）の上側の式については、例えばカルダノの公式により解析的に算出するようにしてもよい。
【００７２】
スレーブ装置２０は、マスタ装置１０の実行部１０１からの指示に応じて、分散プログラムを実行する。実行部１０１からの指示には、パターン選択部１０９で選択された分散実行パターンに対応して、いくつのプログラムをどのパラメータで実行すべきかが含まれる。なお、上述したように、このような分散プログラムの実行は、マスタ装置１０も担当してもよい。
【００７３】
〔動作例〕
以下、第１実施形態における分散処理システム１の動作例について図９を用いて説明する。図９は、第１実施形態における分散処理システム１の動作例を示すフローチャートである。
【００７４】
マスタ装置１０の実行部１０１は、処理を開始すると、まず、実行すべき分散プログラムに関する情報を取得する（Ｓ９０）。処理の開始は、例えば、マスタ装置１０と通信網５で接続される外部の装置等から送られる分散処理要求を実行部１０１が受信したことを契機に行われる。本実施形態はこの処理の開始の契機を制限しない。
【００７５】
分散プログラムに関する情報としては、例えば、プログラム名、当該プログラムを異なるパラメータで複数実行するためのパラメータリスト、入力ファイル名とそのデータサイズＤ、当該プログラムがＲｅｄｕｃｅフェーズで処理するデータサイズｎなどが取得される。実行部１０１は、パラメータリストに含まれるパラメータ数を処理数Ｃとして取得する。このような情報は、分散処理要求と共に受信されてもよいし、分散処理要求とは別に他の処理部から取得されてもよいし、予め実行部１０１により保持されていてもよい。
【００７６】
次に、実行部１０１は、当該分散プログラムに対応するユーザＭａｐの計算時間（ｔＭ）、ユーザＳｅｔｕｐの処理時間（ｔＳ）及びユーザＲｅｄｕｃｅの処理時間（ｔＲ）がデータ格納部１０７に格納されているか否かを確認する（Ｓ９１）。
【００７７】
実行部１０１は、データ格納部１０７にそれらデータが格納されていない場合（Ｓ９２；ＮＯ）、ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４にそれらデータを計測するよう指示する。この指示に応じて、ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４は、ユーザＭａｐ、ユーザＳｅｔｕｐ、ユーザＲｅｄｕｃｅを実際に実行させることにより、ユーザＭａｐの計算時間（ｔＭ）、ユーザＳｅｔｕｐの処理時間（ｔＳ）及びユーザＲｅｄｕｃｅの処理時間（ｔＲ）を計測し、計測されたｔＭ、ｔＳ、ｔＲをデータ格納部１０７に格納する（Ｓ９３）。
【００７８】
次に、実行部１０１は、クラスタに関する情報がデータ格納部１０７に格納されているか否かを確認する（Ｓ９４）。実行部１０１は、クラスタに関する情報が格納されていない場合（Ｓ９５；ＮＯ）、クラスタプロファイル読込部１０８に読み込みを指示する。
【００７９】
クラスタプロファイル読込部１０８は、この指示に応じて、クラスタプロファイルを読み込み、読み込まれた情報をデータ格納部１０７に格納する（Ｓ９６）。ここでは、クラスタ（分散処理システム１）内のマシン数Ｍ、１マシンあたりのメモリサイズＭｅｍ、ディスクバンド幅Ｗ等が読み込まれ、データ格納部１０７に格納される。
【００８０】
次に、実行部１０１は、予測モデル係数がデータ格納部１０７に既に格納されているか否かを確認する（Ｓ９７）。実行部１０１は、予測モデル係数が未だ格納されていない場合（Ｓ９７；ＮＯ）、基準Ｒｅｄｕｃｅ計測部１０５に計測を指示する。
【００８１】
この指示に応じて、基準Ｒｅｄｕｃｅ計測部１０５は、基準Ｒｅｄｕｃｅで処理されるデータサイズと基準Ｒｅｄｕｃｅを実行するマシン数とを変化させながら、当該基準Ｒｅｄｕｃｅを実際に実行させ、その基準Ｒｅｄｕｃｅの処理時間を計測する（Ｓ９８）。基準Ｒｅｄｕｃｅ計測部１０５は、計測により取得された、マシン数、データサイズ及び処理時間の複数の組み合わせを回帰分析部１０６へ提供する。
【００８２】
回帰分析部１０６は、基準Ｒｅｄｕｃｅ計測部１０５から提供された組み合わせデータを用いて、回帰分析を行うことで予測モデル式の係数を決定し、決定された係数をデータ格納部１０７に格納する（Ｓ９９）。予測モデル式は、１回の基準Ｒｅｄｕｃｅの処理時間を予測する回帰式であり、予め回帰分析部１０６に保持される。
【００８３】
続いて、実行部１０１は、パターン選択部１０９を起動し、パターン選択部１０９に、処理（Ｓ９０）で取得された入力データサイズＤ、Ｒｅｄｕｃｅ処理のデータサイズｎ、処理数Ｃを提供する。
【００８４】
パターン選択部１０９は、データ格納部１０７からトータル実行時間を推定するために必要な各種情報を抽出する。具体的には、パターン選択部１０９は、クラスタに関する情報として、ディスクバンド幅Ｗ、クラスタ内マシン数Ｍ、１マシンあたりのメモリサイズＭｅｍを取得する。更に、パターン選択部１０９は、ユーザＭａｐの計算時間ｔＭ、１処理あたりのユーザＳｅｔｕｐの処理時間ｔＳ、１処理あたりのユーザＲｅｄｕｃｅの処理時間ｔＲ、予測モデル式ｆ（ｐ，ｎ）及び予測モデル係数を取得する。予測モデル式ｆ（ｐ，ｎ）が上記（式１）で示される場合、予測モデル係数ａ１、ａ２、ａ３、ａ４が取得される。
【００８５】
続いて、パターン選択部１０９は、これら取得された情報を用いて、実行すべき分散プログラムのトータル実行時間を推定し、推定されるトータル実行時間が最小となる分散実行パターンを選択する（Ｓ１００）。トータル実行時間の推定は、例えば、上記（式２）を用いて行われる。パターン選択部１０９は、選択された分散実行パターンを特定し得る情報を実行部１０１に渡す。上記（式２）の例によれば、グループあたりのマシン数ｐが実行部１０１に送られる。
【００８６】
実行部１０１は、取得された分散実行パターンを特定し得る情報を用いて、分散処理システム１内の複数のスレーブ装置２０をグループ分けする。実行部１０１は、処理（Ｓ９０）で取得されたパラメータリストに基づいて、各パラメータを各グループに振り分け、各グループに属するスレーブ装置２０に、振り分けられたパラメータと共に、実行依頼を行う。このとき、実行部１０１は、処理（Ｓ９０）で取得されたプログラム名、入力ファイル名等を渡してもよい。
【００８７】
この依頼を受けて、各スレーブ装置２０は、指定されたプログラムを指定されたパラメータでそれぞれ実行する（Ｓ１０１）。
【００８８】
図９の例における動作例では、ユーザＭａｐ計測部１０２、ユーザＳｅｔｕｐ計測部１０３及びユーザＲｅｄｕｃｅ計測部１０４による計測（Ｓ９３）、クラスタプロファイル読込部１０８によるクラスタに関する情報の取得（Ｓ９６）、基準Ｒｅｄｕｃｅ計測部１０５及び回帰分析部１０６による予測モデル式の取得（Ｓ９８及びＳ９９）がシーケンシャルに実行されている。しかしながら、これらの各処理は、処理（Ｓ９０）の前に、並行に実行されてもよい。また、データ格納部１０７に必要なデータが格納されているか否かの確認が、実行部１０１により行われる例が示されたが、その確認は、パターン選択部１０９が実行してもよい。
【００８９】
〔第１実施形態の作用及び効果〕
第１実施形態では、パラメータの異なる複数の処理を実現する分散プログラムのトータル実行時間が最小となる分散実行パターンが選択され、選択された分散実行パターンに基づいて当該分散プログラムが実行される。よって、第１実施形態によれば、実行すべき分散プログラムのトータル実行時間を短縮させることができる。
【００９０】
第１実施形態では、分散プログラムを構成する各フェーズ（Ｍａｐ、Ｓｅｔｕｐ、Ｒｅｄｕｃｅ）でかかる処理時間（ＴＭ、ＴＳ、ＴＲ）を合せることにより取得された、分散実行パターン（例えば、グループあたりのマシン数ｐ）に基づく分散プログラムのトータル実行時間の推定式を用いて、分散プログラムのトータル実行時間が推定される。よって、各フェーズの実装形態の特性に応じた処理時間の推定式を用いれば、正確に、分散プログラムのトータル実行時間を推定することができ、ひいては、最適な分散実行パターンを選択することができる。
【００９１】
Ｍａｐフェーズでかかる処理時間ＴＭでは、計算がボトルネックになる領域とデータの読み取りがボトルネックになる領域とが考慮され、更に、データが格納されている場所（ディスクかメモリか）が考慮された。これにより、各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間（Ｄ／（ｐ×Ｗ））、及び、ユーザＭａｐがデータを処理するのに要する時間（ｔＭ）（データを読む時間は含まれず、純粋にデータ処理にかかる時間）のいずれか一方の時間が、トータル実行時間に含まれるＭａｐフェーズの処理時間として推定される。
【００９２】
Ｒｅｄｕｃｅフェーズに関しては、基準Ｒｅｄｕｃｅを用いることにより１回の基準Ｒｅｄｕｃｅの処理時間を予測する予測モデル式が取得され、共通の１つの分散実行パターンに対応する、１処理あたりのユーザＲｅｄｕｃｅの処理時間と１回の基準Ｒｅｄｕｃｅの処理時間との比で、当該予測モデル式を補正することにより、各分散実行パターンに対応するユーザＲｅｄｕｃｅの処理時間ＴＲが推定される。更に、予測モデル式は、実際に計測された、基準Ｒｅｄｕｃｅの処理時間と処理されるデータ量とマシン数との組み合わせデータを用いた回帰分析より求められる。
【００９３】
Ｓｅｔｕｐフェーズに関しては、１処理あたりのユーザＳｅｔｕｐの処理時間の実測値が取得され、この実測値に、各分散実行パターンに対応する１コンピュータ当たりの処理数が掛け合わされることにより、ユーザＳｅｔｕｐの処理時間ＴＳが推定される。
【００９４】
これらにより、本実施形態によれば、分散プログラムのトータル時間を、その分散プログラムの各フェーズの実装形態に応じて精密に推定することができる。結果、本実施形態によれば、分散プログラムのトータル実行時間を最短にする最適な分散実行パターンを選択することができる。
【００９５】
［第２実施形態］
以下、第２実施形態における分散処理システム１について、第１実施形態と異なる内容を中心に説明し、第１実施形態と同じ内容については適宜省略する。
【００９６】
〔装置構成〕
図１０は、第２実施形態におけるマスタ装置１０の構成例を概念的に示す図である。図１０に示されるように、第２実施形態におけるマスタ装置１０は、第１実施形態の構成に加えて、予測モデル格納部１１０及びモデル選択部１１１を更に有する。これら各処理部についても、例えば、メモリに格納されるプログラムがＣＰＵ１１により実行されることにより実現される。
【００９７】
第１実施形態では、回帰分析部１０６が１つの予測モデル式を保持する例を示した。第２実施形態では、予測モデル格納部１１０が、１回の基準Ｒｅｄｕｃｅの処理時間を予測する複数の予測モデル式を格納する。予測モデル式の構築方法については第１実施形態において述べたとおりである。予測モデル式として一般的な多項式が用いられる場合、予測モデル格納部１１０は、次のような複数の予測モデル式を格納する。
ａ１＋ａ２＊ｐ＋ａ３＊ｎ＝ｆ１（ｐ，ｎ）    （式８−１）
ａ１＋ａ２＊ｐ＋ａ３＊ｎ＋ａ４＊ｐ＾２＝ｆ２（ｐ，ｎ）    （式８−２）
ａ１＋ａ２＊ｐ＋ａ３＊ｎ＋ａ４＊ｎ＾２＝ｆ３（ｐ，ｎ）    （式８−３）
ａ１＋ａ２＊ｐ＋ａ３＊ｎ＋ａ４＊ｎ＊ｐ＝ｆ４（ｐ，ｎ）    （式８−４）
【００９８】
予測モデル格納部１１０は、これら複数の予測モデル式を予め格納していてもよいし、他のコンピュータから取得された複数の予測モデルを格納してもよいし、ユーザインタフェースを介してユーザにより入力された複数の予測モデルを格納してもよい。
【００９９】
回帰分析部１０６は、基準Ｒｅｄｕｃｅ計測部１０５から受けたデータを用いて、予測モデル格納部１１０に格納される複数の予測モデル式に対してそれぞれ回帰分析を行う。回帰分析部１０６は、各予測モデル式の係数がそれぞれ取得されると、それらを予測モデル格納部１１０へ格納する。
【０１００】
モデル選択部１１１は、予測モデル格納部１１０に格納されている複数の予測モデル式の中から、最良の予測モデル式を選択し、選択された予測モデル式に関する情報を予測モデル格納部１１０に格納する。具体的には、モデル選択部１１１は、各予測モデル式の回帰分析結果に基づいてＡＩＣ（Akaike's Information Criterion）、ＢＩＣ（Bayesian Information Criterion）、ＭＤＬ（Minimum Description Length）等のような周知の情報量基準を算出することにより、最良の予測モデル式を選択する。
【０１０１】
パターン選択部１０９は、当該トータル実行時間を推定するにあたり、モデル選択部１１１により選択された予測モデル式を予測モデル格納部１１０から抽出する。
【０１０２】
図１１は、第２実施形態における分散処理システム１の動作例を示すフローチャートである。第２実施形態では、回帰分析部１０６は、処理（Ｓ９９）において、予測モデル格納部１１０に格納される各予測モデル式に対して回帰分析をそれぞれ行う。そして、モデル選択部１１１が、その回帰分析の結果を用いて、情報量基準を算出することにより、複数の予測モデル式の中から１つの予測モデル式を選択する（Ｓ１１０）。パターン選択部１０９は、モデル選択部１１１により選択された予測モデル式を用いて分散プログラムのトータル実行時間を推定する（Ｓ１００）。
【０１０３】
〔第２実施形態の作用及び効果〕
上述のように、第２実施形態では、複数の予測モデル式の候補の中から、最良の予測モデル式が選択されて、この選択された予測モデル式を用いて、各分散実行パターンに対応するユーザＲｅｄｕｃｅの処理時間が推定される。従って、第２実施形態によれば、ユーザＲｅｄｕｃｅの処理時間を一層正確に推定することができ、ひいては、トータル実行時間を最小化する最良の分散実行パターンを選択することができる。
【０１０４】
［変形例］
なお、上述の実施形態では、分散実行パターンを特定する情報としてグループあたりのマシン数ｐを用いることにより、上記（式２）の値が最小となるｐが決定された。分散実行パターンを特定する情報としてはグループ数ｇが用いられてもよい。この場合、上記（式２）のｐをＭ／ｇで置き換えた式を利用して、その式の値が最小となるｇが決定されればよい。
【０１０５】
また、上述の実施形態では、回帰分析により、１回の基準Ｒｅｄｕｃｅの処理時間を予測する予測モデル式が取得され、ユーザＲｅｄｕｃｅの処理時間と基準Ｒｅｄｕｃｅの処理時間との比で当該予測モデル式を補正することにより、ユーザＲｅｄｕｃｅの処理時間が推定された。しかしながら、ユーザＲｅｄｕｃｅの実装形態に対応するユーザＲｅｄｕｃｅの処理時間の理論式を用いて、ユーザＲｅｄｕｃｅの処理時間を推定するようにしてもよい。
【０１０６】
例えば、ユーザＲｅｄｕｃｅの実装形態に応じて、データ通信時間、通信レイテンシ、ユーザＲｅｄｕｃｅに必要なＣＰＵ時間等から導かれるｆ（ｐ，ｎ）を予め保持し、これを用いるようにしてもよい。この場合には、上記（式２）の代わりに以下の（式９）を用いてもよい。この場合には、ユーザＲｅｄｕｃｅ計測部１０４、基準Ｒｅｄｕｃｅ計測部１０５、回帰分析部１０６は不要である。
【０１０７】
【数５】
2013024597.tif 000007
【０１０８】
また、上述の第１実施形態及び第２実施形態では、パターン選択部１０９が、Ｍａｐフェーズ、Ｒｅｄｕｃｅフェーズ、及びＳｅｔｕｐフェーズの各フェーズの処理時間の合計により当該トータル実行時間を推定した。しかしながら、Ｓｅｔｕｐフェーズでは、初期化処理のみが行われ、その処理時間が当該トータル実行時間に与える影響が小さい場合があり得る。この場合、パターン選択部１０９は、ユーザＭａｐの処理時間及びユーザＲｅｄｕｃｅの処理時間のみを用いて当該トータル実行時間を推定するようにしてもよい。上記（式２）の代わりに以下の（式１０）を用いてもよい。この場合には、ユーザＳｅｔｕｐ計測部１０３は不要である。
【数６】
2013024597.tif 000008
【０１０９】
また、上述の第１実施形態及び第２実施形態では、パターン選択部１０９が、Ｍａｐフェーズ、Ｒｅｄｕｃｅフェーズ、及びＳｅｔｕｐフェーズの各フェーズの処理時間の合計により当該トータル実行時間を推定した。しかしながら、処理によっては、Ｓｅｔｕｐフェーズ、Ｒｅｄｕｃｅフェーズの処理時間がＭａｐフェーズの処理時間に対し、十分小さい場合がありうる。この場合、パターン選択部１０９は、ユーザＭａｐの処理時間のみを用いて当該トータル実行時間を推定するようにしてもよい。上記（式２）の代わりに、以下の式を満たすｐを求めることで代用してもよい。
ｔＭ＝Ｄ／（ｐ・Ｗ）
この場合、ユーザReduce計測部１０４と基準Reduce計測部１０５、回帰分析部１０６は不要である。
【０１１０】
また、上述の第１実施形態及び第２実施形態においてマスタ装置１０が有する各処理部は、異なるコンピュータ上に存在していてもよい。例えば、パターン選択部１０９、データ格納部１０７、クラスタプロファイル読込部１０８は、マスタ装置１０以外の他のコンピュータ上で実現されてもよい。
【０１１１】
なお、上述の説明で用いた複数のフローチャートでは、複数のステップ（処理）が順番に記載されているが、本実施形態で実行される処理ステップの実行順序は、その記載の順番に制限されない。本実施形態では、図示される処理ステップの順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態及び各変形例は、内容が相反しない範囲で組み合わせることができる。
【０１１２】
上記の各実施形態及び各変形例の一部又は全部は、以下の付記のようにも特定され得る。但し、各実施形態及び各変形例が以下の記載に限定されるものではない。
【０１１３】
（付記１）複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を備えることを特徴とする分散処理管理装置。
【０１１４】
（付記２）前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記選択部は、前記Ｍａｐフェーズの処理時間の推定式により得られる、又は、前記Ｍａｐフェーズの処理時間の推定式と前記Ｒｅｄｕｃｅフェーズの処理時間の推定式とを合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする付記１に記載の分散処理管理装置。
【０１１５】
（付記３）前記複数のコンピュータの少なくとも１つに前記Ｍａｐフェーズを実行させることにより、前記Ｍａｐフェーズの計算時間を計測するＭａｐフェーズ計測部、
を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間、及び、前記Ｍａｐフェーズ計測部により計測された前記Ｍａｐフェーズの前記計算時間を取得し、取得されたいずれか一方の時間を、前記トータル実行時間に含まれる前記Ｍａｐフェーズの処理時間として用いる、
ことを特徴とする付記２に記載の分散処理管理装置。
【０１１６】
（付記４）前記複数の分散実行パターンの中の第１分散実行パターンで前記複数の処理の中の１つを実行させることにより、該第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を計測するＲｅｄｕｃｅフェーズ計測部、
を更に備え、
前記選択部は、処理されるデータ量と前記各分散実行パターンとに応じて前記Ｒｅｄｕｃｅフェーズの処理の基準とされる基準処理の処理時間を予測する予測モデル式を取得し、該予測モデル式に基づいて前記第１分散実行パターンに対応する基準処理の処理時間を推定し、前記第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間と前記第１分散実行パターンに対応する基準処理の処理時間との比を用いて該予測モデル式を補正することにより、前記各分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を推定し、該推定されたＲｅｄｕｃｅフェーズの処理時間を用いて、前記トータル実行時間に含まれる前記Ｒｅｄｕｃｅフェーズの実行時間を推定する、
ことを特徴とする付記２又は３に記載の分散処理管理装置。
【０１１７】
（付記５）担当するコンピュータの数及び処理されるデータ量を変えながら、前記基準処理を実際に実行することにより、前記基準処理の実行時間を計測する基準処理計測部と、
前記基準処理計測部により取得された、担当するコンピュータの数、処理されるデータ量及び前記基準処理の実行時間の複数の組み合わせデータを用いて回帰分析を行うことにより、前記予測モデル式を推定する回帰分析部と、
を更に備えることを特徴とする付記４に記載の分散処理管理装置。
【０１１８】
（付記６）前記基準処理の処理時間を予測する複数の予測モデル式を格納する予測モデル格納部と、
前記回帰分析部による各予測モデル式に対する回帰分析の結果に基づいて情報量基準により前記複数の予測モデル式を評価することにより、前記複数の予測モデル式の中の１つを選択する予測モデル選択部と、
を更に備え、
前記選択部は、前記予測モデル選択部により選択された予測モデル式を取得する、
ことを特徴とする付記５に記載の分散処理管理装置。
【０１１９】
（付記７）前記複数のフェーズは、後段のフェーズのための初期化処理を行うＳｅｔｕｐフェーズを更に含み、
前記分散処理管理装置は、
前記複数のコンピュータの少なくとも１つに前記複数の処理の中の１つを実行させることにより、１処理あたりのＳｅｔｕｐフェーズの処理時間を計測するＳｅｔｕｐフェーズ計測部、を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりの処理数を取得し、前記１処理あたりのＳｅｔｕｐフェーズの処理時間に、該１コンピュータ当たりの処理数を掛け合わせることにより、前記Ｓｅｔｕｐフェーズの処理時間の推定式を推定し、前記Ｍａｐフェーズの処理時間の推定式及び前記Ｒｅｄｕｃｅフェーズの処理時間の推定式に加えて、前記Ｓｅｔｕｐフェーズの処理時間の推定式を更に合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする付記２から６のいずれか１つに記載の分散処理管理装置。
【０１２０】
（付記８）前記選択部により選択された分散実行パターンにより示されるグループ分け形態に基づいて、各グループに対して各パラメータをそれぞれ割り当て、前記複数の処理を分散実行するように該各グループに指示する分散処理実行部、
を更に備える付記１から７のいずれか１つに記載の分散処理管理装置。
【０１２１】
（付記９）コンピュータが、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する、
ことを含む分散処理管理方法。
【０１２２】
（付記１０）前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記分散実行パターンの選択は、前記Ｍａｐフェーズの処理時間の推定式により得られる、又は、前記Ｍａｐフェーズの処理時間の推定式と前記Ｒｅｄｕｃｅフェーズの処理時間の推定式とを合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
付記９に記載の分散処理管理方法。
【０１２３】
（付記１１）前記コンピュータが、
前記複数のコンピュータの少なくとも１つに前記Ｍａｐフェーズを実行させることにより、前記Ｍａｐフェーズの計算時間を計測する、
ことを更に含み、
前記分散実行パターンの選択は、前記各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間、及び、計測された前記Ｍａｐフェーズの前記計算時間を取得し、取得されたいずれか一方の時間を、前記トータル実行時間に含まれる前記Ｍａｐフェーズの処理時間として用いる、
付記１０に記載の分散処理管理方法。
【０１２４】
（付記１２）前記コンピュータが、
前記複数の分散実行パターンの中の第１分散実行パターンで前記複数の処理の中の１つを実行させることにより、該第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を計測する、
ことを更に含み、
前記分散実行パターンの選択は、
処理されるデータ量と前記各分散実行パターンとに応じて前記Ｒｅｄｕｃｅフェーズの処理の基準とされる基準処理の処理時間を予測する予測モデル式を取得し、
前記予測モデル式に基づいて前記第１分散実行パターンに対応する基準処理の処理時間を推定し、
前記第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間と前記第１分散実行パターンに対応する基準処理の処理時間との比を用いて該予測モデル式を補正することにより、前記各分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を推定する、
ことを含み、
前記推定されたＲｅｄｕｃｅフェーズの処理時間を用いて、前記トータル実行時間に含まれる前記Ｒｅｄｕｃｅフェーズの実行時間を推定する、
ことを特徴とする付記１０又は１１に記載の分散処理管理方法。
【０１２５】
（付記１３）前記コンピュータが、
担当するコンピュータの数及び処理されるデータ量を変えながら、前記基準処理を実際に実行することにより、前記基準処理の実行時間を計測し、
前記担当するコンピュータの数、前記処理されるデータ量及び前記基準処理の実行時間の複数の組み合わせデータを用いて回帰分析を行うことにより、前記予測モデル式を推定する、
ことを更に含む付記１２に記載の分散処理管理方法。
【０１２６】
（付記１４）前記コンピュータが、
前記基準処理の処理時間を予測する複数の予測モデル式に対して回帰分析をそれぞれ行い、
前記各予測モデル式に対する回帰分析の結果に基づいて情報量基準により前記複数の予測モデル式を評価することにより、前記複数の予測モデル式の中の１つを選択する、
ことを更に含み、
前記分散実行パターンの選択は、前記選択された予測モデル式を取得する、
付記１３に記載の分散処理管理方法。
【０１２７】
（付記１５）前記複数のフェーズは、後段のフェーズのための初期化処理を行うＳｅｔｕｐフェーズを更に含み、
前記コンピュータが、
前記複数のコンピュータの少なくとも１つに前記複数の処理の中の１つを実行させることにより、１処理あたりのＳｅｔｕｐフェーズの処理時間を計測する、
ことを更に含み、
前記分散実行パターンの選択は、前記各分散実行パターンに対応する１コンピュータ当たりの処理数を取得し、前記１処理あたりのＳｅｔｕｐフェーズの処理時間に、該１コンピュータ当たりの処理数を掛け合わせることにより、前記Ｓｅｔｕｐフェーズの処理時間の推定式を推定し、前記Ｍａｐフェーズの処理時間の推定式及び前記Ｒｅｄｕｃｅフェーズの処理時間の推定式に加えて、前記Ｓｅｔｕｐフェーズの処理時間の推定式を更に合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
付記１０から１４のいずれか１つに記載の分散処理管理方法。
【０１２８】
（付記１６）前記コンピュータが、
前記選択された分散実行パターンにより示されるグループ分け形態に基づいて、各グループに対して各パラメータをそれぞれ割り当て、
前記複数の処理を分散実行するように前記各グループに指示する、
ことを更に含む付記９から１５のいずれか１つに記載の分散処理管理方法。
【０１２９】
（付記１７）コンピュータに、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を実現させることを特徴とするプログラム。
【０１３０】
（付記１８）前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記選択部は、前記Ｍａｐフェーズの処理時間の推定式により得られる、又は、前記Ｍａｐフェーズの処理時間の推定式と前記Ｒｅｄｕｃｅフェーズの処理時間の推定式とを合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする付記１７に記載のプログラム。
【０１３１】
（付記１９）前記コンピュータに、
前記複数のコンピュータの少なくとも１つに前記Ｍａｐフェーズを実行させることにより、前記Ｍａｐフェーズの計算時間を計測するＭａｐフェーズ計測部、
を更に実現させ、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間、及び、前記Ｍａｐフェーズ計測部により計測された前記Ｍａｐフェーズの前記計算時間を取得し、取得されたいずれか一方の時間を、前記トータル実行時間に含まれる前記Ｍａｐフェーズの処理時間として用いる、
ことを特徴とする付記１８に記載のプログラム。
【０１３２】
（付記２０）前記コンピュータに、
前記複数の分散実行パターンの中の第１分散実行パターンで前記複数の処理の中の１つを実行させることにより、該第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を計測するＲｅｄｕｃｅフェーズ計測部、
を更に実現させ、
前記選択部は、処理されるデータ量と前記各分散実行パターンとに応じて前記Ｒｅｄｕｃｅフェーズの処理の基準とされる基準処理の処理時間を予測する予測モデル式を取得し、該予測モデル式に基づいて前記第１分散実行パターンに対応する基準処理の処理時間を推定し、前記第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間と前記第１分散実行パターンに対応する基準処理の処理時間との比を用いて該予測モデル式を補正することにより、前記各分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を推定し、該推定されたＲｅｄｕｃｅフェーズの処理時間を用いて、前記トータル実行時間に含まれる前記Ｒｅｄｕｃｅフェーズの実行時間を推定する、
ことを特徴とする付記１８又は１９に記載のプログラム。
【０１３３】
（付記２１）前記コンピュータに、
担当するコンピュータの数及び処理されるデータ量を変えながら、前記基準処理を実際に実行することにより、前記基準処理の実行時間を計測する基準処理計測部と、
前記基準処理計測部により取得された、担当するコンピュータの数、処理されるデータ量及び前記基準処理の実行時間の複数の組み合わせデータを用いて回帰分析を行うことにより、前記予測モデル式を推定する回帰分析部と、
を更に実現させることを特徴とする付記２０に記載のプログラム。
【０１３４】
（付記２２）前記コンピュータに、
前記基準処理の処理時間を予測する複数の予測モデル式を格納する予測モデル格納部と、
前記回帰分析部による各予測モデル式に対する回帰分析の結果に基づいて情報量基準により前記複数の予測モデル式を評価することにより、前記複数の予測モデル式の中の１つを選択する予測モデル選択部と、
を更に実現させ、
前記選択部は、前記予測モデル選択部により選択された予測モデル式を取得する、
ことを特徴とする付記２１に記載のプログラム。
【０１３５】
（付記２３）前記複数のフェーズは、後段のフェーズのための初期化処理を行うＳｅｔｕｐフェーズを更に含み、
前記コンピュータに、
前記複数のコンピュータの少なくとも１つに前記複数の処理の中の１つを実行させることにより、１処理あたりのＳｅｔｕｐフェーズの処理時間を計測するＳｅｔｕｐフェーズ計測部、
を更に実現させ、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりの処理数を取得し、前記１処理あたりのＳｅｔｕｐフェーズの処理時間に、該１コンピュータ当たりの処理数を掛け合わせることにより、前記Ｓｅｔｕｐフェーズの処理時間の推定式を推定し、前記Ｍａｐフェーズの処理時間の推定式及び前記Ｒｅｄｕｃｅフェーズの処理時間の推定式に加えて、前記Ｓｅｔｕｐフェーズの処理時間の推定式を更に合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする付記１８から２２のいずれか１つに記載のプログラム。
【０１３６】
（付記２４）前記コンピュータに、
前記選択部により選択された分散実行パターンにより示されるグループ分け形態に基づいて、各グループに対して各パラメータをそれぞれ割り当て、前記複数の処理を分散実行するように該各グループに指示する分散処理実行部、
を更に実現させる付記１７から２３のいずれか１つに記載のプログラム。
【０１３７】
（付記２５）付記１７から２４のいずれか１つに記載のプログラムを記録したコンピュータが読み取り可能な記録媒体。
【０１３８】
この出願は、２０１１年８月１５日に出願された日本出願特願２０１１−１７７７５３号、及び、２０１１年１１月８日に出願された日本出願特願２０１１−２４４５１７号を基礎とする優先権を主張し、それら開示の全てをここに取り込む。
【図１】
2013024597.tif 000009
【図２】
2013024597.tif 000010
【図３】
2013024597.tif 000011
【図４】
2013024597.tif 000012
【図５Ａ】
2013024597.tif 000013
【図５Ｂ】
2013024597.tif 000014
【図６】
2013024597.tif 000015
【図７】
2013024597.tif 000016
【図８】
2013024597.tif 000017
【図９】
2013024597.tif 000018
【図１０】
2013024597.tif 000019
【図１１】
2013024597.tif 000020
【手続補正書】
【提出日】平成26年2月5日(2014.2.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を備えることを特徴とする分散処理管理装置。
【請求項２】
前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記選択部は、前記Ｍａｐフェーズの処理時間の推定式と前記Ｒｅｄｕｃｅフェーズの処理時間の推定式とを合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする請求項１に記載の分散処理管理装置。
【請求項３】
前記複数のコンピュータの少なくとも１つに前記Ｍａｐフェーズを実行させることにより、前記Ｍａｐフェーズの計算時間を計測するＭａｐフェーズ計測部、
を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりのデータ読み取り時間、及び、前記Ｍａｐフェーズ計測部により計測された前記Ｍａｐフェーズの前記計算時間を取得し、取得されたいずれか一方の時間を、前記トータル実行時間に含まれる前記Ｍａｐフェーズの処理時間として用いる、
ことを特徴とする請求項２に記載の分散処理管理装置。
【請求項４】
前記複数の分散実行パターンの中の第１分散実行パターンで前記複数の処理の中の１つを実行させることにより、該第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を計測するＲｅｄｕｃｅフェーズ計測部、
を更に備え、
前記選択部は、処理されるデータ量と前記各分散実行パターンとに応じて前記Ｒｅｄｕｃｅフェーズの処理の基準とされる基準処理の処理時間を予測する予測モデル式を取得し、該予測モデル式に基づいて前記第１分散実行パターンに対応する基準処理の処理時間を推定し、前記第１分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間と前記第１分散実行パターンに対応する基準処理の処理時間との比を用いて該予測モデル式を補正することにより、前記各分散実行パターンに対応する１処理あたりのＲｅｄｕｃｅフェーズの処理時間を推定し、該推定されたＲｅｄｕｃｅフェーズの処理時間を用いて、前記トータル実行時間に含まれる前記Ｒｅｄｕｃｅフェーズの実行時間を推定する、
ことを特徴とする請求項２又は３に記載の分散処理管理装置。
【請求項５】
担当するコンピュータの数及び処理されるデータ量を変えながら、前記基準処理を実際に実行することにより、前記基準処理の実行時間を計測する基準処理計測部と、
前記基準処理計測部により取得された、担当するコンピュータの数、処理されるデータ量及び前記基準処理の実行時間の複数の組み合わせデータを用いて回帰分析を行うことにより、前記予測モデル式を推定する回帰分析部と、
を更に備えることを特徴とする請求項４に記載の分散処理管理装置。
【請求項６】
前記基準処理の処理時間を予測する複数の予測モデル式を格納する予測モデル格納部と、
前記回帰分析部による各予測モデル式に対する回帰分析の結果に基づいて情報量基準により前記複数の予測モデル式を評価することにより、前記複数の予測モデル式の中の１つを選択する予測モデル選択部と、
を更に備え、
前記選択部は、前記予測モデル選択部により選択された予測モデル式を取得する、
ことを特徴とする請求項５に記載の分散処理管理装置。
【請求項７】
前記複数のフェーズは、後段のフェーズのための初期化処理を行うＳｅｔｕｐフェーズを更に含み、
前記分散処理管理装置は、
前記複数のコンピュータの少なくとも１つに前記複数の処理の中の１つを実行させることにより、１処理あたりのＳｅｔｕｐフェーズの処理時間を計測するＳｅｔｕｐフェーズ計測部、
を更に備え、
前記選択部は、前記各分散実行パターンに対応する１コンピュータ当たりの処理数を取得し、前記１処理あたりのＳｅｔｕｐフェーズの処理時間に、該１コンピュータ当たりの処理数を掛け合わせることにより、前記Ｓｅｔｕｐフェーズの処理時間の推定式を推定し、前記Ｍａｐフェーズの処理時間の推定式及び前記Ｒｅｄｕｃｅフェーズの処理時間の推定式に加えて、前記Ｓｅｔｕｐフェーズの処理時間の推定式を更に合わせることにより得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする請求項２から６のいずれか１項に記載の分散処理管理装置。
【請求項８】
前記選択部により選択された分散実行パターンにより示されるグループ分け形態に基づいて、各グループに対して各パラメータをそれぞれ割り当て、前記複数の処理を分散実行するように該各グループに指示する分散処理実行部、
を更に備える請求項１から７のいずれか１項に記載の分散処理管理装置。
【請求項９】
前記複数のフェーズは、前記各処理のための入力データを読み込み、該入力データに所定処理を施すことにより得られるデータを後段のフェーズに送るＭａｐフェーズと、該Ｍａｐフェーズで分解されたデータに対して所定処理を行うＲｅｄｕｃｅフェーズと、を少なくとも含み、
前記選択部は、前記Ｍａｐフェーズの処理時間の推定式により得られる、前記各分散実行パターンに依存する推定式を用いて、前記トータル実行時間を推定する、
ことを特徴とする請求項１に記載の分散処理管理装置。
【請求項１０】
コンピュータが、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する、
ことを含む分散処理管理方法。
【請求項１１】
コンピュータに、
複数のコンピュータが複数のフェーズでパラメータの異なる複数の処理を分散実行するのにかかるトータル実行時間を、該複数のコンピュータのグループ分け形態を示しかつ各処理を担当するコンピュータの数に対応する分散実行パターンに応じて推定することにより、複数の分散実行パターンの中から、該トータル実行時間が最小となる分散実行パターンを選択する選択部、
を実現させることを特徴とするプログラム。
【国際調査報告】
2013024597.tif 000021
2013024597.tif 000022
2013024597.tif 000023
2013024597.tif 000024