(57)【要約】  複数の物理マシンから構成される分散システムにおいて、第１処理によって出力された出力ファイルが第２処理に入力される多段処理を実行するとき、第１処理と第２処理の関係性に基づいて、第１処理を実行する第１仮想マシンの配置先の物理マシンと、出力ファイルを構成する各データブロックの格納先の物理マシンと、第２処理を実行する第２仮想マシンの配置先の物理マシンと、を決定する。
2016067424.tif 000002
【特許請求の範囲】
【請求項１】
複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、通信ネットワークに接続され複数の仮想マシンを実行する複数の物理マシンと、
前記複数の物理マシンのうちの少なくとも１つに接続された管理マシンと
を有し、
前記複数の物理マシン及び前記管理マシンのうちの少なくとも１つである対象マシンが、
第１処理とその第１処理によって出力されるファイルである出力ファイルを入力とする第２処理とを含んだ多段処理における前記第１処理と前記第２処理との関係性に基づいて、前記第１処理を実行する第１仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する１以上のデータブロックの格納先とする１以上の物理マシンと、前記第２処理を実行する第２仮想マシンの配置先の物理マシンと、を決定する
分散システム。
【請求項２】
前記第１処理と前記第２処理の関係性とは、前記第２処理が要求するローカルアクセス値を満たすことであり、
前記ローカルアクセス値とは、前記第２処理に入力される前記出力ファイルを構成する複数のデータブロックの内、前記第２仮想マシンの配置先の物理マシンに格納されるデータブロックの割合に関する値である
請求項１に記載の分散システム。
【請求項３】
前記対象マシンは、前記第２処理が要求するローカルアクセス値を満たすように、前記第１仮想マシン及び前記第２仮想マシンの配置先、並びに、前記出力ファイルを構成する各データブロックの格納先を決定できない場合、前記出力ファイルを構成するデータブロックのレプリカであるレプリカデータを、前記第２仮想マシンの配置先の物理マシンに格納するようになっている
請求項２に記載の分散システム。
【請求項４】
前記対象マシンは、前記レプリカデータを所定数以上作成しなければ、前記第２処理が要求するローカルアクセス値を満たすことができない場合、その旨のエラーを出力するようになっている
請求項３に記載の分散システム。
【請求項５】
前記対象マシンは、前記第２仮想マシンが要求するリソースを提供可能な物理マシンの中から、前記第２仮想マシンの配置先の物理マシンを決定するようになっている
請求項２に記載の分散システム。
【請求項６】
前記対象マシンは、１つのファイルを構成する複数のデータブロックの内の所定数以上のデータブロックを、１つの物理マシンに格納するようになっている
請求項３に記載の分散システム。
【請求項７】
前記対象マシンは、前記第２処理が要求するローカルアクセス値を、前記第１処理が要求するローカルアクセス値よりも大きく設定するようになっている
請求項２に記載の分散システム。
【請求項８】
前記第１処理はバッチ型の処理であり、前記第２処理は対話型の処理である
請求項７に記載の分散システム。
【請求項９】
通信ネットワークに接続され複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、分散システムを構成する複数の物理マシンと、前記通信ネットワーク又は別の通信ネットワークを介して前記複数の物理マシンのうちの少なくとも１つの物理マシンに接続される管理マシンとのうちのいずれかである計算機であって、
第１処理とその第１処理によって出力されるファイルである出力ファイルを入力とする第２処理とを含んだ多段処理における前記第１処理と前記第２処理との関係性を表す情報である管理情報を記憶する記憶資源と、
前記記憶資源に接続されたプロセッサと
を有し、
前記プロセッサが、第１処理とその第１処理によって出力されるファイルである出力ファイルを入力とする第２処理とを含んだ多段処理における前記第１処理と前記第２処理との関係性に基づいて、前記第１処理を実行する第１仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する１以上のデータブロックの格納先とする１以上の物理マシンと、前記第２処理を実行する第２仮想マシンの配置先の物理マシンと、を決定する
計算機。
【請求項１０】
通信ネットワークに接続され複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、分散システムを構成する複数の物理マシンに仮想マシンを配置する方法であって、
第１処理とその第１処理によって出力されるファイルである出力ファイルを入力とする第２処理とを含んだ多段処理における前記第１処理と前記第２処理との関係性を表す情報である管理情報から前記関係性を特定し、
前記特定された関係性に基づいて、前記第１処理を実行する第１仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する１以上のデータブロックの格納先とする１以上の物理マシンと、前記第２処理を実行する第２仮想マシンの配置先の物理マシンと、を決定する
仮想マシンの配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、分散システム、計算機、及び、仮想マシンの配置方法の技術に関する。
【背景技術】
【０００２】
複数の物理マシンをクラスタリングした分散システムに、Ｈａｄｏｏｐを利用した分散ファイルシステムと、複数の仮想マシンとを構築し、大規模データを分散処理する技術が知られている。特許文献１には、ＨＤＦＳ（Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）におけるレプリカデータが１つの物理マシンにのみ格納されたりしないようにする技術、及び、ローカルの物理マシンに格納されているレプリカデータが優先的にリードされるようにする技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＵＳ２０１４／００５９３１０
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＨＤＦＳにおける１つのファイルは、１又は２以上のデータブロックに分割される。複数のファイルを構成する複数のデータブロックが、複数の物理マシンに分散されて格納される。１つのファイルを構成する２以上のデータブロックが、２以上の物理マシンに分散することもある。したがって、物理マシン上で稼働する仮想マシンは、所定の処理を実行するとき、ＨＤＦＳを通じてリモートの物理マシンからデータブロック（レプリカデータも含む）を収集し、その処理に使用される入力ファイルを構成する場合がある。【０００５】
データブロックは、通信ネットワーク（以下「ネットワーク」という）を通じて収集されるので、このデータブロックからファイルを構成する処理は、ネットワーク帯域に対する負荷を高める。さらに、ネットワークを通じてリモートの物理マシンからデータブロックを取得することは、ローカルの物理マシンからデータブロックを取得することに比べて、応答時間が長くなってしまう。【０００６】
そこで、本発明の目的は、ネットワーク帯域に対する負荷を低減する分散システム、物理マシン及び仮想マシンの配置方法を提供することにある。また、本発明の別の目的は、ローカルの物理マシンのデータブロックがアクセスされる可能性を高める分散システム、物理マシン及び仮想マシンの配置方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る分散システムは、複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、通信ネットワークに接続され複数の仮想マシンを実行する複数の物理マシンと、複数の物理マシンのうちの少なくとも１つに接続された管理マシンとを有する。
そして、複数の物理マシン及び管理マシンのうちの少なくとも１つである対象マシンが、第１処理とその第１処理によって出力されるファイルである出力ファイルを入力とする第２処理とを含んだ多段処理における第１処理と第２処理との関係性に基づいて、第１処理を実行する第１仮想マシンの配置先の物理マシンと、出力ファイルを構成する１以上のデータブロックの格納先とする１以上の物理マシンと、第２処理を実行する第２仮想マシンの配置先の物理マシンと、を決定する。
【発明の効果】
【０００８】
本発明によれば、分散システムにおいて、ネットワーク帯域に対する負荷を低減することができる。また、本発明によれば、分散システムにおいて、ローカルの物理マシンのデータブロックがアクセスされる可能性を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る分散システムの動作概要を示す。
【図２】分散システムの構成例を示す。
【図３】ノードの構成例を示す。
【図４】データセット情報テーブルの構成例を示す。
【図５】データ処理情報テーブルの構成例を示す。
【図６】物理リソース情報テーブルの構成例を示す。
【図７】仮想マシン情報テーブルの構成例を示す。
【図８】データブロック格納情報テーブルの構成例を示す。
【図９】データ処理設定画面の構成例を示す。
【図１０】ジョブ設定画面の構成例を示す。
【図１１】データ処理情報の登録に関する処理の例を示すフローチャートである。
【図１２】物理リソースの確保の判定に関する処理の例を示すフローチャートである。
【図１３】ボトムアップ処理の例を示すフローチャートである。
【図１４】トップダウン処理の例を示すフローチャートである。
【図１５】リプロビジョニング処理の例を示すフローチャートである。
【図１６】データ格納処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態を説明する。以下の説明では、「ｘｘｘテーブル」又は「ｘｘｘリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」又は「ｘｘｘリスト」を「ｘｘｘ情報」と呼ぶことができる。
【００１１】
また、以下の説明では、「ｘｘｘ部」を主語として処理を説明する場合があるが、「ｘｘｘ部」は、コンピュータプログラム（「プログラム」という）の一種であってもよい。プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及びネットワークインターフェイスデバイスの内の少なくとも１つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路（例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）など）で行われてもよい。プログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。また、プロセッサ及びメモリをまとめてコントローラと呼んでもよい。
【００１２】
また、以下の説明では、同種の要素を区別して説明する場合には、「ノード１１１ａ」、「ノード１１１ｂ」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「ノード１１１」のように参照符号の内の共通番号のみを使用することがある。
【００１３】
図１は、本実施形態に係る分散システム１の動作概要を示す。
【００１４】
ノード１１１ａ、１１１ｂ、１１１ｃ、１１１ｄは、ネットワーク１１０を通じて、相互にデータを送受信できる。ノード１１１ａ、１１１ｂ、１１１ｃ、１１１ｄ及びネットワーク１１０によって構成されるシステムを、分散システム１という。ノード１１１は、電子計算機の一種である物理マシンである。なお、以下の説明において、処理の主語が「分散システム１」の場合は、１つのノード１１１が、又は、２以上のノード１１１が協調して、その処理を行うとしてもよい。
【００１５】
電子計算機の一種であるクライアント５０は、分散システム１に対して、分析対象であるデータの分析処理を依頼する。分散システム１は、分析ソフトウェア９１０ａ、９１０ｂを実行して分析処理を行う。そして、分散システム１は、ＢＩ（Ｂｕｓｉｎｅｓｓ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）ソフトウェア９３０を実行して、分析ソフトウェア９１０ａ、９１０ｂの分析結果を参照及び利用する。すなわち、第１段階（前段）の処理である分析ソフトウェア９１０ａ、９１０ｂの出力データ（分析結果）が、第２段階（後段）の処理であるＢＩソフトウェア９３０の入力データとなる。このように、分析対象のデータを複数の段階に分けて処理することを、多段処理という。
【００１６】
多段処理は、多段になった複数の処理で構成される。多段処理では、第１処理（前段処理）とその第１処理によって出力されたファイルを入力とする第２処理（後段処理）とで構成された処理セットを少なくとも１つ有する。多段処理において、始点処理（始点としての処理）が、第１処理であり、終点処理（終点としての処理）が、第２処理であり、始点処理と終点処理の間にある処理が、第１処理でもあり第２処理でもある。多段処理は、カスケード状（ツリー状）の複数の処理でもよいし、再帰的な処理（或る処理の結果が所定の条件を満たした場合に終了する処理）でもよい。
【００１７】
次に、図１について説明する。分析ソフトウェア９１０ａは、ファイルｆ１（データブロックｂ１１及びｂ１２）と、ファイルｆ３（データブロックｂ３１及びｂ３２）とを入力データとし、その分析結果としてファイルｆ５（データブロックｂ５１）を出力する機能を有する。
【００１８】
分析ソフトウェア９１０ｂは、ファイルｆ２（データブロックｂ２１及びｂ２２）と、ファイルｆ４（データブロックｂ４１及びｂ４２）とを入力データとし、その分析結果としてファイルｆ６（データブロックｂ６１）を出力する機能を有する。
【００１９】
ＢＩソフトウェア９３０は、分析ソフトウェア９１０ａの分析結果であるｆ５（データブロックｂ５１）と、分析ソフトウェア９１０ｂの分析結果であるファイルｆ６（データブロックｂ６１）とを入力データとし、その分析結果としてファイルｆ７（データブロックｂ７１）を出力する機能を有する。
【００２０】
クライアント５０は、分散システム１（の或るノード１１１）に対して、ファイルｆ１、ｆ２、ｆ３、ｆ４に含まれる情報の分析処理を依頼する。
【００２１】
分散システム１（の或るノード１１１。以下同じ）は、クライアント５０から依頼されたファイルｆ１〜ｆ４の各々を、１又は２以上のデータブロックに分割する。すなわち、分散システムは、ファイルｆ１をデータブロックｂ１１及びｂ１２に、ファイルｆ２をデータブロックｂ２１及びｂ２２に、ファイルｆ３をデータブロックｂ３１及びｂ３２に、ファイルｆ４をデータブロックｂ４１及びｂ４２に分割する。
【００２２】
ここで、これらの分割したデータブロックｂ１１、ｂ１２、ｂ２１、…のそれぞれを何れのノード１１１（の記憶装置７００。以下同じ）に格納するか、及び、これらのソフトウェア９１０ａ、０１ｂ、９３０のそれぞれを何れのノード１１１で実行するか、が重要である。その理由は次の通りである。
【００２３】
ノードは、自ノードで実行されるソフトウェアの入力ファイルを、複数のデータブロックから再構成する必要がある。このとき、他のノード（つまり、リモートのノード）に格納されているデータブロックについては、自ノードは、ネットワーク１１０を通じて取得する必要がある。しかし、上述の通り、ネットワーク１１０を通じてリモートのノードからデータブロックを取得することは、自ノード（つまり、ローカルのノード）からデータブロックを取得することと比較して、時間を要する上、ネットワーク帯域に対する負荷を高める。
【００２４】
そこで、分散システム１は、ソフトウェアの入力ファイルを構成する複数のデータブロックと、そのソフトウェアとが、できるだけ１つのノードに存在するようにする。すなわち、分散システム１は、入力ファイルを構成する複数のデータブロックを、各ノードにランダムに格納するのではなく、できるだけ多く、１つのノードに格納する。また、分散システム１は、その多くのデータブロックが格納されたノードで、その入力ファイルに係るソフトウェアが実行されるようにする。例えば、ハイパーバイザ２０２上に構築された仮想マシン１２１においてそのソフトウェアが実行される構成の場合、分散システム１は、その仮想マシン１２１を、その多くのデータブロックが格納されたノード１１１に配置する。
【００２５】
ここで、ソフトウェアに入力される複数のデータブロックの内、そのソフトウェアが実行されているローカルのノードに格納されているデータブロックの割合に関する値を、「ローカルアクセス値」という。
【００２６】
分析ソフトウェア９１０ａのローカルアクセス値を５０％以上とする、という条件が設定されている場合、分散システム１は、クライアント５０から入力されたファイルｆ１（データブロックｂ１１及びｂ１２）、ｆ３（データブロックｂ３１及びｂ３２）を、分析ソフトウェア９１０ａのローカルアクセス値が５０％以上となるように、各ノードに格納してもよい。分散システム１は、データブロックｂ１１及びｂ１２を、分析ソフトウェア９１０ａが実行されるノード１１１ｇに格納してもよい。
【００２７】
ＢＩソフトウェア９３０のローカルアクセス値を９０％以上とする、という条件が設定されている場合、分散システム１は、分析ソフトウェア９１０ａ及び９１０ｂから出力されたファイルｆ５（データブロックｂ５１）及びｆ６（データブロックｂ６１）を、ＢＩソフトウェア９３０のローカルアクセス値が９０％以上となるように、各ノードに格納してもよい。
【００２８】
分散システム１は、ＢＩソフトウェア９３０に入力されるデータブロックｂ５１及びｂ６１の９０％以上が１つのノードに格納されるように、分散ファイルシステム２００を制御してもよい。そして、分散システム１は、そのデータブロックｂ５１及びｂ６１の９０％以上が格納されるノードに、ＢＩソフトウェア９３０（仮想マシン１２１ｃ）を配置してもよい。
【００２９】
分散システム１は、ＢＩソフトウェア９３０（仮想マシン１２１ｃ）の配置先を先に決定してもよい。そして、分散システム１は、ＢＩソフトウェア９３０に入力されるデータブロックｂ５１及びｂ６１の９０％以上が、ＢＩソフトウェア９３０の実行されるローカルのノードに格納されるように、分散ファイルシステム２００を制御してもよい。
【００３０】
分散システム１は、多段処理を構成する各処理の入出力に係るデータセット（ファイル群）に関する設定情報を含む「データセット情報」を管理してよい。分散システム１は、１つのデータ処理情報に１つのデータセット情報を対応付けてもよい。データセット情報は、データセットの格納に関する条件（例えば、ローカルアクセス値など）を含んでよい。
【００３１】
分散システム１は、多段処理を構成する各処理の順番及びその処理内容、並びに各処理の入出力データに関する設定情報を含む「データ処理情報」を管理してよい。分散システム１は、１つのデータ処理情報に、１つのソフトウェアを対応付けてもよい。データ処理情報は、多段処理における当該処理の順番と、当該処理を実行するソフトウェアと、そのソフトウェアの実行に必要とされる仮想マシンのスペックと、当該処理の入出力に係るデータセット情報とを含んでよい。
【００３２】
分散システム１は、データ処理情報に含まれるソフトウェアを、そのデータ処理情報に対応するデータセット情報に基づくノード群で実行してよい。分散システム１は、ローカルアクセス値がより高くなるように、データブロックを格納するノードを選択してよい。
【００３３】
分散システム１は、１つのファイルから分割された複数のデータブロックが、できるだけ１つのノードに格納されるようにしてもよい。例えば、図１において、分散システム１は、ファイルｆ１から分割されたデータブロックｂ１１及びｂ１２をノード１１１ａ（記憶装置７００ａ）に、ファイルｆ２から分割されたデータブロックｂ２１及びｂ２２をノード１１１ｃ（記憶装置７００ｃ）に格納している。
【００３４】
分散システム１は、第１段階の処理で出力された複数のデータブロックが、できるだけ１つのノードに格納されるようにしてもよい。例えば、図１において、分散システム１は、分析ソフトウェア９１０ａ及び９１０ｂから出力されたデータブロックｂ５１及びｂ６１を、１つのノード１１１ａ（記憶装置７００ａ）に格納している。
【００３５】
本実施形態に係る分散システム１は、事前に設定されたデータ処理情報及びデータセット情報に基づいて、分析対象の複数のデータブロックを適切なノードに格納し、分析処理に関するソフトウェアを実行する仮想マシンを、適切なノードにプロビジョニングすることができる。
【００３６】
図２は、分散システムの変形例を示す。
【００３７】
分散システムは、図１の構成に限らず、ネットワークが多段に構成されてもよい。例えば、図２に示すように、ノード１１１ｅ及び１１１ｆがネットワーク１１０ａに接続され、ノード１１１ｇ及び１１１ｈがネットワーク１１０ｂに接続される。同じネットワーク１１０ａ（又は１１０ｂ）に接続されているノード１１１ｅ及び１１０ｆ（又は、１１０ｇ及び１１０ｈ）を、ノードグループ１１ａ（又は１１ｂ）と呼ぶ。ネットワーク１１０ａ及び１１０ｂは、上流のネットワーク１１０ｃに接続される。ノード１１０ｅ〜１１０ｈは、ネットワーク１１０ａ、１１０ｂ及び１１０ｃを通じて相互にデータを送受信できる。
【００３８】
分散システムには、当該分散システムを管理するための管理マシン５１が含まれてもよい。管理マシン５１は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が情報を表示する場合（具体的には、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合）、管理計算機が管理マシン５１である。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機を含んでよい）が、管理マシン５１である。
【００３９】
分散システムには、当該分散システムを利用するクライアント５０が含まれてもよい。管理マシン５１又はクライアント５０は、分散システムにおける或るノード１１１又は或る仮想マシン１２１であってもよい。
【００４０】
図２では、複数のノードが１つのノードグループを構成しているが、ノードグループはこのような構成に限られない。例えば、複数のノードグループが、さらに１つのノードグループを構成してもよい。このように、ノードグループを多段に構成することにより、管理者は、分散システムをノードグループの単位で柔軟に管理することができる。
【００４１】
図３は、ノード１１１の構成例を示す。なお、図３に示す構成は一例であり、例えば、ある構成要素（例えばｘｘｘ部又はｘｘｘテーブル）は複数の構成要素に分割されていてもよく、複数の構成要素が１つの構成要素に統合されていてもよい。
【００４２】
ノード１１１は、ＣＰＵ４００と、メモリ５００と、ネットワークＩ／Ｆ６００と、記憶装置７００とを備え、これらの要素は、双方向にデータ送受信が可能なバス８００で接続されている。バス８００の一例としては、ＰＣＩｅ（ＰＣＩ  ｅｘｐｒｅｓｓ）などがある。記憶装置７００は、ノード１１１の内部又は外部の何れに備えられてもよい。
【００４３】
記憶装置７００には、データブロックが格納される。記憶装置７００は、所定のコマンドに基づき、データブロックのライト、リード、コピー、移動及び削除などを行う。記憶装置７００の一例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）及びフラッシュメモリなどがある。
【００４４】
ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）６００は、ノード１１１をネットワーク１１０に接続させるためのＩ／Ｆである。ネットワークＩ／Ｆ６００の一例としては、ファイバチャネルアダプタ及びＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）などがある。
【００４５】
ＣＰＵ４００は、メモリ５００に記憶されているコンピュータプログラムを実行し、本実施形態で述べる様々な機能を実現する。
【００４６】
メモリ５００は、ＣＰＵ４００、ネットワークＩ／Ｆ６００及び記憶装置７００などからアクセスされるコンピュータプログラム及びデータなどを記憶する。メモリ５００の一例としては、ＤＲＡＭ（Ｄｙｎａｍｉｔｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）及びＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などがある。
【００４７】
メモリ５００には、コンピュータプログラムの一種として、ファイルシステム制御部５１０と、分散ファイルシステム制御部５２０と、ハイパーバイザ制御部５３０と、リソース割当制御部５４０と、ジョブ制御部５５０と、データセット制御部５６０と、オーケストレーション制御部５７０とが格納されている。さらに、メモリ５００には、情報の一種として、データセット情報テーブル１０００と、データ処理情報テーブル１２００と、物理リソース情報テーブル１３００と、仮想マシン情報テーブル１４００と、データブロック格納情報テーブル１５００と、ジョブスケジュール情報テーブル１６００とが格納される。これらテーブルの詳細については後述する。
【００４８】
ファイルシステム制御部５１０は、ローカルのノード１１１の記憶装置７００に関するファイルシステムを制御する。すなわち、ファイルシステム制御部５１０は、ファイルシステムを通じて、記憶装置７００に格納されているデータへアクセスできるようにする。ファイルシステムの一例としては、ＦＡＴ、ＮＴＦＳ及びｅｘｔ３などがある。
【００４９】
分散ファイルシステム制御部５２０は、分散システム１に関する分散ファイルシステム２００（図１参照）を制御する。すなわち、分散ファイルシステム制御部５２０は、分散ファイルシステム２００を通じて、ローカル又はリモートを問わず、分散システム１を構成する何れかのノード１１１の記憶装置７００に格納されているデータへ、シームレスにアクセスできるようにする。分散ファイルシステム制御部５２０は、リモートのノードのファイルシステム制御部５１０と連携して、分散ファイルシステム２００を実現する。これにより、仮想マシン１２１及びソフトウェアなどは、分散ファイルシステム２００を通じて、アクセス対象のデータが何れのノード１１１に格納されているかを意識することなく、そのデータにアクセスすることができる。また、分散システム１に分散ファイルシステム２００を適用することにより、分散システム１は、ノードの追加及び削除を柔軟に行うことができる。分散ファイルシステム２００の一例としては、ＨＤＦＳなどがある。
【００５０】
分散ファイルシステム制御部５２０は、必要に応じて、データブロックを複製したレプリカデータを生成し、他のノードに格納してもよい。データブロックを冗長化し、分散システム１の可用性を高めるためである。
【００５１】
ハイパーバイザ制御部５３０は、ノード１１１の有するハイパーバイザ２０２（図１参照）を制御する。ハイパーバイザ２０２は、仮想マシン１２１の実行環境を提供する。また、ハイパーバイザ２０２は、ノード１１１（物理マシン）の有する物理リソースと、仮想マシン１２１に割り当てられる仮想リソースとの間を、適宜調整する。ハイパーバイザ２０２の一例としては、ＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）などがある。
【００５２】
ハイパーバイザ制御部５３０は、ハイパーバイザ２０２の制御を通じて、ノード１１１における仮想マシン１２１を制御する。ハイパーバイザ制御部５３０は、仮想マシン１２１の起動、停止、再起動及びノード間の移動などを行ってもよい。
【００５３】
リソース割当制御部５４０は、ノード１１の有する物理リソースを仮想マシン１２１に割り当てる。例えば、ハイパーバイザ制御部５３０は、ノード１１１の有する物理リソース（演算リソース、メモリリソース及びネットワークリソースなど）を、どの仮想マシン１２１にどのくらい割り当てるか（確保するか）、などを制御する。例えば、リソース割当制御部５４０は、仮想マシン１２１に割り当てられる物理リソースを、予め確保する。或る仮想マシンに割り当てられた物理リソースが、他の仮想マシンから勝手に横取りされないようにするためである。
【００５４】
ジョブ制御部５５０は、ノード１１１で実行されるジョブを制御する。ジョブ制御部５５０は、スケジュールに基づいてジョブを制御してよい。ジョブ内容の一例としては、分散ファイルシステム２００に係るデータのバックアップ及びマイグレーション、ハイパーバイザ２０２に係る仮想マシンの作成、再起動、削除及び移動、仮想マシンで実行される各種ソフトウェアの開始及び停止、定期的に実行されるバッチ型処理の開始及び停止、適宜実行される対話型処理の開始及び停止などがある。
【００５５】
データセット制御部５６０は、データセット情報テーブル１０００を制御する。データセット情報は、複数のデータブロックを１つのデータセットとしてグループ化するための設定情報（定義情報）を有する。データセット情報は、データセットの格納場所及び格納方法などの設定情報（定義情報）を有してもよい。「データセット」と「処理」を対応付けることにより、そのデータセットに含まれる複数のデータブロックをまとめて１つのノードに格納し易くなる。複数のデータブロックをまとめて１つのノードに格納することにより、ファイルの再構成の際に発生し得る、リモートのノード１１１からデータブロックを取得する処理が低減され得る。つまり、ノード間のネットワーク帯域に対する負荷が低減され得る。
【００５６】
オーケストレーション制御部５７０は、分散システム１で実行される多段処理及び分散処理を制御する。
【００５７】
オーケストレーション制御部５７０は、ノード１１１で実行される処理が、できるだけ所定の条件を満たす形でデータブロックにアクセスできるようにする。例えば、オーケストレーション制御部５７０は、ノード１１１で実行される処理が、ローカルアクセス値以上の割合で、ローカルのデータブロックにアクセスできるように、その処理を実行する仮想マシン１２１及び／又はその処理で使用されるデータブロックの配置を制御する。オーケストレーション制御部５７０は、各テーブル１０００、１２００、１３００、１４００、１５００、１６００の情報を用いて、各制御部５１０、５２０、５３０、５４０、５５０、５６０と連携しながら、この制御を行ってよい。
【００５８】
１又は２以上の第１処理によって出力される１又は２以上のファイル（「出力ファイル」という）が、１又は２以上の第２処理の入力に用いられるような多段処理において、オーケストレーション制御部５７０は、以下の機能を有してよい。
【００５９】
オーケストレーション制御部５７０は、第１処理と第２処理との関係性に基づいて、第１処理を実行する第１仮想マシンの配置先のノードと、出力ファイルを構成する１以上のデータブロックの格納先とする１以上のノード１１１（の記憶装置７００。以下同じ）と、第２処理を実行する第２仮想マシンの配置先のノード１１１とを、決定してよい。
【００６０】
上記の第１処理と第２処理の関係性とは、第２処理が要求するローカルアクセス値を満たすことであってよい。ここで、ローカルアクセス値とは、第２処理に入力される出力ファイルを構成する複数のデータブロックの内、第２仮想マシンの配置先のノード１１１に格納されるデータブロックの割合に関する値であってよい。これにより、第２処理は、ローカルアクセス値以上の割合で、ローカルのノード１１１のデータブロックにアクセスできる。つまり、ノード間のネットワーク帯域に対する負荷を低減することができると共に、第２処理の実行速度を向上させることができる。ローカルアクセス値の詳細については後述する。
【００６１】
オーケストレーション制御部５７０は、第２処理が要求するローカルアクセス値を満たすように、第１仮想マシン及び第２仮想マシンの配置先、並びに、第１処理の出力ファイルを構成する各データブロックの格納先を決定できない場合、出力ファイルを構成する一部のデータブロックのレプリカであるレプリカデータを、第２仮想マシンの配置先のノードに格納してよい。このとき、レプリカデータを所定数以上作成しなければ、第２処理が要求するローカルアクセス値を満たすことができない場合、オーケストレーション制御部５７０は、その旨のエラーを出力してもよい。必要以上にレプリカデータが作成されると、記憶装置７００の容量が大量に消費されてしまうからである。
【００６２】
オーケストレーション制御部５７０は、第２仮想マシン（又は、第２仮想マシンで実行される処理）が要求するリソースを提供可能なノード１１１の中から、その第２仮想マシンを配置するノード１１１を決定してよい。
【００６３】
オーケストレーション制御部５７０は、１つのファイルを構成する複数のデータブロックの内の所定数以上のデータブロックを、１つのノード１１１に格納してもよい。これにより、複数のデータブロックから１つのファイルを再構成するにあたり、リモートのノード１１１からデータブロックを取得する処理が低減する。よって、ノード間のネットワーク帯域に対する負荷が低減される。
【００６４】
オーケストレーション制御部５７０は、第２処理が要求するローカルアクセス値が、第１処理が要求するローカルアクセス値よりも大きくなるように、自動的に設定してもよい。なぜなら、大規模データを幾つかの段階に分けて処理を行う多段処理の場合、後段の処理ほど、データに対するアクセス頻度が高くなることが多いためである。
【００６５】
なお、第１処理はバッチ型の処理であり、第２処理は対話型の処理であってもよい。なぜなら、多段処理の一例として、第１処理として、日次バッチ的に原データのフィルタリング処理及びラベリング処理、及び、毎時バッチ的に第１処理の結果の集計及び集約処理などを行い、第２処理として、第１処理の結果を用いて対話的に日々の分析業務を行うような処理がある。このように、前段の処理で大規模データに対して低頻度にバッチ型の処理を行い、後段の処理で高頻度に対話型の処理を行う場合、後段の対話型の処理は、前段のバッチ型の処理と比べて、データに対するアクセス頻度が高いからである。
【００６６】
図４は、データセット情報テーブル１０００の構成例を示す。
【００６７】
データセット情報テーブル１０００は、データセット情報１００１をレコードとして管理する。データセット情報１００１は、多段処理を構成する各処理の入出力に係るデータセット（ファイル群）に関する設定情報である。
【００６８】
データセット情報１００１は、フィールド値として、データセットＩＤ１０１０と、データソースＩＤ１０２０と、ルートディレクトリ１０３０と、プライマリデータ格納ノード１０４０と、プライマリデータ格納方法１０５０と、セカンダリデータ格納ノード１０６０と、セカンダリデータ格納方法１０７０とを含んでよい。
【００６９】
データセットＩＤ１０１０は、分散システム１において、データセットを一意に識別するための情報である。データセットＩＤ１０１０は、数字若しくは文字列、又はこれらの組み合わせであってよい。一意性を保証するために、分散システム１の全体で同期をとってから、新たなデータセットに、新たなデータセットＩＤ１０１０を付与してもよい。又は、重複しない複数のＩＤを各ノードに配布しておき、各ノードは、その配布された複数のＩＤの内の未使用の１つを、新たなデータセットのデータセットＩＤ１０１０に付与してもよい。
【００７０】
データソースＩＤ１０２０は、データセットＩＤ１０１０のデータセットの提供元（データソース）を識別するための情報である。データソースＩＤ１０２０は、データセットの提供元のマシンの識別情報、又は、図５に示すデータ処理情報の識別情報などであってよい。
【００７１】
マシンの識別情報の一例としては、ＩＰアドレス（１０．２０．１．１）又はマシン名（Ｃｌｉｅｎｔ−ＰＣ）などがある。データ処理情報の識別情報の一例としては、データ処理情報の処理グループＩＤ１２１０とシーケンス番号１２３０の組合せ（ＰＧ１−１）などがある。
【００７２】
ルートディレクトリ１０３０は、分散ファイルシステム２００において、データセットＩＤ１０１０のデータセットが格納されるルートディレクトリを示す。ルートディレクトリ１０３０は、フルパス名又はＵＲＬなどで表現されてよい。
【００７３】
ルートディレクトリ１０３０は、分散ファイルシステム２００上のディレクトリに限らず、任意のノードにおけるローカルファイルシステム上のディレクトリであってもよい。例えば、ルートディレクトリ１０３０は、ノードＩＤと、そのノードＩＤのノードにおけるファイルシステム上のディレクトリのフルパス名又はＵＲＬと、の組み合わせであってもよい。
【００７４】
プライマリデータ格納ノード１０４０は、データセットＩＤ１０１０のデータセットの内のプライマリデータが格納されているノードを表す。プライマリデータとは、分析処理に関するソフトウェアが優先的にアクセスするデータである。プライマリデータ格納ノード１０４０のノードにおいて実行されるソフトウェアは、当該ノードに格納されているデータ（つまり、プライマリデータ）に優先的にアクセスする。したがって、データセットＩＤ１０１のデータセットを分析するソフトウェアが実行される仮想マシン１２１は、プライマリデータ格納ノード１０４０のノードに配置又は構築されることが望ましい。
【００７５】
プライマリデータ格納方法１０５０は、プライマリデータ格納ノード１０４０のノードに、データを格納する方法を示す。プライマリデータ格納方法１０５０には、プライマリデータ格納ノード１０４０のノードで実行されるソフトウェアに対するローカルアクセス値（例えば「ローカルアクセス値≧５０％」など）が設定されてよい。
【００７６】
１つのファイルから分割された複数のデータブロックを、できるだけ１つのノードに格納したい場合（つまり、ノード間のネットワーク帯域に対する負荷を低減したい場合）、プライマリデータ格納ノード１０４０には、「集約格納」が設定されてよい。
【００７７】
１つのファイルから分割された複数のデータブロックを、できるだけ異なるノードに格納したい場合（つまり、複数のノードにストライピング配置したい場合）、プライマリデータ格納ノード１０４０には、「拡散格納」が設定されてよい。
【００７８】
複数のデータブロックがどのノードに格納されてもよい場合、プライマリデータ格納ノード１０４０には、「分散格納」が設定されてよい。
【００７９】
セカンダリデータ格納ノード１０６０は、データセットＩＤ１０１０のデータセットの内のセカンダリデータが格納されているノードを表す。セカンダリデータとは、データセットを構成するデータ群の中から、プライマリデータを除いた部分のデータである。セカンダリデータ格納ノード１０６０には、格納先を示す情報として、１又は２以上のノードが直接的に設定される他、「全ノード」又は「プライマリデータ格納ノード以外」などが設定されてもよい。
【００８０】
セカンダリデータ格納方法１０７０は、セカンダリデータ格納ノード１０６０のノードに、データを格納する方法を示す。セカンダリデータ格納方法１０７０の設定は、プライマリデータ格納方法１０５０の設定と同様であってよい。
【００８１】
図５は、データ処理情報テーブル１２００の構成例を示す。
【００８２】
データ処理情報テーブル１２００は、分散システム１における、１又は２以上のデータ処理情報１２０１をレコードとして管理する。データ処理情報１２０１は、分析対象のデータの処理に関する情報である。
【００８３】
データ処理情報１２０１は、フィールド値として、処理グループＩＤ１２１０と、優先度１２２０と、シーケンス番号１２３０と、プログラム１２４０と、実行契機１２５０と、要求リソース情報とを含んでよい。
【００８４】
要求リソース情報は、データ処理情報に係る処理に要する物理リソースに関する情報である。要求リソース情報は、フィールド値として、仮想マシン数１２６０と、ＣＰＵ数１２６１と、メモリ容量１２６２と、ディスクタイプ１２６３と、ディスク容量１２６４と、ネットワーク帯域１２６５と、ＩＮＰＵＴデータセットＩＤ１２７０と、ＩＮＰＵＴデータ絞込条件１２７１と、ＩＮＰＵＴローカルアクセス値１２７２と、ＯＵＴＰＵＴデータセットＩＤ１２８０と、ＯＵＴＰＵＴローカルアクセス値１２８１とを含む。
【００８５】
処理グループＩＤ１２１０は、分散システム１において、処理グループを一意に識別するための情報である。処理グループとは、所定の分析を行うための一連の処理（多段処理）をグループ化したものである。処理グループＩＤ１２１０は、数字若しくは文字列、又はこれらの組み合わせであってよい。処理グループＩＤ１２１０は、上記のデータセットＩＤ１０１０の場合と同様に、一意性が保証されてもよい。
【００８６】
優先度１２２０は、当該優先度１２２０に係るデータ処理情報の優先度の高さを示す値である。本実施形態では、優先度１２２０の値が大きいほど、優先度が高いとする。分散システム１の有する物理リソースは有限である。したがって、優先度１２２０の高いデータ処理情報１２０１に係る処理（例えば、プログラム１２４０）に対して、分散システム１の有する物理リソースが優先的に割り当てられたり、又は、優先的に実行されたりしてもよい。したがって、優先度１２２０の低いデータ処理情報１２０１に係る処理は、そのデータ処理情報１２０１の示す通りに（例えば、要求リソース情報の通りに）物理リソースが割り当てられること、又は、実行契機１２５０の示す通りにプログラム１２４０が実行されることが、必ずしも保証されない。
【００８７】
シーケンス番号１２３０は、処理グループＩＤ１２１０の処理グループに属するそれぞれのデータ処理情報１２０１を識別するための値である。よって、１つの処理グループＩＤ１２１０に、１又は２以上のシーケンス番号１２３０が対応付けられてよい。同じ処理グループに属するデータ処理情報１２０１に係る処理は、シーケンス番号１２１０の順番に実行されてよい。つまり、シーケンス番号１２３０は、多段処理を構成する各処理の順序（前段後段の関係）を示しているといってもよい。
【００８８】
プログラム１２４０は、データ処理情報１２０１に係る処理において実行されるプログラムを識別するための値である。例えば、プログラム１２４０には、プログラムの格納されているパス名又はプログラム名などが設定される。プログラム１２４０には、複数のプログラムのＩＤが設定されてもよい。この場合、データ処理情報１２０１に係る処理において、これらの複数のプログラムが実行されてよい。プログラム１２４０には、複数のプログラムの実行順序が記述されたスクリプトのＩＤが設定されてもよい。この場合、データ処理情報１２０１に係る処理において、このスクリプトに記述された順番で、これら複数のプログラムが実行されてよい。
【００８９】
実行契機１２５０は、データ処理情報１２０１に係る処理が実行される契機を表す値である。例えば、実行契機１２５０に「５ＡＭ，ｅｖｅｒｙｄａｙ」が設定されている場合、プログラム１２４０のプログラムが、毎日午前５時に（定期的に）実行される。例えば、実行契機１２５０に「ＡＬＬ」が設定されている場合、プログラム１２４０のプログラムが常に実行される。
【００９０】
次に、要求リソース情報について説明する。要求リソース情報は、データ処理情報１２０１に係る処理に要する物理リソースに関する情報である。
【００９１】
要求リソース情報は、フィールド値として、仮想マシン数１２６０と、ＣＰＵ数１２６１と、メモリ容量１２６２と、ディスクタイプ１２６３と、ディスク容量１２６４と、ネットワーク帯域１２６５と、ＩＮＰＵＴデータセットＩＤ１２７０と、ＩＮＰＵＴデータ絞込条件１２７１と、ＩＮＰＵＴローカルアクセス値１２７２と、ＯＵＴＰＵＴデータセットＩＤ１２８０と、ＯＵＴＰＵＴローカルアクセス値１２８１とを含んでよい。
【００９２】
仮想マシン数１２６０は、データ処理情報１２０１に係る処理を実行するために要する仮想マシンの数を示す値である。ＣＰＵ数１２６１は、１つの仮想マシンに要求されるＣＰＵの数（又はコアの数）を示す値である。メモリ容量１２６２は、１つの仮想マシンに要求されるメインメモリの容量を示す値である。
【００９３】
ディスクタイプ１２６３は、１つの仮想マシンに要求されるディスクのタイプを示す値である。ディスクタイプ１２６３の一例としては、ＨＤＤ及びＳＳＤなどがある。ディスク容量１２６４は、１つの仮想マシンに要求されるディスクの容量を示す値である。
【００９４】
ネットワーク帯域１２６５は、１つの仮想マシンに要求されるネットワークの帯域を示す値である。ＣＰＵ数１２６１、メモリ容量１２６２、ディスクタイプ１２６３、ディスク容量１２６４及びネットワーク帯域１２６５は、仮想マシンの構成情報といってもよい。
【００９５】
ノード１１１に仮想マシン１２１を構築する際、分散システム１は、そのノード１１１の利用可能な物理リソースから、構成情報の要求するリソースを確保できるか否か判定する。当該判定が肯定的な場合（確保可能な場合）、そのノード１１１は、仮想マシン１２１を構築し、構成情報の要求するリソースを、その仮想マシンに割り当てる。
【００９６】
ＩＮＰＵＴデータセットＩＤ１２７０は、ＩＮＰＵＴデータセットを識別するための値である。ＩＮＰＵＴデータセットは、データ処理情報１２０１に含まれるプログラム１２４０のプログラムに入力され得るデータセットである。
【００９７】
ＩＮＰＵＴデータ絞込条件１２７１は、ＩＮＰＵＴデータセットＩＤ１２７０のＩＮＰＵＴデータセットの中から、入力の対象とするＩＮＰＵＴデータを絞り込む条件を示す値である。
【００９８】
例えば、ＩＮＰＵＴデータ絞込条件１２７１に「ＡＬＬ」が設定されている場合、ＩＮＰＵＴデータセットの全てが入力の対象となる。例えば、ＩＮＰＵＴデータ絞込条件１２７１に、クエリ条件式が設定されている場合、そのクエリ条件式に適合するＩＮＰＵＴデータセットが入力の対象となる。例えば、ファイルの属性情報である最終更新日時が所定の日時以降である旨のクエリ条件式が設定されている場合、最終更新日時が所定の日時以降に更新されたＩＮＰＵＴデータが入力の対象となる。このときのクエリ条件式は、例えば、「最終更新日時が２０１０／０１／０１  １２：００以降のファイル」のように表現されてよい。また、特定のキーワードで絞り込むクエリ条件式は、例えば「ファイル内の文字列に『テスト』という文字列を含むファイル」のように表現されてよい。
【００９９】
ＩＮＰＵＴローカルアクセス値１２７２は、データ処理情報１２０１に係る処理に対するＩＮＰＵＴデータセットの内、当該処理が、ローカルのノード１１１の記憶装置７００からアクセス可能なＩＮＰＵＴデータセットの割合を示す値である。ＩＮＰＵＴローカルアクセス値１２７２は、厳守すべき値ではなく、いわゆる目標値であってよい。
【０１００】
例えば、ＩＮＰＵＴローカルアクセス値１２７２「１００％」は、データ処理情報１２０１に係る処理に対する全てのＩＮＰＵＴデータセットが、当該処理の実行されるローカルのノード１１１に格納されるべきことを示す。例えば、ＩＮＰＵＴローカルアクセス値１２７２「１０％」は、データ処理情報１２０１に係る処理に対する全てのＩＮＰＵＴデータセットの内、１０％以上のＩＮＰＵＴデータセットが、当該処理の実行されるローカルのノード１１１に格納されるべきことを示す。
【０１０１】
ＯＵＴＰＵＴデータセットＩＤ１２８０は、ＯＵＴＰＵＴデータセットを識別するための値である。ＯＵＴＰＵＴデータセットは、データ処理情報１２０１に含まれるプログラム１２４０のプログラムから出力され得るデータセットである。
【０１０２】
ＯＵＴＰＵＴローカルアクセス値１２８１は、データ処理情報に係る処理によるＯＵＴＰＵＴデータセットの内、当該処理が、ローカルのノード１１１の記憶装置７００に格納するＯＵＴＰＵＴデータセットの割合を示す値である。ＯＵＴＰＵＴローカルアクセス値１２８１も、厳守すべき値ではなく、いわゆる目標値であってよい。
【０１０３】
例えば、ＯＵＴＰＵＴローカルアクセス値「１００％」は、データ処理情報１２０１に係る処理によるＯＵＴＰＵＴデータセットは、全てローカルのノード１１１に格納されるべきことを示す。例えば、ＯＵＴＰＵＴローカルアクセス値「Ｆｒｅｅ」は、データ処理情報１２０１に係る処理によるＯＵＴＰＵＴデータセットは、任意のノード１１１に格納されて格納されてよいことを示す。
【０１０４】
図５において、データ処理情報１２０１ａは、処理グループＩＤ１２１０「ＰＧ１」の処理グループに属しており、その処理グループにおけるシーケンス番号１２３０が「１」であることを表す。
【０１０５】
そして、データ処理情報１２０１ａは、実行契機１２５０「毎日午前５時」に、プログラム１２４０「Ｈａｄｏｏｐ２」及び「Ｓｐａｒｋ／Ｓｈａｒｋ」が、優先度１２２０「１０」で実行されることを表す。
【０１０６】
そして、データ処理情報１２０１ａに係る処理は、２つの仮想マシン（１２６０）で実行されることを表す。そして、１つの仮想マシンを構築するには、４つのＣＰＵ（１２６１）と、８ＧＢのメモリ容量（１２６３）と、１ＴＢのＨＤＤ（１２６３、１２６４）と、１Ｇｂｐｓのネットワーク帯域（１２６５）と、が必要であることを表す。
【０１０７】
そして、データ処理情報１２０１ａは、ＩＮＰＵＴデータセットＩＤ１２７０「１０１」の全てのデータセット（１２７１）を、プログラム１２４０「Ｈａｄｏｏｐ２」及び「Ｓｐａｒｋ／Ｓｈａｒｋ」に入力すると、ＯＵＴＰＵＴデータセットＩＤ１２８０「１０２」のデータセットが出力されることを表す。そして、このデータセットの入出力において、ＩＮＰＵＴデータセットの５０％以上がローカルアクセスであるべきであり（１２７０）、ＯＵＴＰＵＴデータセットの出力先は問わない（１２６１）ことを表す。
【０１０８】
図６は、物理リソース情報テーブル１３００の構成例を示す。
【０１０９】
物理リソース情報テーブル１３００は、分散システム１における、各ノード１１１の物理リソース情報１３０１をレコードとして管理する。物理リソース情報１３０１は、ノード１１１の有する物理リソースの諸元（性能）及び利用に関する情報である。
【０１１０】
物理リソース情報１３０１は、フィールド値として、ノードグループＩＤ１３１０と、ノードＩＤ１３２０と、ＣＰＵリソース１３３０と、メモリリソース１３４０と、ディスクリソース１３５０と、ネットワークリソース１３６０とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
【０１１１】
ノードグループＩＤ１３１０は、分散システム１において、１又は２以上のノード１１１から構成されるノードグループを一意に識別するための値である。ノードグループＩＤ１３１０は、数字若しくは文字列、又はこれらの組み合わせであってよい。ノードグループＩＤ１３１０は、上記のデータセットＩＤ１０１０と同様の方法により、一意性が保証されてもよい。
【０１１２】
ノードＩＤ１３２０は、分散システム１において、ノード１１１を一意に識別するための値である。よって、１つのノードグループＩＤ１３１０に、１又は２以上のノードＩＤ１３２０が対応付けられてよい。ノードＩＤ１３２０の一例としては、ＩＰアドレス、ＵＲＬ及びノード名などがある。ノードＩＤ１３２０は、上記のデータセットＩＤ１０１と同様の方法により、一意性が保証されてもよい。
【０１１３】
ＣＰＵリソース１３３０は、ノードＩＤ１３２０のノード１１１の有するＣＰＵのリソースに関する情報である。ＣＰＵリソース１３３０は、サブフィールド値として、ＣＰＵの性能などを示すスペック１３３１と、ＣＰＵ又はコアの数を示す総数１３３２と、総数１３３２に対する割り当て済み（使用中）のＣＰＵ又はコアの割合を示す割当率１３３３とを含んでよい。
【０１１４】
メモリリソース１３４０は、ノードＩＤ１３２０のノード１１１の有するメモリのリソースに関する情報である。メモリリソース１３４０は、サブフィールド値として、メモリ容量を示す総量１３４１と、総量１３４１に対する割り当て済み（確保済み）の容量の割合を示す割当率１３４２とを含んでよい。
【０１１５】
ディスクリソース１３５０は、ノードＩＤ１３２０のノード１１１の有するディスクのリソースに関する情報である。ディスクリソース１３５０は、サブフィールド値として、ディスクの種類などを示すスペック１３５１と、ディスクの容量を示す総量１３５２と、総量１３５２に対する割り当て済み（確保済み）の容量の割合を示す割当率１３５３とを含んでよい。
【０１１６】
１つのノードＩＤ１３２０に、複数のディスクリソース１３５０が対応付けられてもよい。例えば、１つのノードＩＤ１３２０のノード１１１に、ＳＳＤ及びＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）のディスクが搭載されている場合、そのノードＩＤ１３２０に、それぞれＳＳＤ及びＳＡＴＡのスペック１３５１を有するディスクリソース１３５０が対応付けられてよい。
【０１１７】
ネットワークリソース１３６０は、ノードＩＤ１３２０のノード１１１の有するネットワークのリソースに関する情報である。ネットワーク１３６０は、サブフィールド値として、ネットワークの種類などを示すスペック１３６１と、ネットワークの帯域を示す総量１３６２と、総量１３６２に対する割り当て済み（確保済み）の帯域の割合を示す割当率１３６３とを含んでよい。
【０１１８】
１つのノードＩＤ１３２０に、複数のネットワークリソース１３６０が対応付けられてもよい。例えば、１つのノードＩＤ１３２０のノード１１１が、Ｅｔｈｅｒｎｅｔ（登録商標）及びＦｉｂｒｅ  Ｃｈａｎｎｅｌに対応している場合、そのノードＩＤ１３２０に、それぞれＥｔｈｅｒｎｅｔ及びＦｉｂｒｅ  Ｃｈａｎｎｅｌのスペック１３６１を有するネットワークリソース１３６０が対応付けられてよい。
【０１１９】
図７は、仮想マシン情報テーブル１４００の構成例を示す。
【０１２０】
仮想マシン情報テーブル１４００は、分散システム１における、各ノード１１１の仮想マシン情報１４０１をレコードとして管理する。仮想マシン情報１４０１は、ノード１１１の有する仮想マシンの諸元（性能）及び利用に関する情報である。
【０１２１】
仮想マシン情報１１１は、フィールド値として、仮想マシンＩＤ１４１０と、ノードＩＤ１４２０と、ＣＰＵ数１４３０と、メモリ容量１４４０と、ディスク容量１４５０と、ネットワーク帯域１４６０と、利用状況１４７０とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
【０１２２】
仮想マシンＩＤ１４１０は、分散システム１において、仮想マシン１２１を一意に識別するための値である。仮想マシンＩＤ１４１０は、上記のデータセットＩＤ１０１０と同様の方法により、一意性が保証されてもよい。
【０１２３】
ノードＩＤ１４２０は、仮想マシンＩＤ１４１０の仮想マシン１２１が格納されているノード１１１を一意に識別するための値である。ノードＩＤ１４２０と図６のノードＩＤ１３２０は、同じ体系のＩＤを使用してよい。
【０１２４】
ＣＰＵ数１４３０は、仮想マシンＩＤ１４１０の仮想マシン１２１の有する（割り当てられた）仮想的なＣＰＵ又はコアの数を示す値である。
【０１２５】
メモリ容量１４４０は、仮想マシンＩＤ１４１０の仮想マシン１２１の有する（割り当てられた）仮想的なメモリの容量を示す値である。
【０１２６】
ディスク容量１４５０は、仮想マシンＩＤ１４１０の仮想マシン１２１の有する（割り当てられた）仮想的なディスクの容量を示す値である。
【０１２７】
ネットワーク帯域１４６０は、仮想マシンＩＤ１４１０の仮想マシンの有する（割り当てられた）仮想的なネットワークの帯域を表す値である。
【０１２８】
利用状況１４７０は、仮想マシンＩＤ１４１０の仮想マシン１２１で実行される処理を示す値である。この処理を示す値は、処理グループＩＤ１２１０及び／又はシーケンス番号１２２０であってよい。
【０１２９】
例えば、図７の仮想マシン情報１４０１ａは、仮想マシンＩＤ１４１０「ＶＭ１」の仮想マシン１２１が、ノードＩＤ１４２０「Ｎｏｄｅ１」のノード１１１に構築されていることを表す。そして、仮想マシン情報１４０１ａは、仮想マシンＩＤ１４１０「ＶＭ１」の仮想マシン１２１が、「４つ」の仮想ＣＰＵと（１４３０）、「８ＧＢ」の仮想メモリと（１４４０）、「１ＴＢ」の仮想ディスクと（１４５０）、「１Ｇｂｐｓ」の仮想ネットワーク帯域と（１４６０）を有していることを表す。そして、仮想マシン情報１４０１ａは、仮想マシンＩＤ１４１０「ＶＭ１」の仮想マシン１２１で、処理グループＩＤ「ＰＧ１」（１４７０）に係る処理が実行されることを示す。
【０１３０】
図８は、データブロック格納情報テーブル１５００の構成例を示す。
【０１３１】
データブロック格納情報テーブル１５００は、分散システム１における、データブロック格納情報１５０１を、レコードとして管理する。データブロック格納情報１５０１は、ファイルから分割されたデータブロックの格納場所に関する情報である。
【０１３２】
データブロック格納情報テーブル１５００は、各ノード１１１の分散ファイルシステム制御部５２０において管理され、必要に応じて、分散システム１内の各ノード１１１間で同期されてよい。
【０１３３】
データブロック格納情報１５０１は、フィールド値として、データブロックＩＤ１５１０と、ファイルＩＤ１５２０と、ファイルオフセット１５３０と、データセットＩＤ１５４０と、格納数１５５０と、格納場所１５６０とを含んでよい。
【０１３４】
データブロックＩＤ１５１０は、分散システム１において、ファイルから分割された各データブロックを一意に識別するための値である。データブロックＩＤ１５１０は、上記のデータセットＩＤ１０１０と同様の方法により、一意性が保証されてもよい。
【０１３５】
ファイルＩＤ１５２０は、分散システム１において、ファイルを一意に識別するための値である。ファイルＩＤ１５２０は、上記のデータセットＩＤ１０１０と同様の方法により、一意性が保証されてもよい。
【０１３６】
ファイルオフセット１５３０は、ファイルＩＤ１５２０のファイルにおける、データブロックＩＤ１５１０のデータブロックのオフセットの位置を示す値である。
【０１３７】
データセットＩＤ１５４０は、ファイルＩＤ１５２０のファイルが属するデータセットのデータセットＩＤを示す値である。データセットＩＤ１５４０と図４のデータセットＩＤ１０１０は、同じ体系のＩＤを使用してよい。
【０１３８】
格納数１５５０は、データブロックＩＤ１５１０のデータブロックが冗長して（複製されて）格納されている数を示す値である。冗長して格納される数は、分散システム１のデフォルト値として設定されてもよいし、データブロック毎に設定されてもよい。冗長して格納されたデータブロックを、レプリカデータという。格納数１５５０は、オリジナルのデータブロックとレプリカデータの合計であってもよいし、レプリカデータのみの数であってもよい。
【０１３９】
格納場所１５６０は、データブロックＩＤ１５１０のデータブロックが格納されている、ノード１１１及びパス名を示す値である。データブロックＩＤ１５１０のレプリカデータが複数存在する場合、格納情報１５６０には、その複数のレプリカデータの各々の格納場所が含まれてよい。
【０１４０】
図９は、データ処理設定画面２０００の構成例を示す。
【０１４１】
データ処理設定画面２０００は、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）の一種として構成され、管理者がデータ処理情報テーブル１２００に情報を登録するために使用されてよい。
【０１４２】
例えば、管理者が、クライアントマシン５０を介して分散システム１の或るノード１１１（又は管理マシン５１）にアクセスすると、クライアントマシン５０の所定のディスプレイにデータ処理設定画面２０００が表示される。データ処理設定画面２０００には、データ処理情報テーブル１２００に設定されている値が表示されてもよい。未設定の場合、データ処理設定画面２０００には、デフォルト値が表示されてもよい。
【０１４３】
データ処理設定画面２０００は、データ処理情報１２０１のフィールド値を設定するための入力領域を有する。
【０１４４】
処理グループＩＤ領域２１１０に値が入力されると、データ処理情報テーブル１２００において、その入力された値を処理グループＩＤ１２１０とする１又は２以上のデータ処理情報１２０１が特定される。ここで、この特定された１又は２以上のデータ処理情報１２０１を、「データ処理情報グループ」という。すなわち、データ処理情報グループには、設定の対象となる１又は２以上のデータ処理情報が含まれる。
【０１４５】
管理者が、処理グループＩＤ領域２１１０に値を入力して、「Ｎｅｗ」ボタン２１１１を押下すると、処理グループＩＤ領域２１１０に入力された値を処理グループＩＤ１２１０に有する、新規のデータ処理情報１２０１が生成される。
【０１４６】
管理者が、処理グループＩＤ領域２１１０に値を入力して、「Ｓｈｏｗ」ボタン２１１２を押下すると、処理グループＩＤ領域２１１０に入力された値を処理グループＩＤ１２１０に有する、既存のデータ処理情報１２０１が抽出され、その抽出されたデータ処理情報１２０１に設定済みの値が、後述する各入力領域に表示される。
【０１４７】
優先度領域２１２０に入力された値は、データ処理情報１２０１の優先度１２２０として設定される。
【０１４８】
初期データセット情報の項目において、データソースＩＤ領域２１３０に入力された値は、新規のデータセット情報１００１のデータソースＩＤ１０２０として設定される。この新規のデータセット情報１００１は、データセット情報テーブル１０００に新規登録される。
【０１４９】
データ処理設定画面２０００は、この入力されたデータソースＩＤが妥当であるか否か（指定された情報をもとに当該データソースにアクセス可能であるか否か）を判定するための「Ｃｈｅｃｋ」ボタン２１３１を有してもよい。例えば、管理者が、データソースＩＤ領域２１３０に値を入力した後に「Ｃｈｅｃｋ」ボタン２１３１を押下すると、そのチェック結果がデータ処理設定画面２０００に表示されてもよい。
【０１５０】
初期データセット情報の項目において、ルートディレクトリ領域２１４０に入力された値は、上記の新規のデータセット情報１００１のルートディレクトリ１０３０に設定される。
【０１５１】
データ処理設定画面２０００は、データ処理情報グループに含まれる複数のデータ処理情報１２０１の各々について、シーケンス番号１２３０に対応するデータ処理情報を設定するためのＧＵＩを有する。例えば、データ処理設定画面２０００は、シーケンス番号毎にデータ処理情報を設定するためのタブ領域２２００を有する。各タブ２２０１、２２０２、２２０３には、シーケンス番号が表示されてよい。
【０１５２】
例えば、図９において、タブ２２０１はシーケンス番号「１」の、タブ２２０２はシーケンス番号「２」の、タブ２２０３はシーケンス番号「３」のデータ処理情報を設定するためのタブ領域２２００を示す。そして、図９は、シーケンス番号「１」のデータ処理情報を設定するためのタブ領域２２００が選択されていることを表す。ここで、対象データ処理情報の内、選択されているタブのシーケンス番号に対応するデータ処理情報を、「対象データ処理情報」という。
【０１５３】
タブ（シーケンス番号）は、任意に追加及び削除できてよい。例えば、図９において、「＋」ボタン２２０４が押下されると、新規タブ（シーケンス番号）が追加され、「−」ボタン２２０５が押下されると、最後のタブ（シーケンス番号）（又はアクティブなタブ）が削除されてよい。
【０１５４】
プログラム領域２２１０に入力された値は、対象データ処理情報におけるプログラム１２４０に設定される。例えば、管理者は、プログラム領域２２１０に、プログラムの格納されているパス名又はプログラム名などを入力する。
【０１５５】
「Ｒｅｆ」ボタン２２１１が押下されると、ファイルシステムから、プログラム領域２２１０に入力されたプログラムの格納されているパス名が探索され、その結果が表示されてもよい。
【０１５６】
実行契機領域２２２０に入力された値は、対象データ処理情報における実行契機１２５０に設定される。「＋」ボタン２２２１が押下されると、実行契機領域２２２０が追加され、複数の処理実行契機が入力できるようになってよい。「−」ボタン２２２２が押下されると、複数の処理実行契機の中の１つが削除されてよい。
【０１５７】
仮想マシン数領域２２３０に入力された値は、対象データ処理情報における仮想マシン数１２６０に設定される。
【０１５８】
各仮想マシンに割り当てる物理リソースは、次のように入力される。ＣＰＵ領域２２４０に入力された値は、対象データ処理情報におけるＣＰＵ数１２６１に設定される。メモリ領域２２４１に入力された値は、対象データ処理情報におけるメモリ容量１２６２に設定される。
【０１５９】
ディスクタイプ領域２２４２に入力された値は、対象データ処理情報におけるディスクタイプ１２６３に設定される。ディスク容量領域２２４３に入力された値は、対象データ処理情報におけるディスク容量１２６４に設定される。「＋」ボタン２２４５が押下されると、ディスクタイプ領域２２４２及びディスク容量領域２２４３が追加され、複数のディスクタイプ及びディスク容量が入力できるようになってよい。「−」ボタン２２４６が押下されると、複数のディスクタイプ及びディスク容量の中の１つが削除されてよい。
【０１６０】
ネットワーク領域２２４４に入力された値は、対象データ処理情報におけるネットワーク１２６５に設定される。
【０１６１】
ＩＮＰＵＴデータセットに係る情報は、次のように入力される。ＩＮＰＵＴデータ絞込条件領域２２５０に入力された値は、対象データ処理情報におけるＩＮＰＵＴデータ絞込条件１２７１に設定される。
【０１６２】
ＩＮＰＵＴローカルアクセス値領域２２５１に入力された値は、対象データ処理情報におけるＩＮＰＵＴローカルアクセス値１２７２に設定される。ＯＵＴＰＵＴローカルアクセス値領域２２６０に入力された値は、対象データ処理情報におけるＯＵＴＰＵＴローカルアクセス値１２８１に設定される。
【０１６３】
ＩＮＰＵＴローカルアクセス値１２７２及び／又はＯＵＴＰＵＴローカルアクセス値１２８１には、自動的に推奨値が設定されてもよい。ＩＮＰＵＴローカルアクセス値１２７２の推奨値は、シーケンス番号が小さいほど小さくなり、シーケンス番号が大きいほど大きくなるとしてもよい。例えば、２段階から構成される処理を設定する場合、１段目（シーケンス番号「１」）のＩＮＰＵＴローカルアクセス値の推奨値を５０％とし、１段目の出力結果を利用して処理を行う２段目（シーケンス番号「２」）のＩＮＰＵＴローカルアクセス値の推奨値を１００％としてもよい。
【０１６４】
ＩＮＰＵＴローカルアクセス値１２７２をこのように設定することで、後段の処理ほどデータアクセス範囲が狭く、且つ、高頻度にアクセスするケースにおいて、ローカルアクセスの頻度を高めることができる。それにより、多段処理の全体における処理のオーバーヘッドを低減することができる。
【０１６５】
また、ＩＮＰＵＴローカルアクセス値１２７２の推奨値をシステムが自動的に設定（提示）することにより、管理者の負担が軽減される。すなわち、管理者は、多段処理における処理シーケンスの段数などを考慮した上で、各処理におけるローカルアクセス値を設定するという負担から解放される。
【０１６６】
「Ｃｒｅａｔｅ」ボタン２００１が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル１２００に新規登録される。このとき、同じ処理グループＩＤを有するデータ処理情報が既にデータ処理情報テーブル１２００に登録されている場合、新規登録エラーが表示されてもよい。
【０１６７】
「Ｕｐｄａｔｅ」ボタン２００２が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル１２００に更新登録される。このとき、同じ処理グループＩＤを有するデータ処理情報がデータ処理情報テーブル１２００に登録されていない場合、更新登録エラーが表示されてもよい。
【０１６８】
また、上記の新規登録及び更新登録時に、対象データ処理情報に入力された値の検証が行われてもよい。そして、値が不整合な場合又は現在の物理リソースで対応が困難な場合には、その旨のエラーが表示されてもよい。
【０１６９】
また、処理グループＩＤ領域２１１０に値が入力され、「Ｄｅｌｅｔｅ」ボタン２００３が押下されると、その入力された処理グループＩＤ１２１０の値を有するデータ処理情報が、データ処理情報テーブル１２００から削除されてもよい。
【０１７０】
なお、データ処理設定画面２０００から入力可能な値は、所定の設定ファイルとして分散システム１にインポートされてもよい。例えば、図９の設定ファイルインポート領域２５１０に設定ファイル名が入力され、「Ｉｍｐｏｒｔ」ボタン２５１２が押下されると、この設定ファイルの内容が対象データ処理情報として、データ処理情報テーブル１２００に登録されてもよい。また、「Ｒｅｆ」ボタン２５１１が押下されると、ファイルシステムから、設定ファイルインポート領域２５１０に入力された設定データの格納されているパス名が検索され、その結果が表示されてもよい。
【０１７１】
図１０は、ジョブ設定画面４０００の構成例を示す。
【０１７２】
ジョブ設定画面４０００は、ＧＵＩの一種として構成され、管理者がジョブスケジュール情報テーブル１６００にジョブスケジュール情報１６０１を登録するために使用されてよい。例えば、管理者が、クライアント５０を介して分散システム１の或るノード１１１（又は管理マシン５１）にアクセスすると、クライアント５０の所定のディスプレイにジョブ設定画面４０００が表示される。ジョブ設定画面４０００には、ジョブスケジュール情報テーブル１６００に設定されている値が表示されてもよい。未設定の場合、ジョブ設定画面４０００には、デフォルト値が表示されてもよい。
【０１７３】
ジョブ設定画面４０００は、ジョブスケジュール情報１６０１のフィールド値を設定するための入力領域を有する。
【０１７４】
ジョブＩＤ領域４１１０に値が入力されると、ジョブスケジュール情報テーブル１６００において、ジョブＩＤ１６１０にその入力された値を有するジョブスケジュール情報１６０１が特定される。この特定されたジョブスケジュール情報１６０１を、「対象ジョブスケジュール情報」という。すなわち、対象ジョブスケジュール情報とは、設定の対象となるジョブスケジュール情報である。
【０１７５】
ジョブＩＤ領域４１１０に値を入力して、「Ｎｅｗ」ボタン４１１１を押下すると、そのジョブＩＤ領域４１１０に入力された値をジョブＩＤ１６１０に有する、新規のジョブスケジュール情報が生成されてもよい。ジョブＩＤ領域４１１０に値を入力して、「Ｓｈｏｗ」ボタン４１１２を押下すると、そのジョブＩＤ領域４１１０に入力された値をジョブＩＤ１６１０に有する、既存のジョブスケジュール情報が抽出され、その抽出されたジョブスケジュール情報に設定済みの値が、後述する各入力領域に表示されてもよい。
【０１７６】
処理グループＩＤ領域４１２０に入力された値は、対象ジョブスケジュール情報の処理グループＩＤ１６２０として設定される。
【０１７７】
シーケンス番号領域４１３０に入力された値は、対象ジョブスケジュール情報のシーケンス番号１６３０として設定される。
【０１７８】
実行形態領域４１４０に入力された値は、対象ジョブスケジュール情報の実行形態１６５０として設定される。
【０１７９】
実行契機領域４１５０に入力された値は、対象ジョブスケジュール情報の実行日時１６４０に設定される。「＋」ボタン４１１３及び「−」ボタン４１１４が押下された場合の動作は、図９における、実行契機領域２２２０の「＋」ボタン２２２１及び「−」ボタン２２２２と同様であってよい。
【０１８０】
優先度領域４１６０に入力された値は、対象ジョブスケジュール情報の優先度１６７０に設定される。
【０１８１】
プログラム領域４１７０に値が入力されると、ジョブＩＤ４１１０のジョブが実行されるとき、処理グループＩＤ領域４１２０に入力された処理グループＩＤについて設定されたプログラム２２１０に代えて、このプログラム領域４１７０に入力された値のプログラムが実行されてよい。
【０１８２】
「Ｒｅｆ」ボタン４１１５が押下されると、ファイルシステムから、プログラム領域４１７５に入力されたプログラムの格納されているパス名が検索され、その結果が表示される。
【０１８３】
「Ｃｒｅａｔｅ」ボタン４００１が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル１６００に新規登録される。このとき、同じジョブＩＤを有するジョブスケジュール情報が既にジョブスケジュール情報テーブル１６００に登録されている場合、新規登録エラーが表示されてもよい。
【０１８４】
「Ｕｐｄａｔｅ」ボタン４００２が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル１６００に更新登録される。このとき、同じジョブＩＤを有するジョブスケジュール情報がジョブスケジュール情報テーブル１２００に登録されていない場合、更新登録エラーが表示されてもよい。
【０１８５】
ジョブＩＤ領域４１１０に値が入力され、「Ｄｅｌｅｔｅ」ボタン４００３が押下されると、その入力されたジョブＩＤ１６１０の値を有するジョブスケジュール情報１６０１が、ジョブスケジュール情報テーブル１６００から削除されてもよい。
【０１８６】
上述では、値の入力、更新及び表示の手段としてＧＵＩの例を説明したが、他の手段であってもよい。他の手段の一例としては、ＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）又はＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などがある。
【０１８７】
図１１は、データ処理情報の登録に関する処理例を示すフローチャートである。
【０１８８】
オーケストレーション制御部５７０は、データ処理設定画面２０００に入力されたデータ処理情報を含む登録処理グループを受信する（Ｓ１０１）
【０１８９】
オーケストレーション制御部５７０は、物理リソース情報テーブル１３００を参照し（Ｓ１０２）、登録処理グループの要求する物理リソースを確保できるか否かを判定する（Ｓ１０３）。当該判定処理の詳細については、後述する（図１２参照）。
【０１９０】
登録処理グループの要求する物理リソースを確保できる場合（Ｓ１０３：Ｙｅｓ）、オーケストレーション制御部５７０は、後述するＳ１０７の処理に進む。
【０１９１】
登録処理グループの要求する物理リソースを確保できない場合（Ｓ１０３：Ｎｏ）、オーケストレーション制御部５７０は、次のＳ１０４の処理に進む。
【０１９２】
オーケストレーション制御部５７０は、登録処理グループの優先度よりも優先度の低いデータ処理情報よって確保されている物理リソースを解放すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する（Ｓ１０４）。例えば、次のように判定する。
【０１９３】
まず、分散システム１の有する全ての物理リソースを対象にして、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第１判定とする。この第１判定は、後述の図１２に相当する。第１判定において物理リソースを確保できないと判定した場合、オーケストレーション制御部５７０は、本処理をエラーとして終了する（Ｓ１０４：Ｎｏ）。
【０１９４】
第１判定において物理リソースを確保できると判定した場合、次にオーケストレーション制御部５７０は、データ処理情報テーブル１２００の中から、登録処理グループの優先度よりも低い優先度のデータ処理情報１２０１を抽出する。このようなデータ処理情報を抽出できない場合、オーケストレーション制御部５７０は、本処理をエラーとして終了する（Ｓ１０４：Ｎｏ）。
【０１９５】
このようなデータ処理情報を抽出できる場合、次にオーケストレーション制御部５７０は、この抽出した低い優先度のデータ処理情報１２０１に係る仮想マシンを別のノード１１１に移動すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第２判定とする。
【０１９６】
第２判定において物理リソースを確保できると判定した場合、オーケストレーション制御部５７０は、この移動対象の仮想マシンに割り当てられている物理リソースを特定する。また、オーケストレーション制御部５７０は、この移動対象の仮想マシンの移動先候補となるノードを抽出する。そして、オーケストレーション制御部５７０は、Ｓ１０５の処理に進む（Ｓ１０４：Ｙｅｓ）。
【０１９７】
第２判定において物理リソースを確保できないと判定した場合、次にオーケストレーション制御部５７０は、この抽出した低い優先度のデータ処理情報に係る仮想マシンに割り当てられている物理リソースを解放（つまり、この仮想マシンを停止）すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第３判定とする。
【０１９８】
第３判定において物理リソースを確保できると判定した場合、オーケストレーション制御部５７０は、この解放対象の仮想マシンに割り当てられている物理リソースを特定する。そして、オーケストレーション制御部５７０は、Ｓ１０５の処理に進む（Ｓ１０４：Ｙｅｓ）。
【０１９９】
第３判定において物理リソース群を確保できないと判定した場合、オーケストレーション制御部５７０は、本処理をエラーとして終了する（Ｓ１０４：Ｎｏ）。
【０２００】
Ｓ１０５において、オーケストレーション制御部５７０は、仮想マシンの移動又は停止に伴う物理リソースの解放を、物理リソース情報テーブル１３００に反映する（Ｓ１０５）。
【０２０１】
オーケストレーション制御部５７０は、ジョブ制御部５５０に対して、リプロビジョニング処理を依頼する（Ｓ１０６）。リプロビジョニング処理は、物理リソースの割り当てを変更するための処理である。リプロビジョニング処理の詳細については、後述する（図１５参照）。
【０２０２】
オーケストレーション制御部５７０は、登録処理グループに関する物理リソースの確保を、物理リソース情報テーブル１３００に反映する（Ｓ１０７）。
【０２０３】
オーケストレーション制御部５７０は、ジョブ制御部５５０に対して、プロビジョニング処理を依頼する（Ｓ１０８）。プロビジョニング処理の依頼を受信したリソース割当制御部５４０は、ノードから要求された（確保された）物理リソースの割り当てられた仮想マシンを生成し、この仮想マシンに分析処理のソフトウェアをインストールする。これらの処理はリソース制御部５４０から依頼を受けた、ハイパーバイザ制御部５３０が実行してもよい。
【０２０４】
オーケストレーション制御部５７０は、登録処理グループに含まれるデータ処理情報を、データ処理情報テーブル１２００に登録する（Ｓ１０９）。
【０２０５】
オーケストレーション制御部５７０は、Ｓ１０８のプロビジョニング処理の完了を待つ（Ｓ１１０：Ｎｏ）。プロビジョニング処理が完了すると（Ｓ１１０：Ｙｅｓ）、オーケストレーション制御部５７０は、次のＳ１１１の処理に進む。
【０２０６】
Ｓ１１１において、オーケストレーション制御部５７０は、Ｓ１０８のプロビジョニング処理及びＳ１０６のリプロビジョニング処理の結果を、仮想マシン情報テーブル１４００に反映する（Ｓ１１１）。
【０２０７】
オーケストレーション制御部５７０は、分散ファイルシステム２００上に、データ格納場所（ルートディレクトリ）を作成する（Ｓ１１２）。初期データセットに対するルートディレクトリは、データ処理設定画面２０００のルートディレクトリ領域２１４０に入力された値であってよい。それ以外のデータセットに対するルートディレクトリは、分散システム１によって自動的に決定されてもよい。
【０２０８】
オーケストレーション制御部５７０は、データセット情報テーブル１０００を更新し（Ｓ１１３）、本処理を終了する。
【０２０９】
以上の処理により、データ処理設定画面２０００を通じて入力された登録処理グループに係る処理を実行するための環境が、分散システム１に構築される。
【０２１０】
図１２は、物理リソースの確保の判定に関する処理例を示すフローチャートである。本処理は、図１１のＳ１０３又はＳ１０４の判定処理に相当する。
【０２１１】
オーケストレーション制御部５７０は、物理リソースの確保の判定を、ボトムアップ方式又はトップダウン方式の何れで行うかを選択する（Ｓ１２１）。この選択は、管理者に選択させてもよいし、設定に基づいて、分散システム１が自動的に選択してもよい。
【０２１２】
ボトムアップ方式とは、同じ処理グループに属する複数の対象データ処理情報の内、シーケンス番号の小さい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要な物理リソースを確保できるか否かを評価する方法である。ボトムアップ方式は、多段処理の前段に係る対象データ処理情報を先に評価するため、多段処理の前段に係る処理が、概して、特定の物理ノード群に集約される。
【０２１３】
トップダウン方式とは、同じ処理グループに属する複数の対象データ処理情報群の内、シーケンス番号の大きい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要なリソースを確保できるか否かを評価する方法である。トップダウン方式は、多段処理の後段に係る対象データ処理情報を先に評価するため、多段処理の後段に係る処理が、概して、特定の物理ノード群に集約される。
【０２１４】
ボトムアップ方式を選択する場合（Ｓ１２１：Ｙｅｓ）、オーケストレーション制御部５７０は、ボトムアップ処理（Ｓ１２２）を実行する。当該ボトムアップ処理の詳細については、後述する（図１３参照）。
【０２１５】
トップダウン方式を選択する場合（Ｓ１２１：Ｎｏ）、オーケストレーション制御部５７０は、トップダウン処理（Ｓ１２３）を実行する。当該トップダウン処理の詳細については、後述する（図１４参照）。
【０２１６】
その後、オーケストレーション制御部５７０は、ボトムアップ処理（Ｓ１２２）又はトップダウン処理（Ｓ１２３）が正常終了であるか否かを判定する（Ｓ１２４）。エラー終了の場合（Ｓ１２４：Ｎｏ）、オーケストレーション制御部５７０は、物理リソースの確保が不可能であると判定し（Ｓ１２９）、図１１に示す処理に戻る。
【０２１７】
正常終了の場合（Ｓ１２４：Ｙｅｓ）、オーケストレーション制御部５７０は、登録処理グループ内の全てのデータ処理情報について、Ｓ１２５〜Ｓ１２７の処理を完了したか否か判定する（Ｓ１２５）。
【０２１８】
登録処理グループ内の全てのデータ処理情報について処理を完了した場合（Ｓ１２５：Ｙｅｓ）、オーケストレーション制御部５７０は、物理リソースの確保が可能であると判定し（Ｓ１２８）、その判定結果を図１１に示す処理に渡すと共に、図１１の処理に戻る。このとき、オーケストレーション制御部５７０は、図１１に示す処理に戻った後に行われる物理リソース情報テーブル１３００の更新処理おいて更新に要する情報も、図１１に示す処理に渡す。すなわち、オーケストレーション制御部５７０は、Ｓ１２８の判定結果と確保対象となる物理リソースの情報とを一緒に、図１１に示す処理に渡す。ここで図１１に示す処理に渡す物理リソースの情報の一例としては、当該データ処理内容に関する各処理シーケンスにおいて作成する仮想マシンの割り当て物理ノード識別情報と、作成する仮想マシン数と、その仮想マシンが利用する計算機資源（ＣＰＵ、メモリ、ディスク、ネットワークなど）の情報などがある。
【０２１９】
登録処理グループ内に未処理のデータ処理情報が残っている場合（Ｓ１２５：Ｎｏ）、オーケストレーション制御部５７０は、未処理のデータ処理情報の１つの選択する（Ｓ１２６）。つまり、登録処理グループ内の未処理のシーケンス番号の１つを選択する。
【０２２０】
次に、オーケストレーション制御部５７０は、その選択したデータ処理情報に係る仮想マシン１２１が配置されるノード数を算出する。すなわち、オーケストレーション制御部５７０は、その選択したデータ処理情報のシーケンス番号に係る処理に使用されるノード数を知る。仮想マシンが配置されるノード数は、ノードリストに含まれる情報に基づいて算出されてよい。ノードリストは、Ｓ１２２のボトムアップ処理又はＳ１２３のトップダウン処理において生成される。詳細については後述するが、ノードリストには、ノードＩＤと、シーケンス番号と、そのノードにおいて確保された物理リソースの値とが、対応付けて登録されている。
【０２２１】
そして、オーケストレーション制御部５７０は、仮想マシンが配置されるノード数が、閾値以下であるか否か判定する（Ｓ１２７）。ここで、仮想マシン１２１の配置されるノード毎にレプリカデータが配置される場合、オーケストレーション制御部５７０は、レプリカデータ数が閾値以下であるか否かを判定してもよい。レプリカデータが大量に生成され、ディスクリソースが大量に消費されることを防ぐためである。この閾値は、デフォルト値として設定されていてもよいし、管理者によって個別に設定されてもよい。
【０２２２】
仮想マシンが配置されるノード数が閾値以下である場合（Ｓ１２７：Ｙｅｓ）、オーケストレーション制御部５７０は、Ｓ１２５の処理に戻る。仮想マシンが配置されるノード数が閾値よりも多い場合（Ｓ１２７：Ｎｏ）、オーケストレーション制御部５７０は、物理リソースの確保が不可能である旨の判定を行い（Ｓ１２９）、図１１に示す処理に戻る。
【０２２３】
以上の処理により、登録処理グループに関する処理に対して、物理リソースの確保が可能か否か判定される。
【０２２４】
図１３は、ボトムアップ処理の例を示すフローチャートである。本処理は、図１２のＳ１２２に相当する。
【０２２５】
オーケストレーション制御部５７０は、登録処理グループ内の全てのデータ処理情報について、Ｓ１４１〜Ｓ１５１の処理を完了している場合（Ｓ１４１：Ｙｅｓ）、処理を終了する。
【０２２６】
未処理のデータ処理情報が残っている場合（Ｓ１４１：Ｎｏ）、オーケストレーション制御部５７０は、未処理の中でシーケンス番号が最小のデータ処理情報を選択する（Ｓ１４２）。つまり、多段処理における前段のデータ処理情報から順に、以下の処理を実行する。
【０２２７】
次に、オーケストレーション制御部５７０は、選択したデータ処理情報のシーケンス番号が「１」であるか否か判定する（Ｓ１４３）。シーケンス番号は多段処理の段数を示す。
【０２２８】
シーケンス番号が「１」である場合（Ｓ１４３：Ｙｅｓ）、オーケストレーション制御部５７０は、変数ＰＮ１に分散システム１を構成するノードの数（最大ノード数）を代入する。ここで、変数ＰＮ１は、本処理において、シーケンス番号がＮの場合（Ｓ１４４ではＮ＝１）における仮想マシン向け物理リソース確保処理において、計算機システムに属するノード群の中から、物理リソース確保対象として選択可能なノードの数を示す。本処理では、後述する通り、所定の条件に適合するノードが適宜選択され、その選択されたノードから必要な物理リソースが確保される。変数ＰＮ１は、ノードが選択されたときに減算される。これにより、変数ＰＮ１が「０」の場合は、物理リソース確保可能なノードが存在しないと判別することができる。すなわち、変数ＰＮ１の値を、本処理の終了条件の一つとして利用することができる。
【０２２９】
また、オーケストレーション制御部５７０は、ノードリストを初期化する（Ｓ１４４）。そして、オーケストレーション制御部５７０は、Ｓ１４６の処理に進む。ここで、ノードリストは、本処理において、データ処理情報のシーケンス番号ごとに、ノードに作成される仮想マシンの数と、各仮想マシンに割り当てる物理リソースの情報（ＣＰＵ、メモリ、ディスク、ネットワーク等）とを管理する。ノードリストの初期化とは、ノードリストに登録されている情報を空（ＮＵＬＬ）にすることであってよい。ノードリストには、計算機システムに属するノード群の中から仮想マシンの作成対象として選択されたノードの識別情報が、適宜追加される。また、ノードに実際に物理リソースを割り当てて仮想マシンを作成することが決定された場合、ノードリストにおいて、実際に割り当てる物理リソースの情報と、仮想マシンを利用する処理に関連付けられているシーケンス番号（すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報）と、ノードの識別情報とが、関連付けられて管理される。これにより、オーケストレーション制御部５７０は、本処理を終了した段階でノードリストを参照することにより、ノードリストに登録されている各ノードについて、どのシーケンス番号の処理向けに何個の仮想マシンを作成する必要があるのか、及び、各仮想マシンを作成するにあたりどれだけの物理リソースを割り当てればよいのかなどを判別することができる。
【０２３０】
シーケンス番号が「１」でない場合（Ｓ１４３：Ｎｏ）、オーケストレーション制御部５７０は、変数ＰＮ１に現在利用可能なノードの数を代入し（Ｓ１４５）、Ｓ１４６の処理に進む。
【０２３１】
例えば、オーケストレーション制御部５７０は、
ＰＮ１  ＝  ｍｉｎ（ＰＮＳ／ＩＬＡ１−ＰＮＳ，最大ノード数−ＰＮＳ）  …（式１）
を算出する。
【０２３２】
ここで、「ＰＮＳ」は、現在のノードリストに追加されているノード数を示す。「ＩＬＡ１」は、今回のループ処理で選択されたデータ処理情報のＩＮＰＵＴローカルアクセス値を示す。つまり、多段処理における、本段のシーケンス番号の処理に関するＩＮＰＵＴローカルアクセス値を示す。
【０２３３】
「ｍｉｎ」は、複数の値の内、最小の値を返す関数である。よって、変数ＰＮ１は、「ＰＮＳ／ＩＬＡ１−ＰＮＳ」と「最大ノード数−ＰＮＳ」の内の何れか小さい方の値となる。ここで、「ＰＮＳ／ＩＬＡ１−ＰＮＳ」の式で算出される値が意味するものは、本処理の今回のループ処理で選択されたデータ処理情報のＩＮＰＵＴローカルアクセス値を鑑みた上で今回のループ処理で新たにノードリストに追加するために選択可能なノードの数を示す。例えば、ＩＬＡ１の値が「１００％」の場合、式１の値は「０」になる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加されたノードの中から仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。なぜならば、そうしなければＩＮＰＵＴローカルアクセス値「１００％」の条件を満たすことができないためである。同様の例として、ＩＬＡ１の値が「５０％」であって、ＰＮＳの値が「１」である場合、式１の値は「１」となる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加された１つのノードに加えて、もう１つのノードを対象に、仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。
【０２３４】
「最大ノード数−ＰＮＳ」の式で算出される値が意味するものは、計算機システムに属するノードの中で物理リソースが未割り当てのノードの最大値である。式１は、「ＰＮＳ／ＩＬＡ１−ＰＮＳ」の式で算出される値が最大値（つまり、「最大ノード数−ＰＮＳ」）を超えてしまった場合に、最大値を変数ＰＮ１に設定する。これにより、システム上ありえない値が変数ＰＮ１に設定されることを防止している。
【０２３５】
Ｓ１４６において、オーケストレーション制御部５７０は、選択したデータ処理情報に含まれる要求リソース情報の各値を、第１変数に代入する（Ｓ１４６）。
【０２３６】
例えば、第１変数に含まれる変数Ｖ、Ｃ、Ｍ、ＤＴ、ＤＳ、Ｎには、それぞれ以下の値が代入される。
変数Ｖに、要求リソース情報の仮想マシン数が代入される。
変数Ｃに、要求リソース情報のＣＰＵ数が代入される。
変数Ｍに、要求リソース情報のメモリ容量が代入される。
変数ＤＴに、要求リソース情報のディスクタイプが代入される。
変数ＤＳに、要求リソース情報のディスク容量が代入される。
変数Ｎに、要求リソース情報のネットワーク帯域が代入される。
【０２３７】
次に、オーケストレーション制御部５７０は、ノードリスト内に、後述のＳ１４８で未選択、且つ、利用可能なノードが存在するか否か判定する（Ｓ１４７）。利用可能なノードとは、例えば、利用可能な物理リソースがまだ残っているノードである。シーケンス番号「１」についての処理であれば、ノードリストは初期化されており、Ｓ１４７はＮｏと判定される。
【０２３８】
シーケンス番号「２」以降の処理であって前段で選択されたノードがノードリストに追加されている場合（Ｓ１４７：Ｙｅｓ）、オーケストレーション制御部５７０は、その中からノードを１つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第２変数に代入する（Ｓ１４８）。本ステップにより前段の仮想マシンを設定したノードが優先的に他の仮想マシン設定ノードとして選択される。利用可能な物理リソースを示す各値は、その選択したノードの物理リソース情報に基づいて算出されてよい。
【０２３９】
例えば、第２変数に含まれる変数Ｃ１、Ｍ１、ＤＴ１、ＤＳ１、Ｍ１には、それぞれ以下の値が代入される。
変数Ｃ１に、選択したノードにおいて利用可能なＣＰＵ数が代入される。
変数Ｍ１に、選択したノードにおいて利用可能なメモリ容量が代入される。
変数ＤＴ１に、選択したノードにおいて利用可能なディスクタイプが代入される。
変数ＤＳ１に、選択したノードにおいて利用可能なディスク容量が代入される。
変数Ｎ１に、選択したノードにおいて利用可能なネットワーク帯域が代入される。
【０２４０】
オーケストレーション制御部５７０は、第２変数の示す利用可能な物理リソースから、第１変数の示す要求リソースを確保できるか否か判定する（Ｓ１４９）。すなわち、オーケストレーション制御部５７０は、Ｓ１４８で選択したノードに、Ｓ１４２で選択したデータ処理情報に係る処理を実行するための仮想マシンを配置できるか否かについて判定しているともいえる。
【０２４１】
例えば、オーケストレーション制御部５７０は、「Ｃ＜Ｃ１」、「Ｍ＜Ｍ１」、「ＤＴとＤＴ１が一致」、「ＤＳ＜ＤＳ１」及び「Ｎ＜Ｎ１」の全ての条件を満たすならば、当該ノードを仮想マシン設定に利用可能としてＳ１４９の判定を「Ｙｅｓ」としてＳ１５０に進み、何れかの条件を満たさないならば、Ｓ１４７に戻る。
【０２４２】
Ｓ１５０において、オーケストレーション制御部５７０は、第１変数の仮想マシン数から「１」を減算する。また、オーケストレーション制御部５７０は、ノードリストに、選択したノードのノードＩＤと、Ｓ１４２で選択したシーケンス番号と、そのノードにおいて確保された物理リソースの値（例えば、第１変数）とを、対応付けて追加する（Ｓ１５０）。すなわち、オーケストレーション制御部５７０は、当該ノードにおいて実際に物理リソースを割り当てて仮想マシンを作成することを決定したので、実際に割り当てる物理リソースの情報、及び、当該仮想マシンを利用する処理に関連付けられているシーケンス番号（すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報）を、当該ノードの識別情報と関連付けてノードリストに追加する。また、ノードリストに新たなノードを追加する際、今回のループ処理（同一のシーケンス番号を有するデータ処理情報に関する処理）において、別のノードから物理リソースの割り当てを行う旨がノードリストに既に登録されている場合は、当該シーケンス番号における処理のＩＮＰＵＴローカルアクセス値の条件を満たすために、当該ノード及び別のノードに、ＩＮＰＵＴデータの複製を保持させる必要がある。この場合、オーケストレーション制御部５７０は、ノードリストに、対象となるデータセットの複製が当該ノード及び別のノードに冗長して格納されている旨を示す情報を追加してよい。実際に各ノードに仮想マシンを作成するにあたり、この冗長格納を示す情報がノードリストに登録されている場合は、この冗長格納を示す情報に基づいて、各ノードに必要なＩＮＰＵＴデータを複製する処理が行われる。
【０２４３】
さらに、オーケストレーション制御部５７０は、第２変数の各値から「１」を減算する。例えば、オーケストレーション制御部５７０は、第２変数の各値から、第１変数の各値を、次のように減算する。
変数Ｃ１から、変数Ｃを減算する。
変数Ｍ１から、変数Ｍを減算する。
変数ＤＳ１から、変数ＤＳを減算する。
変数Ｎ１から、変数Ｎを減算する。
【０２４４】
次に、オーケストレーション制御部５７０は、第１変数の仮想マシン数が「０」か否かを判定する（Ｓ１５１）。すなわち、オーケストレーション制御部５７０は、Ｓ１４２で選択したデータ処理情報が要求する全ての仮想マシンに対して、物理リソースの確保を完了したか否か判定する。
【０２４５】
第１変数の仮想マシン数が「０」でない場合（Ｓ１５１：Ｎｏ）、オーケストレーション制御部５７０は、Ｓ１４９の処理に戻る。第１変数の仮想マシン数が「０」である場合（Ｓ１５１：Ｙｅｓ）、オーケストレーション制御部５７０は、Ｓ１４１の処理に戻り、別のデータ処理情報を選択する。
【０２４６】
上記のＳ１４７の判定において、ノードリスト内に、Ｓ１４８で未選択、且つ、利用可能なノードが存在しない場合（Ｓ１４７：Ｎｏ）、オーケストレーション制御部５７０は、次のＳ１５６の処理に進む。
【０２４７】
オーケストレーション制御部５７０は、変数ＰＮ１が「０」より大きいか否かを判定する（Ｓ１５６）。すなわち、仮想マシンを配置することができるノードが残っているかどうかを判定する。そのようなノードが存在しない場合（Ｓ１５６：Ｎｏ）、本処理で所定の条件を満たす仮想マシン向けの物理リソースの割り当てが不可能と判定し、本処理をエラー終了とする。そのようなノードが存在する場合（Ｓ１５６：Ｙｅｓ）、次のＳ１５２の処理に進む。
【０２４８】
オーケストレーション制御部５７０は、未選択、且つ、（ノードリスト内に限らず）利用可能なノードが存在するか否か判定する（Ｓ１５２）。すなわち、オーケストレーション制御部５７０は、この選択したデータ処理情報に係る処理を実行するための仮想マシンを配置することができるノードが、計算機システム内に存在するか否か判定する。
【０２４９】
そのようなノードが存在する場合（Ｓ１５２：Ｙｅｓ）、オーケストレーション制御部５７０は、変数ＰＮ１から「１」を減算する（Ｓ１５３）。つまり、オーケストレーション制御部５７０は、利用可能なノード数を減らす。
【０２５０】
そして、オーケストレーション制御部５７０は、その中からノードを１つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第２変数に代入する（Ｓ１５４）。この処理は、Ｓ１４８の処理と同様である。そして、オーケストレーション制御部５７０は、Ｓ１４９の処理に進む。
【０２５１】
Ｓ１５２において、そのようなノードが存在しない場合（Ｓ１５２：Ｎｏ）、オーケストレーション制御部５７０は、次の処理を行う。
【０２５２】
オーケストレーション制御部５７０は、選択したデータ処理情報のＯＵＴＰＵＴローカルアクセス値が１００％であるか否か判定する（Ｓ１５５）。すなわち、オーケストレーション制御部５７０は、選択したデータ処理情報に係る処理の出力先が、ローカルのノードに限定されているか否か判定する。
【０２５３】
ＯＵＴＰＵＴローカルアクセス値が１００％である場合（Ｓ１５５：Ｙｅｓ）、オーケストレーション制御部５７０は、エラーが発生したとして処理を終了とする。なぜなら、Ｓ１５２の判定が「Ｎｏ」であり、且つ、ＯＵＴＰＵＴローカルアクセス値を１００％とする条件は、満たすことができないからである。
【０２５４】
ＯＵＴＰＵＴローカルアクセス値が１００％ではない場合（Ｓ１５５：Ｎｏ）、オーケストレーション制御部５７０は、上記のＳ１５４の処理に進む。
【０２５５】
なお、ＯＵＴＰＵＴローカルアクセス値の条件が目標値である場合、オーケストレーション制御部５７０は、ＯＵＴＰＵＴローカルアクセス値が１００％であっても（つまり、Ｓ１５５の判定が「Ｙｅｓ」であっても）、Ｓ１５４の処理に進んでもよい。
【０２５６】
以上のボトムアップ処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部５７０は、図１２に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
【０２５７】
図１４は、トップダウン処理の例を示すフローチャートである。本処理は、図１２のＳ１２３に相当する。
【０２５８】
図１４に示すＳ１６１〜Ｓ１７６の処理は、Ｓ１６２（Ｓ１４２に相当）、Ｓ１６３（Ｓ１４３に相当）及びＳ１６５（Ｓ１４５に相当）を除き、図１３に示すＳ１４１〜Ｓ１５６の処理と同様である。そこで、以下では、Ｓ１６２、Ｓ１６３及びＳ１６５の処理のみを説明し、図１３と同様の処理については説明を省略する。
【０２５９】
Ｓ１６２において、オーケストレーション制御部５７０は、未処理の中でシーケンス番号が最大のデータ処理情報を選択する（Ｓ１６２）。つまり、多段処理における後段のデータ処理情報から順に処理を実行する。
【０２６０】
Ｓ１６３において、オーケストレーション制御部５７０は、選択したデータ処理情報のシーケンス番号が「最大値」であるか否か判定する（Ｓ１６３）。
【０２６１】
シーケンス番号が「最大値」である場合（Ｓ１６３：Ｙｅｓ）、オーケストレーション制御部５７０は、Ｓ１６４の処理に進む。シーケンス番号が「最大値」でない場合（Ｓ１６３：Ｎｏ）、オーケストレーション制御部５７０は、Ｓ１６５の処理に進む。
【０２６２】
Ｓ１６５において、オーケストレーション制御部５７０は、変数ＰＮ１に現段階で利用可能なノードの数を代入し（Ｓ１６５）、Ｓ１６６の処理に進む。ただし、この変数ＰＮ１は、以下のように、図１３のＳ１４５とは異なる方法で算出されてよい。
【０２６３】
例えば、オーケストレーション制御部５７０は、
ＰＮ１  ＝  ｍｉｎ（ＰＮＳ／ＩＬＡ２−ＰＮＳ，最大ノード数−ＰＮＳ）  …（式２）
を算出する。
【０２６４】
ここで、変数ＩＬＡ２は、前回のループ処理で選択されたデータ処理情報のＩＮＰＵＴローカルアクセス値を示す。つまり、多段処理における、前段のシーケンス番号の処理に関するＩＮＰＵＴローカルアクセス値を示す。これにより、前段の処理のＩＮＰＵＴローカルアクセス値に基づいて、本段の処理に利用可能なノード数を算出することができる。他の変数については、図１３で説明したとおりである。
【０２６５】
以上のトップダウン処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部５７０は、図１２に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
【０２６６】
ボトムアップ処理及びトップダウン処理の何れによっても、物理リソースを確保可能か否か判断することができるが、選択される処理によって、各データ処理情報に係る仮想マシンが配置されるノード、及びその仮想マシンに提供される物理リソースなどが異なり得る。
【０２６７】
以上の処理により、ノードに仮想マシンが生成（配置）されると共に、その仮想マシンに分析処理に係るソフトウェアがインストールされる。
【０２６８】
図１５は、リプロビジョニング処理の例を示すフローチャートである。本処理は、図１１のＳ１０６の処理に相当する。
【０２６９】
リソース割当制御部５４０は、リプロビジョニング処理の依頼を受信すると、以下の処理を実行する（Ｓ３０１）。
【０２７０】
リソース割当制御部５４０は、依頼された全てのノードについて、Ｓ３０２〜Ｓ３０６の処理を完了したか否か判定する（Ｓ３０２）。全て完了した場合（Ｓ３０２：Ｙｅｓ）、リソース割当制御部５４０は、処理を終了する。
【０２７１】
未処理のノードが残っている場合（Ｓ３０２：Ｎｏ）、リソース割当制御部５４０は、未処理のノードの１つを選択する（Ｓ３０３）。
【０２７２】
リソース割当制御部５４０は、その選択したノードに、移動又は削除の対象の仮想マシンが存在するか否か判定する（Ｓ３０４）。
【０２７３】
そのような仮想マシンが存在しない場合（Ｓ３０４：Ｎｏ）、リソース割当制御部５４０は、Ｓ３０２に戻り、残りの未処理のノードについて同様の処理を行う。
【０２７４】
そのような仮想マシンが存在する場合（Ｓ３０４：Ｙｅｓ）、リソース割当制御部５４０は、選択したノードにおける、移動又は削除の対象の仮想マシンを特定する（Ｓ３０５）。
【０２７５】
そして、リソース割当制御部５４０は、特定した仮想マシンの移動又は削除を行う（Ｓ３０６）。リソース割当制御部５４０は、この処理をハイパーバイザ制御部５３０に依頼してもよい。この依頼を受信したハイパーバイザ制御部５３０は、Ｓ３０３で選択されたノードから、特定された仮想マシンを移動又は削除する。つまり、ハイパーバイザ制御部５３０は、Ｓ３０３で選択されたノードにおいて、その特定された仮想マシンに割り当てられていた物理リソースを解放する。
【０２７６】
これらの処理が完了した後、リソース割当制御部５４０は、Ｓ３０２の処理に戻り、残りの未処理のノードについて同様の処理を行う。
【０２７７】
以上の処理により、ノードにおいて仮想マシンに確保されていた物理リソースが解放される。これにより、この物理リソースが解放されたノードに、新たな仮想マシン（例えば、優先度の高い）を生成することができるようになる。
【０２７８】
図１６は、データ格納処理の例を示すフローチャートである。
【０２７９】
分散ファイルシステム制御部５２０は、データブロックの格納要求を受信すると、以下の処理を実行する（Ｓ５０１）。このデータブロックは、クライアント５０から格納要求として送信されたデータセットから分割されたものであってよい。
【０２８０】
分散ファイルシステム制御部５２０は、データセット情報テーブル１０００の中に、格納対象のデータブロックに対応するデータセットＩＤが存在するか否かを判定する（Ｓ５０３）。
【０２８１】
適合するデータセットＩＤが存在しない場合（Ｓ５０３：Ｎｏ）、分散ファイルシステム制御部５２０は、通常のデータブロックの格納処理を行い（Ｓ５０４）、処理を終了する。つまり、新規のデータブロックの格納処理を行う。
【０２８２】
適合するデータセットＩＤが存在する場合（Ｓ５０３：Ｙｅｓ）、分散ファイルシステム制御部５２０は、格納対象のデータブロックの格納先のノードを選定する（Ｓ５０５）。例えば、分散ファイルシステム制御部５２０は、Ｓ５０３において適合したデータセットＩＤを含むデータセット情報に設定されているノード（例えば、プライマリデータ格納ノード１０４０に格納されているノード）の中から、条件（例えば、プライマリデータ格納方法１０５０の条件）に適合するノードを選定する。
【０２８３】
次に、分散ファイルシステム制御部５２０は、格納対象のデータブロックを、その適合したデータセット情報に含まれる格納数１５５０の分、ノード１１１に格納し終えたか否か判定する（Ｓ５０６）。すなわち、分散ファイルシステム制御部５２０は、格納対象のデータブロックとそのレプリカデータの数が、格納数１５５０に一致したか否かを判定する。
【０２８４】
まだデータブロックを格納する必要がある場合（Ｓ５０６：Ｎｏ）、分散ファイルシステム制御部５２０は、格納対象のデータブロックを、格納先のノードに格納する（Ｓ５０７）。分散ファイルシステム制御部５２０は、格納先のノードのファイルシステム制御部５１０に、データブロックの格納処理を依頼してよい。格納処理が完了した後、分散ファイルシステム制御部５２０は、Ｓ５０６の処理に戻る。
【０２８５】
格納数１５５０の分、データブロックを格納し終えた場合（Ｓ５０６：Ｙｅｓ）、分散ファイルシステム制御部５２０は、データブロック格納情報テーブル１５００を更新し（Ｓ５０８）、処理を終了する。例えば、分散ファイルシステム制御部５２０は、データブロックの格納先を、格納場所１５６０に登録する。
【０２８６】
以上の処理により、格納対象のデータブロック及びレプリカデータが、各ノードに分散格納される。
【０２８７】
本実施形態によれば、多段分析処理に関する各ソフトウェア及びデータを、各ノードに適切に配置することができる。これにより、ノード間のネットワーク帯域に対する負荷を低減することができる。また、処理の実行においてデータアクセス時に発生するオーバーヘッドを低減することができる。
【０２８８】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【０２８９】
オーケストレーション制御部５７０は、何れのノードで実行されてもよい。オーケストレーション制御部５７０を実行するノードは、所定の条件によって決定されてもよい。複数のノードの内の一部のノードだけがオーケストレーション制御部５７０を有してもよい。
【０２９０】
オーケストレーション制御部５７０は、複数のノードの内の少なくとも１つのノードに接続された管理マシンが有してもよい。この場合は、何れのノードもオーケストレーション制御部５７０を有さなくてもよい。管理マシンは、複数のノードが接続されている通信ネットワーク又は別の通信ネットワークを介して、複数のノードの内の少なくとも１つのノードに接続される。
【符号の説明】
【０２９１】
１：分散システム  １１０：ネットワーク  １１１：ノード  １２１：仮想マシン  ２００：分散ファイルシステム  ７００：記憶装置
【図１】
2016067424.tif 000003
【図２】
2016067424.tif 000004
【図３】
2016067424.tif 000005
【図４】
2016067424.tif 000006
【図５】
2016067424.tif 000007
【図６】
2016067424.tif 000008
【図７】
2016067424.tif 000009
【図８】
2016067424.tif 000010
【図９】
2016067424.tif 000011
【図１０】
2016067424.tif 000012
【図１１】
2016067424.tif 000013
【図１２】
2016067424.tif 000014
【図１３】
2016067424.tif 000015
【図１４】
2016067424.tif 000016
【図１５】
2016067424.tif 000017
【図１６】
2016067424.tif 000018
【国際調査報告】
2016067424.tif 000019
2016067424.tif 000020