(57)【要約】      （修正有）【課題】複数の区画からなる所定のデータを区画ごとに処理する処理部を複数備える所定の処理において、データを安定的に分散して処理する。【解決手段】処理部の処理を複数の情報処理装置のうち少なくともいずれかに割り当てることにより処理部を並列的に実行可能な分散処理システムの仮想マシン管理サーバは、、区画のデータに対する複数の処理部の処理順序を記憶するフローテーブル記憶部２１１と、処理部が行う区画のデータの処理による情報処理装置に対する負荷を、区画ごとに算出する処理負荷算出部２０１と、各処理部の現在の実行状態、各処理部の処理順序及び各処理部について算出した負荷に基づき、並列的に実行される処理部及び当該処理部を実行する情報処理装置の組み合わせを決定するフロー管理部２０２と、決定した組み合わせが示す並列的な処理を各情報処理装置に実行させるマシン制御部２０３と、を備える。【選択図】図３
2019035996.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置を含んで構成され、複数の区画からなる所定のデータを前記区画ごとに処理する処理部を複数備える所定の処理について、前記処理部の処理を前記複数の情報処理装置のうち少なくともいずれかに割り当てることにより前記処理部を並列的に実行可能な、プロセッサ及びメモリを備える分散処理システムであって、
前記区画のデータに対する前記複数の処理部の処理順序を記憶するフローテーブル記憶部と、
前記処理部が行う前記区画のデータの処理による前記情報処理装置に対する負荷を、前記区画ごとに算出する処理負荷算出部と、
各前記処理部の現在の実行状態、各前記処理部の処理順序、及び各前記処理部について算出した前記負荷に基づき、並列的に実行される前記処理部、及び当該処理部を実行する前記情報処理装置の組み合わせを決定するフロー管理部と、
前記決定した組み合わせが示す並列的な処理を各前記情報処理装置に実行させるマシン制御部と、
を備える分散処理システム。
【請求項２】
前記情報処理装置による前記処理部の並列的な実行に関する制約条件を記憶するマシン管理テーブル記憶部を備え、
前記フロー管理部は、前記制約条件を満たす前記情報処理装置を、前記処理部を並列的に実行する前記情報処理装置として決定する、
請求項１に記載の分散処理システム。
【請求項３】
前記マシン管理テーブル記憶部は、前記制約条件として、並列的に前記処理部を実行可能な前記情報処理装置の最大数を記憶する、請求項２に記載の分散処理システム。
【請求項４】
前記処理負荷算出部は、前記負荷として、前記処理部の処理の実行に係る予測時間を各前記処理部について算出し、
前記フロー管理部は、並列的に実行される前記処理部が複数ある場合、前記算出した予測時間に基づき、前記複数の処理部のそれぞれに対して割り当てる前記情報処理装置又はその割り当てに関する優先度を決定する、
請求項１に記載の分散処理システム。
【請求項５】
前記フロー管理部は、前記並列的に実行される複数の処理部のうち前記予測時間を算出していない前記処理部がある場合には、前記複数の処理部のそれぞれを実行する前記情報処理装置の台数を互いに均等とする、請求項４に記載の分散処理システム。
【請求項６】
前記フロー管理部は、並列的に実行される前記処理部を決定する際に、当該処理部が処理可能な前記データの区画が複数ある場合には、予め定められた、最初に処理される前記データの区画のみを前記処理部が処理することを決定する、請求項１に記載の分散処理システム。
【請求項７】
各前記情報処理装置が実行した前記処理部の処理の結果、又は前記処理部の処理により発生したデータの入出力量に関する情報を出力する出力部を備える、請求項１に記載の分散処理システム。
【請求項８】
前記情報処理装置による前記処理部の並列的な実行に関する制約条件を記憶するマシン管理テーブル記憶部と、
各前記情報処理装置が実行した前記処理部の処理の結果、又は前記処理部の処理により発生したデータの入出力量に関する情報を出力する出力部とをさらに備え、
前記マシン管理テーブル記憶部は、前記制約条件として、並列的に前記処理部を実行可能な前記情報処理装置の最大数を記憶し、
前記処理負荷算出部は、前記負荷として、前記処理部の処理の実行に係る予測時間を各前記処理部について算出し、
前記フロー管理部は、
前記制約条件を満たす前記情報処理装置を、前記処理部を並列的に実行する前記情報処理装置として決定し、
並列的に実行される前記処理部が複数ある場合、前記算出した予測時間に基づき、前記複数の処理部のそれぞれに対して割り当てる前記情報処理装置又はその割り当てに関する優先度を決定し、
前記並列的に実行される複数の処理部のうち前記予測時間を算出していない前記処理部がある場合には、前記複数の処理部のそれぞれを実行する前記情報処理装置の台数を互いに均等とし、
並列的に実行される前記処理部を決定する際に、当該処理部が処理可能な前記データの区画が複数ある場合には、予め定められた、最初に処理される前記データの区画のみを前記処理部が処理することを決定する、
請求項１に記載の分散処理システム。
【請求項９】
複数の情報処理装置を含んで構成され、複数の区画からなる所定のデータを前記区画ごとに処理する処理部を複数備える所定の処理について、前記処理部の処理を前記複数の情報処理装置のうち少なくともいずれかに割り当てることにより前記処理部を並列的に実行可能な分散処理システムにおける分散処理方法であって、
プロセッサ及びメモリを備えるマシン管理サーバが、
前記区画のデータに対する前記複数の処理部の処理順序を記憶するフローテーブル記憶処理と、
前記処理部が行う前記区画のデータの処理による前記情報処理装置に対する負荷を、前記区画ごとに算出する処理負荷算出処理と、
各前記処理部の現在の実行状態、各前記処理部の処理順序、及び各前記処理部について算出した前記負荷に基づき、並列的に実行される前記処理部、及び当該処理部を実行する前記情報処理装置の組み合わせを決定するフロー管理処理と、
前記決定した組み合わせが示す並列的な処理を各前記情報処理装置に実行させるマシン制御処理と、
を実行する、分散処理方法。
【請求項１０】
前記マシン管理サーバは、前記情報処理装置による前記処理部の並列的な実行に関する制約条件を記憶するマシン管理テーブル記憶処理をさらに実行し、
前記フロー管理処理は、前記制約条件を満たす前記情報処理装置を、前記処理部を並列的に実行する前記情報処理装置として決定する、
請求項９に記載の分散処理方法。
【請求項１１】
複数の情報処理装置を含んで構成され、複数の区画からなる所定のデータを前記区画ごとに処理する処理部を複数備える所定の処理について、前記処理部の処理を前記複数の情報処理装置のうち少なくともいずれかに割り当てることにより前記処理部を並列的に実行可能な、プロセッサ及びメモリを備える分散処理システムに、
前記区画のデータに対する前記複数の処理部の処理順序を記憶するフローテーブル記憶処理と、
前記処理部が行う前記区画のデータの処理による前記情報処理装置に対する負荷を、前記区画ごとに算出する処理負荷算出処理と、
各前記処理部の現在の実行状態、各前記処理部の処理順序、及び各前記処理部について算出した前記負荷に基づき、並列的に実行される前記処理部、及び当該処理部を実行する
前記情報処理装置の組み合わせを決定するフロー管理処理と、
前記決定した組み合わせが示す並列的な処理を各前記情報処理装置に実行させるマシン制御処理と、
を実行させる、分散処理プログラム。
【請求項１２】
前記情報処理装置による前記処理部の並列的な実行に関する制約条件を記憶するマシン管理テーブル記憶処理をさらに実行させ、
前記フロー管理処理は、前記制約条件を満たす前記情報処理装置を、前記処理部を並列的に実行する前記情報処理装置として決定する、
請求項１１に記載の分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システム、分散処理方法、及び分散処理プログラムに関する。
【背景技術】
【０００２】
近年、大量のデータを分析することにより新たな知見を得、これを活用していくというビッグデータ技術が注目されている。このような大量のデータを分析する手法としては、統計解析や機械学習等、様々な手法が存在する。さらに、データの整形といった他の手法を組み合わせることも行われている。これらの複数の手法を組み合わせる場合には、例えば、データの処理順序を分析フローに対応づけて予め決定しておき、前提となる処理が完了し次第、その処理の結果得られたデータを、次の処理の入力データとして用いることにより、最終的な結果を得ることができる。その結果を参照しても適当な知見が得られなければ、手法や条件を変更することで新たな分析フローを決定する。このように、大量のデータの分析は試行錯誤の繰り返しが必要となるため、データの処理量が多くなって分析に要する時間が長くなる場合が多い。
【０００３】
そこで一般的には、処理の時間を短縮するために、単一の計算機でデータを処理するのではなく、複数の計算機が分散して並列処理を行う。例えば、分析対象のデータを、分散ファイルシステム等を用いたデータレイクと呼ばれるシステムに格納しておく。そして、複数の計算機が、このデータレイクにおけるデータを複数の区間に分割して読み出し、読み出したデータを整形し又は分析し、分析したデータをデータレイク等に格納し、その内容をユーザに表示する。さらに、データの分析処理は一時的な処理であることから、構築が容易な仮想マシンシステムを活用する。すなわち、データの分析処理が必要なときに各仮想マシンを起動してこれらに分析処理を分散して実行させることで、当該分析処理に係るリソースの使用量を抑えることができる。
【０００４】
仮想マシンにリソースを割り当てる際には、動作が不安定とならないようにするべく、予め定めた量を超えて各仮想マシンにリソース配分を行わないように配分を管理する手法が知られている。例えば、特許文献１には、計算機管理システムが、仮想マシンのうちで、リソースの平均使用率が予め決められているポリシー値を超えているものがあった場合に、ポリシー値を満たすように、ポリシー値を満たす他の仮想マシンからリソースを確保し、リソースを引き受ける仮想マシンのある物理サーバの余剰リソースより、前記確保したリソース容量が大きい場合、物理サーバのリソース容量を超えないようにリソース配分する変更指示を出すことが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３０４１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、仮想マシン上で複数のデータ分析を実行する場合、データの分析内容が異なれば処理に利用するリソースの配分も異なってくるので、その結果、データ処理を効率よく行えない場合が生じる。特許文献１に記載の技術では、分析処理中、各データ分析の実行順序制約と物理サーバのリソース容量制約とを固定的に保持したままであるので、各データ分析の間でのリソースの配分も固定的となる。その結果、データ処理が不安定となり、処理の遅延が発生する等の問題が生じる可能性がある。
【０００７】
本発明はこのような現状に鑑みてなされたものであり、データを安定的に分散して処理することが可能な分散処理システム、分散処理方法、及び分散処理プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
以上の課題を解決するための本発明の一つは、複数の情報処理装置を含んで構成され、複数の区画からなる所定のデータを前記区画ごとに処理する処理部を複数備える所定の処理について、前記処理部の処理を前記複数の情報処理装置のうち少なくともいずれかに割り当てることにより前記処理部を並列的に実行可能な、プロセッサ及びメモリを備える分散処理システムであって、前記区画のデータに対する前記複数の処理部の処理順序を記憶するフローテーブル記憶部と、前記処理部が行う前記区画のデータの処理による前記情報処理装置に対する負荷を、前記区画ごとに算出する処理負荷算出部と、各前記処理部の現在の実行状態、各前記処理部の処理順序、及び各前記処理部について算出した前記負荷に基づき、並列的に実行される前記処理部、及び当該処理部を実行する前記情報処理装置の組み合わせを決定するフロー管理部と、前記決定した組み合わせが示す並列的な処理を各前記情報処理装置に実行させるマシン制御部と、を備える。
【発明の効果】
【０００９】
本発明によれば、データを安定的に分散して処理することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態に係る分散処理システム１００の構成の一例を示す図である。
【図２】図２は、分散処理システム１００における各情報処理装置（仮想マシン管理サーバ１０１、仮想マシン実行サーバ１０２、データレイク１０４、及びユーザ操作端末１０５）が備えるハードウェア構成の一例を示す図である。
【図３】図３は、各情報処理装置が備える機能の一例を説明する図である。
【図４】図４は、分析フローテーブル３００の一例を示す図である。
【図５】図５は、処理状態管理テーブル４００の一例を示す図である。
【図６】図６は、ＶＭ管理テーブル５００の一例を示す図である。
【図７】図７は、分散処理システム１００が行う分析処理の一例を示すシーケンス図である。
【図８】図８は、フロー実行対象判定処理の詳細を説明するフローチャートである。
【図９】図９は、仮想マシン割当判定処理の詳細を示すフローチャートである。
【図１０】図１０は、ユーザ操作端末１０５が表示する、分析処理の経過又は結果を示す画面の一例である。
【図１１】図１１は、従来の分散処理システムにおいて分析処理を実行した場合における、仮想マシン実行サーバ１０２及びデータレイク１０４のハードウェアリソースの使用状況の時系列変化の一例を示す図である。
【図１２】図１２は、本実施形態の分散処理システム１００において分析処理を実行した場合における仮想マシン実行サーバ１０２及びデータレイク１０４のハードウェアリソース使用状況の時系列変化の一例を示す図である。
【発明を実施するための形態】
【００１１】
＜システム構成＞
図１は、本実施形態に係る分散処理システム１００の構成の一例を示す図である。分散処理システム１００は、所定のデータ（以下、対象データという）の変化を分析する処理（以下、分析処理という）を行う情報処理システムである。
【００１２】
対象データは、例えば、温度、圧力、速度の時間変化のデータであり、大量に存在する
、いわゆるビッグデータ（Big Data）である。この対象データは複数のデータ区画からなり、例えば、所定の時間帯ごとに区切られたデータからなる。
【００１３】
図１に示すように、分散処理システム１００は、対象データを記憶するデータベースであるデータレイク１０４と、データレイク１０４から対象データを読み込んで分析処理を実行する少なくとも１台の仮想マシン１０３（いわゆる仮想サーバ）を備える仮想マシン実行サーバ１０２と、仮想マシン１０３のそれぞれに対して分析処理に関する指示を行う仮想マシン管理サーバ１０１と、分散処理システム１００の管理者や使用者等（以下、ユーザという）が使用する、分析処理に関する指示や分析処理に関する情報の表示を行うユーザ操作端末１０５とを含んで構成されている。
【００１４】
なお、仮想マシン管理サーバ１０１、仮想マシン実行サーバ１０２、データレイク１０４、及びユーザ操作端末１０５の各情報処理装置の間は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、インターネット、専用線等からなるネットワ
ーク１０８により通信可能に接続されている。
【００１５】
分析処理は、対象データを処理する複数の処理部（以下、分析フローともいう）を含んで構成されている。分析フローは、例えば、種々の統計解析の処理や、機械学習に係る処理等、ビッグデータを処理、分析するための様々な処理があり得る。
【００１６】
仮想マシン１０３は、分散処理システム１００において少なくとも２台以上設けられており、分散処理システム１００は、分析処理における各分析フロー（より具体的には、各データ区画におけるデータの処理）を複数の仮想マシン１０３のうち少なくともいずれかに割り当てることにより各分析フローを複数の仮想マシン１０３により並列的に実行可能である。
【００１７】
なお、図２は、分散処理システム１００における各情報処理装置（仮想マシン管理サーバ１０１、仮想マシン実行サーバ１０２、データレイク１０４、及びユーザ操作端末１０５）が備えるハードウェア構成の一例を示す図である。同図に示すように、各情報処理装置は、ＣＰＵ（Central Processing Unit）などのプロセッサ５１と、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等の主記憶装置５２と、ＨＤＤ（Hard Disk
Drive）、ＳＳＤ（Solid State Drive）等の補助記憶装置５３と、キーボード、マウス
、タッチパネル等からなる入力装置５４と、モニタ（ディスプレイ）等からなる出力装置５５とを備える。
【００１８】
なお、図１には示していないが、データレイク１０４に対して、対象データの時間変化を計測する情報処理装置（各種サーバ、センサ等）を接続し、これらの情報処理装置がその測定値（対象データ）をデータレイク１０４に送信して記憶させるものとしてもよい。
【００１９】
次に、各情報処理装置が備える機能について説明する。
＜機能＞
図３は、各情報処理装置が備える機能の一例を説明する図である。
まず、仮想マシン管理サーバ１０１は、フローテーブル記憶部２１１、処理状態管理テーブル記憶部２１２、処理負荷算出部２０１、フロー管理部２０２、マシン管理テーブル記憶部２１３、及びマシン制御部２０３を備える。
【００２０】
フローテーブル記憶部２１１は、前記区画のデータに対する前記複数の処理部の処理順序を記憶する。
【００２１】
すなわち、フローテーブル記憶部２１１は、分析フローテーブル３００を備える。分析
フローテーブル３００の詳細は後述する。
【００２２】
処理状態管理テーブル記憶部２１２は、各分析フローの現在の実行状態を処理状態管理テーブル４００に記憶する。処理状態管理テーブル４００の詳細は後述する。
【００２３】
マシン管理テーブル記憶部２１３は、前記情報処理装置（仮想マシン１０３）による前記処理部の並列的な実行に関する制約条件を記憶する。
【００２４】
具体的には、前記マシン管理テーブル記憶部２１３は、前記制約条件として、並列的に前記処理部を実行可能な前記情報処理装置の最大数を記憶する。
【００２５】
すなわち、マシン管理テーブル記憶部２１３は、ＶＭ管理テーブル５００を備える。ＶＭ管理テーブル５００の詳細は後述する。
【００２６】
処理負荷算出部２０１は、前記処理部（分析フロー）が行う前記区画のデータの処理による前記情報処理装置（仮想マシン１０３）に対する負荷を、前記区画ごとに算出する。
【００２７】
具体的には、前記処理負荷算出部２０１は、前記負荷として、前記処理部の処理の実行に係る予測時間を各前記処理部について算出する。
【００２８】
フロー管理部２０２は、各前記処理部（分析フロー）の現在の実行状態、各前記処理部の処理順序、及び処理負荷算出部２０１が各前記処理部について算出した前記負荷に基づき、並列的に実行される前記処理部、及び当該処理部を実行する前記情報処理装置の組み合わせを決定する。
【００２９】
具体的には、前記フロー管理部２０２は、前記制約条件を満たす前記情報処理装置を、前記処理部を並列的に実行する前記情報処理装置（仮想マシン１０３）として決定する。
【００３０】
また、前記フロー管理部２０２は、並列的に実行される前記処理部（分析フロー）が複数ある場合、処理負荷算出部２０１が前記算出した予測時間に基づき、前記複数の処理部のそれぞれに対して割り当てる前記情報処理装置（仮想マシン１０３）又はその割り当てに関する優先度を決定する。
【００３１】
また、前記フロー管理部２０２は、前記並列的に実行される複数の処理部のうち前記予測時間を算出していない前記処理部がある場合には、前記複数の処理部のそれぞれを実行する前記情報処理装置の台数を互いに均等とする。
【００３２】
また、前記フロー管理部２０２は、並列的に実行される前記処理部を決定する際に、当該処理部が処理可能な前記データの区画が複数ある場合には、予め定められた、最初に処理される前記データの区画のみを前記処理部が処理することを決定する。
【００３３】
マシン制御部２０３は、フロー管理部２０２が前記決定した組み合わせが示す並列的な処理を各前記情報処理装置に実行させる。
【００３４】
次に、仮想マシン実行サーバ１０２は、仮想マシン１０３を動作させる。仮想マシン１０３は、送受信部２０４及び分析処理部２０５を備える。
【００３５】
送受信部２０４は、分析処理に関するデータの送受信を行う。分析処理部２０５は、種々の統計解析機能を備え、例えば、データの抽出、分析、及び記憶を行うことで分析処理における各分析フローを実行する。
【００３６】
データレイク１０４は、データ保存部２０６及びデータ読み書き部２０７を備える。データ保存部２０６は、対象データを記憶し、また、仮想マシン１０３からのデータの読み出し要求や書き込み要求に応じて、対象データを含む種々のデータの送受信を行う。データ読み書き部２０７は、対象データを含む各種データの読み出し及びデータの書き込みを行う。
【００３７】
データレイク１０４が記憶している対象データは、例えば、所定のフォーマットに従った複数のデータの集合である。例えば、対象データが時系列のデータである場合、対象データはその時刻又は時間帯に対応して前記の複数のデータ区画に分割されている。分析フローは、各データ区画のデータに対して所定の分析処理を行う。
【００３８】
なお、以下では、分析フローにおいて、あるデータ区画のデータを処理する処理を、区間フローという。
【００３９】
ユーザ操作端末１０５は、出力部２０８を備える。出力部２０８は、各前記情報処理装置が実行した前記処理部の処理の結果、又は前記処理部の処理により発生したデータの入出力量に関する情報を出力する。
【００４０】
次に、分散処理システム１００が記憶している各テーブル（データベース）について説明する。
【００４１】
＜分析フローテーブル＞
図４は、分析フローテーブル３００の一例を示す図である。同図に示すように、分析フローテーブル３００は、分析フローの識別情報（以下、フロー名という）が格納されるフロー名６１１、フロー名６１１が示す分析フローに入力されるデータ（又はその種類）を特定する情報が格納される入力６１２、フロー名６１１が示す分析フローが実行する処理の種類を示す情報（例えば、統計解析や機械学習の種類に関する情報）が格納される処理方法６１３、及び、フロー名６１１が示す分析フローから出力されるデータ（又はその種類）を特定する情報が格納される出力６１４の各項目を有する、少なくとも１つ以上のレコードで構成されている。
【００４２】
なお、以下では、フロー名６１１が示す分析フローが分析処理において最初に実行される処理である場合に入力６１２に格納されるデータを、初期入力データという。また、フロー名６１１が示す分析フローが分析処理において最後に実行される処理である場合に出力６１４に格納されるデータを、最終出力データという。そして、それ以外の場合の入力６１２又は出力６１４に格納されるデータを、中間データという。
【００４３】
同図の例では、「分析処理Ａ」は最初からデータレイク１０４に保存されている対象データを読み込み（受信し）、「分析処理Ｂ」は「分析処理Ａ」が出力した「中間データＡ」を読み込み（受信し）、「分析処理Ｃ」は「分析処理Ｂ」が出力した「中間データＢ」を読み込む（受信する）。「分析処理Ａ」に入力されるデータは初期入力データであり、また、「分析処理Ａ」と「分析処理Ｂ」が出力するデータは中間データであり、「分析処理Ｃ」が出力するデータは最終出力データである。
【００４４】
このように、分析フローテーブル３００は、各分析フローが送信又は受信するデータを特定する情報を記憶することで、分析処理における各分析フロー間の処理順序について規定している。なお、分析フローテーブル３００の内容は、例えば、分析処理の前にユーザによって予め入力される。
【００４５】
＜処理状態管理テーブル＞
図５は、処理状態管理テーブル４００の一例を示す図である。処理状態管理テーブル４００は、分析フローテーブル３００が規定する分析フローの処理順序を前提に、その分析フローにおける区間フローの実行状態について記憶している。
【００４６】
すなわち、処理状態管理テーブル４００は、フロー名が格納されるフロー名６２１、フロー名６２１が示す分析フローにおける区間フローの識別情報（以下、区間名という）が格納される区間名６２２、区間名６２２が示す区間フローの現在の実行状態（例えば、実行中であるか（「実行中」）、実行が完了したか（「実行完了」）、実行されていないが実行が可能な状態であるか（「実行可能」）、又は、実行を開始するのに必要なデータが生成されていないため実行が不可能であるか（「実行不可」）等）を示す情報が格納される実行状態６２３、実行状態６２３に「実行完了」が格納されている場合に、その実行に要した時間（以下、実行時間という）が格納される処理時間６２４、及び、区間名６２２が示す区間フローの実行に要する時間の推定時間（予測時間）が格納される予測時間６２５の各項目を有する、少なくとも１つ以上のレコードで構成されている。なお、予測時間６２５には、処理時間６２４に実行時間が格納されていない場合（すなわち、区間名６２２が示す区間フローの実行が完了していない場合）に、予測時間が格納される。
【００４７】
予測時間は、後述するように、例えば、過去に実行された他の区間フローの実行時間に基づいて算出される。
【００４８】
同図の例では、「分析処理Ａ」の区間フローである「区間Ａ」は実行が完了しているため、処理時間６２４に「１２分」が記録されている。また、「分析処理Ａ」の「区間Ｃ」は、同じ種類の統計解析が行われた「区間Ａ」の実行が完了していることから、前記と同じ「１２分」が予測時間６２５に記録されている。なお、予測時間６２５には、各区間フローの間の予測時間の正確な比較のために、単一の仮想マシン１０３が当該区間フローを実行した場合の予測時間が格納される。
【００４９】
処理状態管理テーブル４００の内容は、所定のタイミング、又は所定の時間間隔で更新される。
【００５０】
＜ＶＭ管理テーブル＞
図６は、ＶＭ管理テーブル５００の一例を示す図である。同図に示すように、ＶＭ管理テーブル５００は、仮想マシン実行サーバ１０２の識別情報（以下、実行サーバ名という）が格納される実行サーバ名７１１、実行サーバ名７１１が示す仮想マシン実行サーバ１０２における仮想マシン１０３に対して分析フロー（における区間フロー）を割り当てることが可能な仮想マシン１０３の最大の台数（以下、最大数という）を示す情報が格納される最大ＶＭ割当可能数７１２、及び、実行サーバ名７１１が示す仮想マシン実行サーバ１０２に現在割り当てられている仮想マシン１０３の台数（以下、現在台数という）を示す情報が格納される割当ＶＭ数７１３の各項目を有する、少なくとも１つ以上のレコードで構成される。
【００５１】
なお、ＶＭ管理テーブル５００の割当ＶＭ数７１３の内容は、所定のタイミング（例えば、所定の時間間隔、仮想マシン１０３の起動時、又は仮想マシン１０３の停止時）にて更新される。その他の項目は、例えば、ユーザによって分析処理の実行前に入力される。
【００５２】
同図の例では、「実行サーバＡ」、「実行サーバＢ」、及び「実行サーバＣ」の３台の仮想マシン実行サーバ１０２が登録されており、全ての仮想マシン実行サーバ１０２の最大数が「４」である。
【００５３】
以上に説明した各情報処理装置の機能は、各情報処理装置のハードウェアによって、もしくは、各情報処理装置のプロセッサ５１が、主記憶装置５２や補助記憶装置５３に記憶されている各プログラムを読み出して実行することにより実現される。なお、このプログラムは、例えば、二次記憶デバイスや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤなどの記憶デバイス、又は、ＩＣカード、ＳＤカード、ＤＶＤなどの、計算機で読み取り可能な非一時的データ記憶媒体に格納される。
【００５４】
次に、分散処理システム１００で行われる各処理について説明する。
＜分析処理＞
図７は、分散処理システム１００が行う分析処理の一例を示すシーケンス図である。この処理は、例えば、ユーザ操作端末１０５から仮想マシン管理サーバ１０１に、実行する分析処理を指定する情報が入力された際に開始される。
【００５５】
まず、仮想マシン管理サーバ１０１のフロー管理部２０２は、指定された分析処理において、仮想マシン１０３により並列的に実行する分析フロー（以下、対象フローという）及びその区間フロー（以下、対象区間フローという）を特定する処理（以下、フロー実行対象判定処理という）を実行する（Ｓ３０１）。この処理の詳細は後述する。
【００５６】
次に、フロー管理部２０２は、Ｓ３０１で特定した各対象フロー及び対象区間フローの情報を付帯させた、各仮想マシン１０３への処理の割り当ての指示を、マシン制御部２０３に送信する（Ｓ３０２）。
【００５７】
マシン制御部２０３は、前記の指示を受信すると、各対象フローにおける各対象区間フローを、仮想マシン１０３のいずれに割り当てて並列処理を各仮想マシン１０３に実行させるかを決定する処理（以下、仮想マシン割り当て判定処理という）を実行する（Ｓ３０３）。この処理の詳細は後述する。なお、この処理の終了後、マシン制御部２０３はＶＭ管理テーブル５００を更新する。
【００５８】
マシン制御部２０３は、Ｓ３０３により処理を割り当てた各仮想マシン１０３に対して、当該仮想マシン１０３の起動の指示を送信する（Ｓ３０４）。そして、フロー管理部２０２は、Ｓ３０４により起動した各仮想マシン１０３に対して、当該仮想マシン１０３に割り当てられた対象区間フローの実行（並列処理の実行）の指示を、各仮想マシン１０３に送信する（Ｓ３０５）。
【００５９】
指示の送信を仮想マシン管理サーバ１０１から受信した各仮想マシン１０３の送受信部２０４は、分析処理部２０５に、対象区間フローを実行する指示を行う（Ｓ３０６）。
【００６０】
Ｓ３０６により指示を受けた各仮想マシン１０３の各分析処理部２０５は、自身に割り当てられた対象区間フローを実行する（Ｓ３０７）。
【００６１】
例えば、ある分析処理部２０５は、データレイク１０４のデータ保存部２０６から対象フローの初期入力データを読み出して対象区間フローを実行する。また、他の分析処理部２０５は、中間データに基づき対象区間フローを実行する。また、さらに他の分析処理部２０５は、対象区間フローを実行して最終出力データを出力し、これをデータレイク１０４のデータ保存部２０６に送信する。
【００６２】
なお、複数の仮想マシン１０３（分析処理部２０５）が同一の対象フローの同一の対象区間フローを並列して実行する場合、その各分析処理部２０５は、例えば、初期入力データ又は中間データを分割して当該分析処理部２０５に割り当て、各分析処理部２０５は割り当てられたデータに基づき、対象区間フローを並列して実行する。
【００６３】
各仮想マシン１０３の各分析処理部２０５は、自身に割り当てられた対象区間フローの実行を終えると、その旨の通知を送受信部２０４に送信する（Ｓ３０８）。
【００６４】
各仮想マシン１０３の送受信部２０４は、前記の通知を分析処理部２０５から受信すると、対象区間フローの実行が終了した旨の通知を、仮想マシン管理サーバ１０１のフロー管理部２０２に送信する（Ｓ３０９）。
【００６５】
フロー管理部２０２は、Ｓ３０５で実行の指示を送信した全ての仮想マシン１０３から前記の終了の通知を受信すると、マシン制御部２０３に、Ｓ３０２で指示した割り当てを解放する旨の指示を送信する（Ｓ３１０）。この指示を受信したマシン制御部２０３は、割り当ての対象となっていた全ての仮想マシン１０３の動作（実行）を停止させる（Ｓ３１１）。
【００６６】
その後、マシン制御部２０３は、現在の各仮想マシン１０３の各分析フロー（区間フロー）の実行状態を各仮想マシン１０３から取得し、取得した状態に基づきＶＭ管理テーブル５００を更新する（Ｓ３１２）。具体的には、例えば、マシン制御部２０３は、ＶＭ管理テーブル５００の割当ＶＭ数７１３の値を、現在、分析フロー（区間フロー）を実行している仮想マシン１０３の数で更新する。
【００６７】
次に、フロー管理部２０２は、分析処理の実行状態に関する情報を生成して更新する（Ｓ３１３）。
【００６８】
具体的には、まず、フロー管理部２０２は、各仮想マシン１０３が行った対象区間フローの実行時間を算出する。例えば、フロー管理部２０２は、Ｓ３０４の処理を行った時刻からＳ３０９の処理を行った時刻までの時間を実行時間として算出する。
【００６９】
また、フロー管理部２０２は、処理負荷算出部２０１に、算出した対象区間フローの実行時間に基づき、未だ実行していない区間フローの予測時間を算出する旨を指示する。具体的には、例えば、処理負荷算出部２０１は、前記で実行時間を算出した対象区間フローと同じ種類の統計解析を行う、未実行の分析フローの各区間フローの予測時間を前記の実行時間と同じにする。なお、実行時間を算出した対象区間フローが複数の仮想マシン１０３で実行されていた場合には、これに基づく予測時間を、単一の仮想マシン１０３が処理を実行した場合の時間に変換する。
【００７０】
フロー管理部２０２は、以上のようにして算出した実行時間及び予測時間を、処理状態管理テーブル４００に記憶する。具体的には、処理状態管理テーブル記憶部２１２は、算出した各対象区間フローの実行時間を処理状態管理テーブル４００の各レコードの処理時間６２４に格納し、各予測時間を処理状態管理テーブル４００の各レコードの予測時間６２５に格納する。
【００７１】
以上のＳ３０１からＳ３１３までの処理が、全ての分析フローが実行を完了するまで繰り返される。以上で分析処理は終了する。
【００７２】
次に、前記のフロー実行対象判定処理及び仮想マシン割り当て判定処理の詳細を説明する。
【００７３】
＜フロー実行対象判定処理＞
図８は、フロー実行対象判定処理の詳細を説明するフローチャートである。同図に示すように、フロー管理部２０２は、まず、現在実行可能な分析フローが１つだけであるか否
かを判断する（Ｓ４０１）。具体的には、例えば、フロー管理部２０２は、処理状態管理テーブル４００の各レコードの実行状態６２３のうちで、「実行可能」が格納されているレコードの数を確認する。これにより、同時に実行可能なフローの数を、各分析フローの実行順序の制約を崩さずに判定できる。
【００７４】
現在実行可能な分析フローが１つだけである場合（Ｓ４０１：ＹＥＳ）、フロー管理部２０２は、その分析フローを対象フローとして記憶する（Ｓ４０２）。例えば、フロー管理部２０２は、その対象フローが記憶されている処理状態管理テーブル４００のレコードを記憶する。その後はＳ４１０の処理が行われる。
【００７５】
他方、現在実行可能な分析フローが複数ある場合（Ｓ４０１：ＮＯ）、フロー管理部２０２は、その複数の全ての分析フローの予測時間が算出されているか否かを判断する（Ｓ４０３）。具体的には、例えば、フロー管理部２０２は、処理状態管理テーブル４００における前記の複数の分析フローのそれぞれのレコードの予測時間６２５を参照し、予測時間が格納されているか否かを確認する。
【００７６】
その複数の全ての分析フローの予測時間が算出されている場合は（Ｓ４０３：ＹＥＳ）、フロー管理部２０２は、分析フローを実行する仮想マシン１０３の台数又は優先度に関して適当な重み付けをする旨を、仮想マシン割当判定処理のために記憶すると共に、Ｓ４０１で実行可能とした全ての分析フロー（Ｓ４０３で予測時間が算出されている全ての分析フロー）を対象フローとして記憶し（Ｓ４０４）、その後はＳ４１０の処理が行われる。
【００７７】
例えば、フロー管理部２０２は、処理状態管理テーブル４００のうち全ての実行状態６２３が「実行可能」である（「実行中」の区間がない）分析フローのレコードを対象フローとして記憶する。
【００７８】
他方、予測時間が予測されていない分析フローがある場合は（Ｓ４０３：ＮＯ）、フロー管理部２０２は、分析フローを実行する仮想マシン１０３の台数又は優先度を各分析フローの間で均等にする旨を、仮想マシン割当判定処理のために記憶すると共に、Ｓ４０１で実行可能とした全ての分析フローを対象フローとして記憶し（Ｓ４０５）、その後はＳ４１０の処理が行われる。
【００７９】
Ｓ４１０において、まずフロー管理部２０２は、Ｓ４０４又はＳ４０５で実行を決定した各対象フローのうち一つを選択し、その対象フローにおいて実行可能な区間フローが複数存在するか否かを判定する（Ｓ４０６）。具体的には、例えば、フロー管理部２０２は、処理状態管理テーブル４００における、前記で選択した対象フローにおける各区画のレコードの実行状態６２３を参照し、「実行可能」が格納されているレコードの数を確認する。
【００８０】
前記で選択した対象フローに実行可能な区間フローが複数存在する場合には（Ｓ４０６：ＹＥＳ）、フロー管理部２０２は、そのうち最先の区間フロー（最初に実行される、例えば対象データの時間が最も早い区間フロー）のみを、前記で選択した対象フローにおける対象区間フローとする（Ｓ４０７）。他方、前記で選択した対象フローに実行可能な区間が１つのみ存在する場合には（Ｓ４０６：ＮＯ）、フロー管理部２０２は、その１つの区間を、前記で選択した対象フローにおける対象区間フローとする（Ｓ４０８）。
【００８１】
このような処理を行うことで、一部の対象フローが他の対象フローと比較して実行可能な区間フローが多い場合に、一部の対象フローに区間フローが多く割り当てられてしまい、各対象フローの間で並列処理を平準化できなくなることを防ぐことができる。
【００８２】
フロー管理部２０２は、以上のＳ４０６、Ｓ４０７、及びＳ４０８の処理を全ての対象フローについて繰り返す。以上でフロー実行対象判定処理は終了する（Ｓ４０９）。
【００８３】
＜仮想マシン割り当て判定処理＞
図９は、仮想マシン割当判定処理の詳細を示すフローチャートである。まず、マシン制御部２０３は、フロー実行対象判定処理で決定した各対象区間フローを割り当て可能な仮想マシン１０３が存在するか否かを判定する（Ｓ５０１）。具体的には、例えば、マシン制御部２０３は、ＶＭ管理テーブル５００の各レコードの割当ＶＭ数７１３及び最大ＶＭ割当可能数７１２を参照して判断する。
【００８４】
対象区間フローを割り当て可能な仮想マシン１０３が存在しない場合は（Ｓ５０１：ＮＯ）、マシン制御部２０３は、仮想マシン割り当て判定処理を終了する（Ｓ５０７）。他方、対象区間フローを割り当て可能な仮想マシン１０３が存在する場合は（Ｓ５０１：ＹＥＳ）、Ｓ５０２の処理が行われる。
【００８５】
Ｓ５０２においてマシン制御部２０３は、フロー実行対象判定処理で決定した対象フローの数（以下、対象フロー数という）が１か、もしくは１より大きい（２以上）か否かを確認する（Ｓ５０２）。対象フロー数が１の場合は（Ｓ５０２：ＮＯ）、マシン制御部２０３は、その対象フローの処理を、Ｓ５０１で特定した割り当て可能な仮想マシン１０３の全てに割り当てる旨を記憶し（決定し）（Ｓ５０３）、仮想マシン割り当て判定処理は終了する（Ｓ５０７）。
【００８６】
他方、対象フロー数が２以上の場合は（Ｓ５０２：ＹＥＳ）、マシン制御部２０３はＳ５０４の処理を実行する。
【００８７】
すなわち、Ｓ５０４においてマシン制御部２０３は、重み付けにより分析フローを実行する旨がフロー実行対象判定処理で記憶されていた場合には（Ｓ５０４：重み付け）、各対象フローにおける対象区間フローの予測時間に基づき、各対象フローにおける対象区間フローの終了時刻が互いに概ね同じになるように、各対象フローにおける対象区間フローを割り当てる仮想マシン１０３を決定する（Ｓ５０５）。その後、仮想マシン割り当て判定処理は終了する（Ｓ５０７）。
【００８８】
この割り当ては、例えば、マシン制御部２０３は、予測時間の逆数を各対象フローにおける対象区間フローについて算出し、この各逆数に対応する比率にて、各対象区間フローを割り当てる仮想マシン１０３の台数を決定するといった方法で実行される。なお、適当な台数が算出できない場合（例えば、自然数としての台数が算出できない場合）は、マシン制御部２０３は、各仮想マシン１０３に処理の優先度（例えば、ＣＰＵやメモリのリソース配分量）を設定することで、各対象フローにおける対象区間フローを割り当てる。
【００８９】
他方、分析フローを均等割り付けにより実行する旨がフロー実行対象判定処理で記憶されていた場合には（Ｓ５０４：均等割り）、マシン制御部２０３は、各対象フローにおける対象区間フローの処理を実行する仮想マシン１０３の台数が互いに概ね同数になるように、各対象フロー（対象区間フロー）を割り当てる仮想マシン１０３を決定する（Ｓ５０６）。その後、仮想マシン割り当て判定処理は終了する（Ｓ５０７）。
【００９０】
以上のような仮想マシン割り当て判定処理により、複数の対象区間フローを同時に並列して実行することができ、かつ、複数の対象区間フローの実行に要する時間を互いに同じ時間に調整することができる。これにより、一部の分析フローのみが長時間引き続き実行されることを防止することができる。
【００９１】
以上のようにして実行される分散処理の経過又は結果は、ユーザ操作端末１０５等に表示される。
【００９２】
＜ユーザ操作端末１０５による表示例＞
図１０は、ユーザ操作端末１０５が表示する、分析処理の経過又は結果を示す画面の一例である。同図に示すように、この表示画面１０００には、分析処理の実行状態又は実行結果を示すテーブル１０１０が表示される。このテーブル１０１０には、仮想マシン実行サーバ１０２における各仮想マシン１０３ごとに、各分析フローにおける各区間フローの現在の処理状況１０１１（又はその処理結果）が時系列に沿って表示される。そして、この処理状況１０１１には、その処理により発生したＩ／Ｏ量も表示される。また、分析処理によって発生したＩ／Ｏ量の合計１０１２が、各時間帯ごとに（各データ区画ごとに）表示される。
【００９３】
このように、表示画面１０００には、各仮想マシン１０３による分析フローの結果の情報、又はその分析フローにより発生したデータの入出力量に関する情報が出力されるので、ユーザは、分散処理システム１００により分析フローが順次並列処理されていることや、これによりＩ／Ｏに係る負荷が分散され、安定して分散処理が実行されていることを確認することができる。
【００９４】
以上のように、本実施形態の分散処理システム１００によれば、対象データの区画データに対する処理部（分析フロー）の処理順序を記憶し、各処理部（分析フロー）が行う対象データの各区画データの処理による情報処理装置（仮想マシン１０３）に対する負荷を、そのデータ区画ごとに算出し、そして、各処理部の現在の実行状態、各処理部の処理順序、及び各処理部について算出した負荷に基づき、並列的に実行される処理部及びその処理部を実行する情報処理装置の組み合わせを決定し、これらを各情報処理装置に並列的に実行させる。このように、本実施形態の分散処理システム１００は、対象データの各データ区画に係る処理の負荷に応じて、分析フローの処理を各仮想マシン１０３にデータ区画単位で割り当てることができる。これにより、対象データの処理をデータ区画単位で各仮想マシン１０３に分散させて処理することができ、対象データを安定的に分散して処理することができる。
【００９５】
この効果について具体的に説明すると、以下のようになる。
【００９６】
まず、図１１は、従来の分散処理システムにおいて分析処理を実行した場合における、仮想マシン実行サーバ１０２及びデータレイク１０４のハードウェアリソースの使用状況の時系列変化の一例を示す図である。
【００９７】
この分析処理は、分析フローである分析処理Ａの生成した中間データを用いて分析処理Ｂ（分析フロー）を実行し、分析処理Ｂの生成した中間データを用いて分析処理Ｃ（分析フロー）を実行し、これにより最終出力データを出力するものである。すなわち、分析処理Ａの実行完了後、分析処理Ｂが実行され、その実行完了後、分析処理Ｃが実行される。
【００９８】
この場合、各仮想マシン１０３に対する処理の割り当ての時系列変化は以下の通りである。まず、全ての仮想マシン１０３が分析処理Ａの区間Ａを実行し（符号８０１）、その処理の終了後、次の区間（分析処理Ａの区間Ｂ）の処理が実行される（符号８０２）。そして、分析処理Ａの全区間の処理の実行が終了後、次の分析フローである分析処理Ｂの区間Ａの処理が実行され（符号８０３）、その後、分析処理Ｂの分析フローの全区間の処理の実行が完了する。そして、その次の分析フローである分析処理Ｃの区間Ａの処理が実行され（符号８０４）、その後、分析処理Ｃの全区間の処理が実行される。
【００９９】
このような処理が実行されると、分析処理Ａの実行中におけるデータレイク１０４へのデータの単位時間あたりの読み書き量８１１と比べ、分析処理Ｂの実行中におけるデータレイク１０４へのデータの単位時間あたりの読み書き量８１２の方が少なくなるため、データレイクのＩ／Ｏ（Input/Output）に係るリソースの使用量は、分析処理Ｂにおいて余裕があり、Ｉ／Ｏに係るリソースが余剰となる。
【０１００】
他方で、分析処理Ｃを実行中のデータレイクへの単位時間あたりの読み書き量８１３は、分析処理Ｂの実行中におけるデータレイク１０４へのデータの単位時間あたりの読み書き量８１２よりも多くなるため、分析処理Ｃにおけるデータレイク１０４への読み書きに遅延が発生し、分析処理の実行時間が長くなる可能性がある。すなわち、Ｉ／Ｏに係るリソースが不足する状態となる。
【０１０１】
このように、従来の分散処理システムでは、単に各分析フローの間の実行順序に基づいて処理を行うため、各分析フローのＩ／Ｏ量が処理の種類によって大きく変化する結果、その際に処理上の遅延が発生し、分析処理の効率が低下する可能性がある。特に、各分析フロー間でのＩ／Ｏ量の違いが大きく異なると、実行する分析フローが切り替わる際に予期しない大きなボトルネックが発生して処理が大幅に遅延し、処理の安定性、信頼性を損ねることになる。
【０１０２】
一方、図１２は、本実施形態の分散処理システム１００において分析処理を実行した場合における仮想マシン実行サーバ１０２及びデータレイク１０４のハードウェアリソース使用状況の時系列変化の一例を示す図である。
【０１０３】
本実施形態の分散処理システム１００は、各区間のデータ処理が終わるごとに、対象フロー及び対象区間フローを決定し、これらの処理を、適当な配分割合にて（例えば、各区間での処理が概ね同時に終了するように）仮想マシン１０３に割り当てる（図７のＳ３０１及びＳ３０３）。
【０１０４】
すなわち、最初に行われたフロー実行対象判定処理においては、対象フローが分析処理Ａのみと判定され、さらに、先頭のデータ区画に対応する区間フローのみが対象区間フローであると判定される結果（図８のＳ４０７）、分析処理Ａの区間Ａのみが実行される（符号９０１）。
【０１０５】
そして、次に行われるフロー実行対象判定処理においては、まず、対象フローが分析処理Ａ及び分析処理Ｂの複数の分析フローと判定され、さらに、分析処理Ｂの予測時間が算出されていないため均等割付と判定される結果（図８のＳ４０５）、分析処理Ａの区間Ｂの処理、及び分析処理Ｂの区間Ａの処理が均等に（同じ台数の）各仮想マシン１０３に割り当てられ、これらの処理が並列して実行される（符号９０２、符号９０３）。
【０１０６】
さらに、その次に行われるフロー実行対象判定処理においては、まず、対象フローが、前記の分析処理Ａ（の区間Ｂの処理）及び分析処理Ｂ（の区間Ａの処理）に加えて分析処理Ｃである旨判定され、その分析処理Ｃの対象区間フローが区間Ａと判定される結果、分析処理Ａの区間Ｂの処理、分析処理Ｂの区間Ａの処理、及び分析処理Ｃの区間Ａの処理が並列して実行される（符号９０４）。
【０１０７】
このように、分析フローにおける各区間の処理が並列して実行することにより、分析フローに係る処理が、分析フロー単位だけなく、さらにその区間単位でも分散されるため、前記した従来の分散処理システムと比較して、分析処理がより安定的に分散され、処理に係る負荷も分散される。すなわち、リソースの分散による安定化のみならず、時間軸方向
の処理の分散による安定化が実現される。
【０１０８】
さらに、本実施形態の分散処理システム１００では、分析フローは、処理するデータの時系列（データ区画）に応じて複数の区間フローに分割されているので、ＣＰＵ等の演算処理に係る負荷だけでなく、入出力処理（Ｉ／Ｏ）に係る負荷も時間軸方向に分散されることになる。
【０１０９】
例えば、最初に行われたフロー実行対象判定処理では分析処理Ａのみが実行されるため、分析処理Ａの実行に係る、データレイク１０４への単位時間あたりのデータの読み書き量９１１（以下、単位Ｉ／Ｏ量という）が発生する（符号９１１）。
【０１１０】
そして、２回目のフロー実行対象判定処理においては、分析処理Ａを単独で実行している場合、及び分析処理Ｂを単独で実行している場合の間の中間程度の単位Ｉ／Ｏ量が発生することになる（符号９１２）。さらに、３回目のフロー実行対象判定処理においては、分析処理Ａを単独で実行している場合、分析処理Ｂを単独で実行している場合、及び分析処理Ｃを単独で実行している場合の間の三者の中間程度の単位Ｉ／Ｏ量が発生することになる（符号９１３）。
【０１１１】
このように、本実施形態の分散処理システム１００によれば、データレイク１０４への単位時間あたりのデータの読み書き量が、前記した通常の分散処理システムの場合と比較して、時間軸方向により詳細に平準化される。これにより、例えば、データレイク１０４へのデータの読み書きが分析処理におけるボトルネックとなることを防ぎ、分析処理を安定して行うことができるようになる。
【０１１２】
すなわち、本実施形態の分散処理システム１００によれば、分析処理におけるリソースとして、単にプロセッサに係る負荷だけでなく、Ｉ／Ｏに係る負荷も平準化させる結果、分散処理システム１００における処理負荷全体を安定化させることができる。
【０１１３】
以上の効果に加えて、本実施形態の分散処理システム１００は、情報処理装置（仮想マシン１０３）による処理部（分析フロー）の並列的な実行に関する制約条件を記憶し（ＶＭ管理テーブル５００）、その制約条件を満たす仮想マシン１０３を、処理部を並列的に実行する仮想マシン１０３として決定するので、不可抗力的な仮想マシン１０３の制約の範囲内で、分散処理及びこれによるデータ処理を安定的に行うことができる。
【０１１４】
例えば、制約条件として、並列的に分析フローの処理を実行可能な仮想マシン１０３の最大数を記憶することで、例えば仮想マシン実行サーバ１０２や仮想マシン１０３のハードウェアないしソフトウェアの仕様を満たした、安定的な分散処理及びデータ処理を行うことができる。
【０１１５】
また、本実施形態の分散処理システム１００は、情報処理装置（仮想マシン実行サーバ１０２又は仮想マシン１０３）に対する負荷として、処理部（分析フロー）の処理の実行に係る予測時間を各処理部について算出し、この予測時間に基づき、処理部の部分の処理を並列的に実行させる各情報処理装置の配分（処理の優先度等）を決定するので、仮想マシン実行サーバ１０２又は仮想マシン１０３の実際の稼動実績に基づき合理的な処理の分配を行うことができる。これにより、安定的な分散処理及びデータ処理を行うことができる。
【０１１６】
また、本実施形態の分散処理システム１００は、並列的に実行する複数の処理部（分析フロー）のうち予測時間を算出していない処理部がある場合には、複数の処理部のそれぞれを実行する情報処理装置（仮想マシン１０３）の台数を互いに均等とするので、例えば
ある仮想マシン１０３の稼動実績が少なく分析フローの処理時間が不明又は不正確である場合であっても、合理的に分散処理を行うことができる。
【０１１７】
また、本実施形態の分散処理システム１００は、並列的に実行する処理部（分析フロー）を決定する際に、当該処理部において処理可能なデータの区画が複数ある場合には、処理順序が最先である区画のデータのみを処理するので、実行可能な区間フローの数が分析フローの間で異なる場合であっても、一部の分析フローのみが偏って実行され、並列処理を平準化できなくなることを防ぐことができる。
【０１１８】
以上の実施形態の説明は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれる。
【０１１９】
例えば、本実施形態では、分析処理を行う主体は複数の仮想マシン１０３としたが、複数の物理サーバがこれらの分析処理を行うものとしてもよい。本実施形態の分散処理システム１００は、いずれのタイプの情報処理装置による分散処理にも対応することができるので、ハードウェアリソース及びソフトウェアリソースを効率的に使用することができる。
【０１２０】
例えば、本実施形態では、データの記憶形式としてテーブル（データベース）を示したが、データの記憶形式はデータベースに限られず、いかなる方法であってもよい。
【０１２１】
また、本実施形態では、仮想マシン実行サーバ１０２は複数台あるものとしたが、１台の仮想マシン実行サーバ１０２のみを設け、この仮想マシン実行サーバ１０２に複数の仮想マシン１０３を設けてもよい。
【符号の説明】
【０１２２】
１００  分散処理システム、１０１  仮想マシン管理サーバ、１０２  仮想マシン実行サーバ、１０３  仮想マシン、１０４  データレイク、２１１  フローテーブル記憶部、２０１  処理負荷算出部、２０２  フロー管理部、２０３  マシン制御部
【図１】
2019035996.tif 000003
【図２】
2019035996.tif 000004
【図３】
2019035996.tif 000005
【図４】
2019035996.tif 000006
【図５】
2019035996.tif 000007
【図６】
2019035996.tif 000008
【図７】
2019035996.tif 000009
【図８】
2019035996.tif 000010
【図９】
2019035996.tif 000011
【図１０】
2019035996.tif 000012
【図１１】
2019035996.tif 000013
【図１２】
2019035996.tif 000014