(57)【要約】【課題】  分散処理システムにおいて、リソースの使用に空きが出現しないように効率的に使うことが難しい。【解決手段】  本発明の情報処理システムは、サーバ仮想化環境を構築可能な複数のタスク実行サーバで構成された情報処理システムであって、タスク実行サーバの構成を示すクラスタ構成情報を管理するクラスタ管理手段と、タスク実行サーバに対して仮想マシンの数を示すデプロイパターンでの仮想マシンの起動を命令するデプロイメント手段と、クラスタ構成情報に示されたタスク実行サーバ上で起動している仮想マシンにジョブを配布するジョブ配布手段と、ジョブ配布手段にタスクを送信しタスクに含まれるジョブに付与された付帯情報に基づきデプロイパターンを決定しデプロイメント手段に送信するタスク実行命令手段と、を包含する。【選択図】      図１
2016115065.tif 000002
【特許請求の範囲】
【請求項１】
サーバ仮想化環境を構築可能な、複数のタスク実行サーバに接続される情報処理装置であって、
前記タスク実行サーバの構成を示すクラスタ構成情報を管理するクラスタ管理手段と、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令するデプロイメント手段と、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布するジョブ配布手段と、
前記ジョブ配布手段に前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、前記デプロイメント手段に送信するタスク実行命令手段と、を包含する、情報処理装置。
【請求項２】
前記付帯情報が、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）依存、または、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）依存を示す処理特性を含む、請求項１に記載の情報処理装置。
【請求項３】
前記付帯情報が、マルチプロセス、または、マルチスレッドに適合するか否かを示す並列処理適合度を含む、請求項１または２に記載の情報処理装置。
【請求項４】
前記付帯情報が、シーケンシャル、または、ランダムを示すＩ／Ｏ特性を含む、請求項１または２に記載の情報処理装置。
【請求項５】
前記ジョブ配布手段、及び、前記クラスタ管理手段のペアが複数で、
前記タスク実行命令手段が、各々の前記ペアごとに、前記デプロイパターンを決定する、請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の情報処理装置と、
前記複数のタスク実行サーバと、を包含する情報処理システム。
【請求項７】
タスク実行サーバの構成を示すクラスタ構成情報を管理し、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令し、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布し、
前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、送信する、タスク処理方法。
【請求項８】
前記付帯情報が、ＣＰＵ依存、または、Ｉ／Ｏ依存を示す処理特性を含む、請求項７に記載のタスク処理方法。
【請求項９】
前記付帯情報が、マルチプロセス、または、マルチスレッドに適合するか否かを示す並列処理適合度を含む、請求項７または８に記載のタスク処理方法。
【請求項１０】
タスク実行サーバの構成を示すクラスタ構成情報を管理する処理と、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令する処理と、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布する処理と、
前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、送信する処理と、をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの並列処理が可能な情報処理装置、情報処理システム、タスク処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
複数のサーバノード、及び、サーバノードからアクセス可能な分散ファイルシステムにより構成されたシステムにおいて、分散ファイルシステムに格納されているデータ群を対象としたデータ解析を実行する際、データ解析処理時間を短縮する手法が存在する。その手法は、データ解析のタスクを複数のジョブ群に分割し、複数のサーバノードに分配して、ジョブを並列に実行させる。
【０００３】
この手法の代表的な例として、Ｈａｄｏｏｐ（登録商標）のＭａｐＲｅｄｕｃｅ（登録商標）アルゴリズムによるデータ解析手法が挙げられる。本解析手法は、データ解析のタスクのプログラム作成者が、データ解析を行う分散処理システムの構成（ノード構成や、データの配置先など）を意識する必要がない。そして、本解析手法は、ＭａｐＲｅｄｕｃｅの処理手順に基づく手続きをプログラミングするだけで、分散処理システム側の構成に合わせて、タスクを並列実行させることができる。このような機能を実現できるのは、Ｈａｄｏｏｐに備えられた並列分散機構が、システム構成に応じて、タスクを複数のジョブに分割し、ジョブの配布、結果の収集を自律的に制御する機能を備えているためである。
【０００４】
また、上記データ解析手法の他の例としては、次のような手法も存在する。この手法は、上記手法と同様の分散処理システムにおいて、分散処理システムの構成、各ノードのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア数、動作周波数、スレッド数といったＣＰＵのリソース量、分散ファイルシステム用のストレージシステムのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）性能、実行するタスクの特性（例えば、ＣＰＵ依存であるか、Ｉ／Ｏ依存であるか等）に応じて、データ解析処理タスクを複数のジョブに分割する。そして、本手法は、実行するノードを固定的にして、プログラミングする。
【０００５】
この手法は、Ｈａｄｏｏｐを用いる場合に比べて、プログラミングの複雑度が上がり、プログラム自体のシステム構成変更に対する自由度が低下する。その代わりに、本手法は、タスクを複数のジョブに分割し並列実行する際、タスクの特性に応じて、与えられた計算リソースを効率的に利用することが可能であり、タスクを実行する処理時間をより短縮させることが可能となる。
【０００６】
特許文献１は、仮想システム環境における仮想マシンへのリソース割り当てのための技術を開示する。具体的には、コンピュータが、物理的なマシンの中の仮想空間内に、業務を実行するための空間として業務空間を定義し、業務空間に対してリソースの割り当てを行う。
【０００７】
特許文献２は、ＣＰＵ依存（ＣＰＵバウンド）系タスクとＩ／Ｏ依存（Ｉ／Ｏバウンド）系タスクとに分けて管理し、ＣＰＵとＩ／Ｏの状態（フリー状態／ビジー状態）により、処理タスクの優先順位を決定することにより、トータルスループットの向上を図る技術について開示している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１１８８６４号公報
【特許文献２】特開平０６−０１２２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
タスクを複数のジョブに分割しジョブを並列に実行させる処理を、Ｈａｄｏｏｐを用いて実行する場合、コンピュータは、分散処理システムを構成するノード単位で均一になるように、ジョブを分散させることにより、実行する。
【００１０】
また、Ｈａｄｏｏｐを実行する際、分散処理システムを構成するサーバノード群のＨ／Ｗスペックが、一部異なっている場合においても、ノード単位のジョブの均一配布を前提に、処理が実行される。このため、最も性能が劣るノードのジョブの処理時間にタスク全体の処理時間が依存してしまい、処理時間が長時間化する。つまり、分散処理システムのリソースの使用に空きが出現しないように効率的に使うことが難しいという課題があった。
【００１１】
このような課題を解決するために、コンピュータは、分散処理システムを構成する、各サーバノードのＣＰＵリソース、ストレージシステムの特性と、実行するタスクの特性を考慮して、ジョブを分割する。そして、コンピュータが、各ノードのリソース量に応じて、分割したジョブ数を割り当てるよう、タスクをプログラミングする。これにより、コンピュータが、リソース使用に空きが出現しないようにタスクを実行する環境を作ることが可能である。また、上記の実行方法をプログラミングするのではなく、タスクの特性に応じたジョブ分配のスケジューラが、リソース使用に空きが出現しないようにすることも可能である。
【００１２】
しかし、本環境においては、あるサーバノード内に複数のジョブが並列に実行されるため、ジョブ間での物理リソース使用量を制限することが難しく、ジョブ間でのリソース利用に競合が発生し、処理遅延が発生しうるという課題があった。また、処理を実行する分散処理システムが固定化されておらず、使用できるノードの構成の変更、また使用できるリソース量に変動があった場合、変動の度にプログラムの改修が必要である。
【００１３】
特許文献１は、特定の仮想マシンに対して、リソースを割り当てる手法であり、分散処理システム全体のリソースの効率的な利用については言及していない。
【００１４】
特許文献２は、単に、ＣＰＵバウンド系タスクとＩ／Ｏバウンド系タスクにタスクを分けて管理しただけであり、Ｈａｄｏｏｐ等における分散処理システムのリソースの使用の効率化や、ジョブ間でのリソース利用での競合による処理遅延に対する対策については、言及していない。
【００１５】
このため、本発明の目的は、上述した課題である、Ｈａｄｏｏｐ等の分散処理システムにおいて、リソースの使用に空きが出現しないように効率的に使うことが難しいという課題、及び、各ノードのリソース量に応じて、分割したジョブ数を割り当てるようにした場合、ジョブ間でのリソース利用に競合が発生し、処理遅延が発生しうるという課題を解決することにある。
【課題を解決するための手段】
【００１６】
本発明の情報処理装置は、サーバ仮想化環境を構築可能な、複数のタスク実行サーバに接続される情報処理装置であって、前記タスク実行サーバの構成を示すクラスタ構成情報を管理するクラスタ管理手段と、複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令するデプロイメント手段と、前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布するジョブ配布手段と、前記ジョブ配布サーバに前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、前記デプロイメント手段に送信するタスク実行命令手段と、を包含する。
【００１７】
本発明の方法は、タスク実行サーバの構成を示すクラスタ構成情報を管理し、複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令し、前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布し、前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、送信する。
【００１８】
本発明のコンピュータプログラムは、タスク実行サーバの構成を示すクラスタ構成情報を管理する処理と、複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンに基づいて前記仮想マシンの起動を命令する処理と、前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンにジョブを配布する処理と、前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された付帯情報に基づき、前記デプロイパターンを決定し、送信する処理と、をコンピュータに実行させる。
【発明の効果】
【００１９】
本発明によれば、Ｈａｄｏｏｐ等の分散処理システムにおいて、リソースの使用に空きが出現しないように効率的に使うことが難しいという課題、及び、各ノードのリソース量に応じて、分割したジョブ数を割り当てるようにした場合、ジョブ間でのリソース利用に競合が発生し、処理遅延が発生しうるという課題を解決し、タスクの実行時間を短縮することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明の第一の実施形態に係る、情報処理システムの構成の一例を示したブロック図である。
【図２】図２は、タスクを構成する複数のジョブ、及び、各ジョブに付帯する付帯情報の例を示す図である。
【図３】図３は、仮想マシンのデプロイパターンの定義例を示す図である。
【図４】図４は、定義される対応パターンの定義例を示す図である。
【図５】図５は、情報処理システムの動作を示すフローチャートである。
【図６】図６は、第二の実施形態に係る、情報処理システムの構成の一例を示すブロック図である。
【図７】図７は、第三の実施形態に係る、情報処理装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２１】
発明を実施するための第一の形態について、図面を参照して詳細に説明する。
【００２２】
図１は、本発明の第一の実施形態に係る、情報処理システム２０の構成の一例を示したブロック図である。
【００２３】
情報処理システム２０は、タスク実行命令サーバ１、ジョブ配布サーバ２、クラスタ管理サーバ３、デプロイメントサーバ４、少なくとも２台以上のタスク実行サーバ１０、及び、分散ファイルシステム１２により構成される。また、これらの構成要素（各サーバ）は、ネットワーク５を介して、各サーバ間での通信が可能である。タスク実行命令サーバ１、ジョブ配布サーバ２、クラスタ管理サーバ３、およびデプロイメントサーバ４は、タスク実行サーバ１０に接続する情報処理装置の一例である。
【００２４】
タスク実行サーバ１０は、分散ファイルシステム１２に対するデータの入出力を担う。また、タスク実行サーバ１０は、与えられた条件に基づいて、デプロイメントサーバ４で指定された各々の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）１１を起動する。
【００２５】
また、分散ファイルシステム１２は、複数のタスク実行サーバ１０内に備えられた記憶デバイスを組み合わせたストレージシステムとして動作するが、タスク実行サーバ１０の外部に備えられた複数の記憶媒体を、ネットワークを経由して接続する外部ストレージシステムとして構成してもよい。
【００２６】
タスク実行命令サーバ１は、後述の図２にて説明する処理対象となるタスクに付与される付帯情報を、タスクを構成するジョブと対応づけて格納する。また、タスク実行命令サーバ１は、付帯情報に基づき、タスクを構成するジョブを実行する際の仮想マシン１１の数（配備数またはデプロイ数）を決定する。すなわち、タスク実行命令サーバ１は、各タスク実行サーバ１０における仮想マシン１１のデプロイメント（配備）のためのデプロイメントパターンを決定する。さらに、タスク実行命令サーバ１は、タスク実行サーバ１０でのデプロイメント完了後、上記ジョブをジョブ配布サーバ２へ送信する。なお、デプロイメントによる仮想マシンの起動は、後述するデプロイメントサーバ４によって行われる。
【００２７】
ジョブ配布サーバ２は、タスク実行命令サーバ１より与えられた実行対象となるジョブを、複数の仮想マシン１１（仮想マシン群）に分配する。具体的に、ジョブ配布サーバ２は、クラスタ管理サーバ３にて管理されているクラスタ構成情報を基に、タスク処理基盤のハードウェア群であるクラスタを構成するタスク実行サーバ１０上で起動している複数の仮想マシン１１に、ジョブを分配する。
【００２８】
クラスタ管理サーバ３は、タスク処理基盤を構成するクラスタ構成情報を管理しており、クラスタ構成情報の更新、及び、他のサーバからのクラスタ構成情報の問い合わせに対する情報の提供を行う。
【００２９】
デプロイメントサーバ４は、仮想マシン群の設定パターンを示すデプロイパターンを記憶する。また、デプロイメントサーバ４は、外部サーバ群（タスク実行命令サーバ１）からの命令に基づき、デプロイメントサーバ４で指定されたパターン（以下、デプロイパターンと記載）での仮想マシン１１の起動を、各タスク実行サーバ１０に対して命令する。さらに、デプロイメントサーバ４は、仮想マシン１１の起動後、クラスタ管理サーバ３に対して、起動した仮想マシン１１群に合わせて、管理するクラスタ構成情報の更新命令を発行してもよい。
【００３０】
ここで、タスク実行命令サーバ１、ジョブ配布サーバ２、クラスタ管理サーバ３、デプロイメントサーバ４、及び、タスク実行サーバ１０は、それぞれコンピュータ等の情報処理装置で構成される。
【００３１】
ネットワーク５は、有線ネットワーク、無線ネットワーク、または、それらの混在のいずれで構成されてもよい。
【００３２】
ところで、情報処理システム２０は、タスク実行サーバ１０、すなわち、分散システムを構成する各ノードに、ＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）、Ｘｅｎ（登録商標）、ＶＭｗａｒｅ（登録商標）といった仮想マシンの実行環境を組み込み、本実行環境上で、仮想マシンを単一ジョブの実行の単位としたＨａｄｏｏｐに代表される並列分散処理の実行環境を実現する。
【００３３】
また、上記環境に接続するストレージシステム（分散ファイルシステム１２）は、ＨａｄｏｏｐのＨＤＦＳ（Ｈａｄｏｏｐ分散ファイルシステム：Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  ＦｉｌｅＳｙｓｔｅｍ）に代表されるような、分散システムを構成する物理ノード上の記録媒体を連動して動作させる分散ファイルシステム、もしくは、すべての仮想マシンから、解析タスクの対象となるすべてのデータへのアクセスを可能とする外部ストレージシステムにより構成される。
【００３４】
本実行環境において、デプロイメントサーバ４は、システムを構成しているノードのＣＰＵリソース、及び、平均Ｉ／Ｏ性能に応じた仮想マシン１１の数（仮想マシン数）の最大値（最小値：１ノードあたり１仮想マシン）を定義する。これらの定義に基づき、デプロイメントサーバ４は、実行されるタスクの特性に応じて発生しうるシステムのボトルネックの早期発生を防ぐようなリソース配分となる仮想マシン１１のデプロイパターンを予め設定しておく。また、デプロイメントサーバ４は、各仮想マシン１１には、使用するＣＰＵリソースや、時間あたりの最大発行Ｉ／Ｏ数を設定し、物理リソースの利用に制限をかけておくこととする。
【００３５】
本実施形態のタスク実行命令サーバ１は、上記定義に基づく仮想マシン１１のデプロイパターンを基に、実行するタスク内に、個々のジョブの並列実行適正度、Ｉ／Ｏ、もしくはＣＰＵ依存度、データ容量等の諸条件を付帯情報として付与しておく。そして、タスク実行命令サーバ１は、例えばタスク実行命令サーバ１が有するタスクスケジューラにより、ジョブの分配方法を変更するのではなく、ジョブを実行する仮想マシンのデプロイ数を変更することで、ジョブを仮想マシン単位で分配して実行する手段を備える。
【００３６】
また、タスク実行命令サーバ１は、例えば、タスクが複数のステップからなる複数のジョブにより構成されている場合を想定して、次に実行するジョブ実行時間と仮想マシン１１の再構築（仮想マシンのシャットダウン〜次のジョブ実行に最適な仮想マシン環境のデプロイ）時間とを比較し、仮想マシン１１の再構築時間が、次のジョブ実行時間よりも十分小さい場合のみ、仮想マシン１１の再構築を行う判定手段を備える、としてもよい。
【００３７】
なお、分散システムを構成する物理ノードの構成が変更された場合、情報処理システム２０は、仮想マシン１１のデプロイパターンのみを変更するものとし、実行するタスクについては、変更を加えないものとする。
【００３８】
図２は、タスクを構成する複数のジョブ、及び、各ジョブに付帯する付帯情報の例を示す図である。
【００３９】
タスクを構成する各ジョブには、少なくとも処理特性、並列処理適合度、及び、Ｉ／Ｏ特性の３つの付帯情報が付与されている。
【００４０】
処理特性とは、ＣＰＵ処理時間がジョブの全処理時間に対して支配的か（ＣＰＵ  Ｂｏｕｎｄ：ＣＰＵ依存）、もしくはＩ／Ｏ処理時間がジョブの全処理時間に対して支配的か（Ｉ／Ｏ  Ｂｏｕｎｄ：Ｉ／Ｏ依存）を示す付帯情報である。
【００４１】
並列処理適合度とは、プログラミングされているジョブがマルチプロセスやマルチスレッド対応されているか否か（Ｙｅｓ  ｏｒ  Ｎｏ）を示す付帯情報である。
【００４２】
Ｉ／Ｏ特性とは、ジョブによる処理対象となるデータをどのように読み出しするのか（Ｓｅｑｕｅｎｔｉａｌ  ｏｒ  Ｒａｎｄｏｍ：連続読み出し  または  ランダム読み出し）を示す付帯情報である。
【００４３】
これらの付帯情報は、タスクを投入するタスク実行命令サーバ１を管理するユーザにより事前に付与され格納されるものとする。しかし、予めジョブの特性を決定できない場合は、ユーザによりタスク実行命令サーバ１が、後から随時、情報を付与するとしてもよい。
【００４４】
図３は、複数のタスク実行サーバ１０からなるクラスタシステムを前提とした場合の、仮想マシン１１のデプロイパターンの定義例を示した図である。この定義例は、デプロイメントサーバ４に定義（設定）される。
【００４５】
各デプロイパターンは、パターン制約条件、１つのタスク実行サーバ１０あたりの仮想マシン数（ＶＭ数）、及び、各パターンを識別するためのパターン番号の３つの情報から構成される。
【００４６】
各デプロイパターンのパターン制約条件は、ジョブの付帯情報に含まれる処理特性に応じて定義される。デプロイメントサーバ４は、ＣＰＵ  Ｂｏｕｎｄの場合における仮想マシン数の最大値、及び、最小値、さらに、Ｉ／Ｏ  Ｂｏｕｎｄ時におけるＳｅｑｕｅｎｔｉａｌ  ＲＥＡＤ（連続読み出し）性能が最大となる仮想マシン数、及び、ＲａｎｄｏｍＲＥＡＤ（ランダム読み出し）性能が最大となる仮想マシン数を設定する。
【００４７】
なお、ＣＰＵ  Ｂｏｕｎｄの場合における仮想マシン数の最大値は、例えば、タスク実行サーバ１０上で動作する仮想化基盤が利用できるＣＰＵの特性に基づき、ＣＰＵの論理コア、物理コア、論理スレッド数等に対応する値を設定する。
【００４８】
また、ＣＰＵ  Ｂｏｕｎｄの場合における仮想マシン数の最小値は、１タスク実行サーバ１０あたり、１つの仮想マシン１１（ＶＭ数が１）が最小となる。
【００４９】
例えば、コア数が３０で構成されるＣＰＵに対して、ジョブの実行プログラムが１並列処理まで対応可能な処理プログラムである場合、ＶＭ数は３０となる。また、コア数が３０で構成されるＣＰＵに対して、３０並列処理まで対応可能な処理プログラムである場合、ＶＭ数は１となる。このようにして導出されたＶＭ数が、例えば、上記に示したような最大値、最小値として設定される。
【００５０】
これらのパターン定義値は、タスク実行サーバ１０のスペック情報や、分散ファイルシステム１２のスペック情報、または、あらかじめ計測したシステムとしての性能スペック情報に基づき、例えば、本システムの運用管理者により、あらかじめデプロイメントサーバ４あるいはタスク実行命令サーバ１に設定されているものとする。
【００５１】
なお、異なるスペックのタスク実行サーバ１０が混在している場合には、本システムの運用管理者が、デプロイメントサーバ４にスペックごとに本デプロイパターンを定義するものとする。
【００５２】
図４は、図２に示すように付与されたジョブの付帯情報と、図３に示すように定義されたデプロイパターン（パターン番号）に基づき、定義される対応パターンの定義例を示す図である。
【００５３】
ジョブの処理特性が、Ｉ／Ｏ  Ｂｏｕｎｄであった場合は、そのＩ／Ｏ特性がＳｅｑｕｅｎｔｉａｌ（連続読み出し）かＲａｎｄｏｍ（ランダム読み出し）かで、パターンが決定づけられる。
【００５４】
また、ジョブの処理特性が、ＣＰＵ  Ｂｏｕｎｄであった場合は、プログラミングされたジョブがマルチプロセス、マルチスレッド実行に対応しているか否かで、並列処理適合度が決められ、パターンが決定づけられる。  ジョブの処理特性が付与されているが、並列処理適合度、Ｉ／Ｏ特性のいずれかの付帯情報が付与されていなかった場合についても（図４の「ジョブの処理特性」が「Ｎ／Ａ（Ｎｏｔ  Ａｖａｉｌａｂｌｅ）」の場合など）、付与される情報の優先度を、１．処理特性、２．Ｉ／Ｏ特性、３．並列処理適合度の順に設定するなどして、付与されている情報の中からパターンに合致するものを選択する。
【００５５】
なお、上記優先度については、タスク処理サーバ１０を構成するＣＰＵ性能、および記憶媒体の性能に応じて、優先順位を変更することができるものとする。例えば、タスク処理サーバ１０の記憶媒体にＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの半導体デバイスを用いていた場合は、Ｉ／Ｏ特性の依存度が軽減されることから、並列処理適合度を優先するなどの優先順位の定義が考えられる。
【００５６】
また、図４に示される対応パターン定義例は、タスク実行命令サーバ１にて保存管理されるものとする。
【００５７】
図５は、情報処理システム２０の動作を示すフローチャートである。
【００５８】
以下、図２に示したタスクへ付与した付帯情報、及び、図３、図４に示した付帯情報に対応するパターンの定義に基づき、タスク実行命令サーバ１にて投入されたタスクの実行手順について、図５に示したフローチャートを参照し、説明する。
【００５９】
まず、タスクを実行したいユーザにより、タスク実行命令サーバ１に対してタスクが投入される。
【００６０】
タスク実行命令サーバ１は、タスクを内部に含まれるジョブに分解し、さらにジョブに付与された付帯情報を参照し、図４の例に示された対応パターン表と照合する（ステップＳ１０１）。そして、タスク実行命令サーバ１は、上記ジョブの実行時における仮想マシンのデプロイパターンを抽出する。次にタスク実行命令サーバ１は、抽出されたデプロイパターンから、図３に示す定義例を参照して、パターン番号に対応するデプロイする仮想マシン数を決定する（ステップＳ１０２）。
【００６１】
次に、タスク実行命令サーバ１は、クラスタ管理サーバ３からクラスタ構成情報を、デプロイメントサーバ４から仮想マシンのデプロイ状況を問い合わせ、上記通り決定した仮想マシン数と、既にデプロイされている仮想マシン数を比較し、差異があるかを確認する。これにより、タスク実行命令サーバ１は、仮想マシン１１の構成変更が必要であるかどうかを判定する（ステップＳ１０３）。
【００６２】
仮想マシン１１の構成変更が必要でない場合（Ｓ１０３でＮＯ）、タスク実行命令サーバ１は、タスクを構成する実行対象となるジョブをジョブ配布サーバ２へ送信し、処理が完了するまで待機する。また、ジョブ配布サーバ２は、クラスタ管理サーバ３にクラスタ構成情報を問い合わせ、クラスタを構成する仮想マシン群１１へジョブを配布し、すべてのジョブの処理が完了するまで待機する（ステップＳ１０６）。
【００６３】
仮想マシン１１の構成変更が必要である場合（Ｓ１０３でＹＥＳ）、タスク実行命令サーバ１は、デプロイメントサーバ４へ、前述のステップＳ１０２で決定した仮想マシン数での仮想マシン１１のデプロイ（配備）を行うように指示を行う。
【００６４】
デプロイメントサーバ４は、指示に基づき、タスク実行サーバ１０上で動作する既存の仮想マシン１１をシャットダウンし、指定された数の仮想マシン１１をタスク実行サーバ１０へデプロイ（再デプロイ）する（ステップＳ１０４）。
【００６５】
デプロイの完了後、デプロイメントサーバ４は、タスク実行命令サーバ１へ、指定した仮想マシン１１のデプロイが完了したことを通知する。
【００６６】
タスク実行命令サーバ１は、上記完了通知を受け取った後、クラスタ構成管理サーバ３に対して、デプロイした仮想マシン構成に基づき、クラスタ構成情報の変更命令を実行する（ステップＳ１０５）。
【００６７】
クラスタ構成管理サーバ３でのクラスタ構成情報の変更完了後、タスク実行命令サーバ１は、前述のタスクを構成する実行対象となるジョブをジョブ配布サーバ２へ送信し、前述のＳ１０６の通り、すべての処理が完了するまで待機する。
【００６８】
Ｓ１０６において、ジョブを配布した仮想マシン１１におけるすべての処理が完了後、ジョブ配布サーバ２は、タスク実行命令サーバ１に対して、ジョブの実行が完了したことを通知する。
【００６９】
タスク実行命令サーバ１は、次のジョブが存在するかどうかを判定し（ステップＳ１０７）、次のジョブが存在する場合は、Ｓ１０１へ戻り、タスクの実行を継続する。一方、次のジョブが存在しない場合は、タスク実行命令サーバ１は、タスクの実行を完了する。
【００７０】
なお、Ｓ１０４の動作方法として仮想マシン１１の再デプロイが必要な場合、ジョブの処理特性がＩ／Ｏ  Ｂｏｕｎｄであり、処理対象となるデータの総容量を分散ファイルシステム１２に問い合わせることで取得できる場合は、タスク実行命令サーバ１は、Ｉ／Ｏパターンに応じて、総Ｉ／Ｏ時間を算出する。
【００７１】
また、ジョブの処理特性がＣＰＵ  Ｂｏｕｎｄであり、処理対象となるデータの総数が分散ファイルシステム１２に問い合わせることで取得できる場合は、タスク実行命令サーバ１は、試験的に現クラスタ環境において１データにかかる目安となる処理時間を計測し総処理時間を算出する。
【００７２】
そして、タスク実行命令サーバ１は、算出した各々の時間に比べて、仮想マシン１１のシャットダウン時間、及び、仮想マシン１１のデプロイ時間を合計した時間が十分小さい場合にのみ、仮想マシン１１の再デプロイを実行する、としてもよい。
【００７３】
ところで、情報処理システム２０は、分散処理システムを構成しているサーバノード等の物理ノードの構成が変動するような環境や、異なるスペックを持つ物理ノードを組み合わせた環境の場合も考えられる。この場合においても、情報処理システム２０は、仮想マシン１１をデプロイするパターンの定義のみを変更し、タスクの特性に応じた仮想マシン数をデプロイした後、Ｈａｄｏｏｐのような並列分散処理基盤を介してジョブ分配する。これにより、タスクを実行するプログラムに変更を加えることなく、タスクの実行時間を短縮することが可能となる、としてもよい。
【００７４】
本実施形態に係る情報処理システム２０は、以下に記載するような効果を奏する。
【００７５】
その効果は、Ｈａｄｏｏｐ等の分散処理システムにおいて、リソースの使用に空きが出現しないように効率的に使うことが難しいという課題、及び、各ノードのリソース量に応じて、分割したジョブ数を割り当てるようにした場合、ジョブ間でのリソース利用に競合が発生し、処理遅延が発生しうるという課題を解決し、タスクの実行時間を短縮することが可能となる。
【００７６】
その理由は、実行するタスク内の個々のジョブに、処理特性、並列処理適合度、Ｉ／Ｏ特性等の諸条件を付帯情報として付与しておき、予め設定した、付帯情報に対応する、仮想マシン１１の数を示すデプロイパターンを基に、タスクの特性に応じて、ジョブを実行する仮想マシン１１のデプロイ数を変更することで、ジョブを仮想マシン単位で分配して実行するからである。
＜第二の実施形態＞
次に、本発明を実施するための第二の形態について図面を参照して詳細に説明する。
【００７７】
図６は、第二の実施形態に係る、情報処理システム３０の構成の一例を示すブロック図である。
【００７８】
情報処理システム３０は、図１に示した第一の実施形態のデータ並列処理実行制御システム２０と同様の構成（タスク実行命令サーバ３１、デプロイメントサーバ３４、ネットワーク３５、タスク実行サーバ３１０、仮想マシン３１１、及び、分散ファイルシステム３１２）において、複数のジョブ配布サーバ３２０、３２１、及び、クラスタ管理サーバ３３０、３３１のペアが、システム接続し、タスク実行命令サーバ３１、デプロイメントサーバ３４、及び、処理実行サーバ３１０群を共有している構成である。なお、図６では、上記ペアが２つの場合を示しているが、ペアの数量は２以上の任意の数であってもよい。
【００７９】
情報処理システム３０は、この構成において、ジョブ配布サーバ３２０、クラスタ管理サーバ３３０、及び、ジョブ配布サーバ３２１、クラスタ管理サーバ３３１の各ペアが並列に異なる特性のタスクを実行する際、あらかじめ各々が利用するタスク実行サーバ３１０群の使用リソース比率を決めておく。そして、情報処理システム３０は、上記各ペアが使用するリソース比率を前提として、上記各ペアに対応した、仮想マシン３１１のデプロイパターン（第一の実施形態の図３に相当）、及び、ジョブ特性に対応したパターン（第一の実施形態の図４に相当）を定義しておくことにより、複数の特性の異なるタスクを混在して並列に実行することができる。
【００８０】
上記により、情報処理システム３０は、タスク間でリソース競合を発生することなく、あらかじめ決められたリソースの使用比率の範囲内で、タスクの処理時間を短縮するという効果が得られる。
【００８１】
本実施形態に係る情報処理システム３０は、以下に記載するような効果を奏する。
【００８２】
その効果は、ジョブ配布サーバ３２０、クラスタ管理サーバ３３０、及び、ジョブ配布サーバ３２１、クラスタ管理サーバ３３１の各ペアが並列に異なる特性のタスクを実行する際、タスク間でリソース競合を発生することなく、あらかじめ決められたリソースの使用比率の範囲内で、タスクの処理時間を短縮する。
【００８３】
その理由は、あらかじめ、情報処理システム３０が、ジョブ配布サーバ３２０、クラスタ管理サーバ３３０、及び、ジョブ配布サーバ３２１、クラスタ管理サーバ３３１の各ペアが利用する処理実行サーバ１０群の使用リソース比率を決めておく。そして、情報処理システム３０が、各ペアが使用するリソース比率を前提として、各ペアに対応した仮想マシンのデプロイパターン、及び、ジョブ特性に対応したパターンを定義しておくからである。
＜第三の実施形態＞
次に、本発明を実施するための第三の形態について図面を参照して詳細に説明する。
【００８４】
図７は、第三の実施形態に係る、情報処理装置４０の構成の一例を示すブロック図である。
【００８５】
情報処理装置４０は、タスク実行命令部４１、ジョブ配布部４２、クラスタ管理部４３、デプロイメント部４４を備える。タスク実行命令部４１、ジョブ配布部４２、クラスタ管理部４３、およびデプロイメント部４４と、タスク実行サーバ４５とは、情報処理装置４０の内部バスまたはネットワークによって接続されている。
【００８６】
情報処理装置４０は、サーバ仮想化環境を構築可能な、複数のタスク実行サーバ４５に接続される、情報処理装置４０である。そして、情報処理装置４０は、タスク実行サーバ４５の構成を示すクラスタ構成情報を管理するクラスタ管理部４３と、複数のタスク実行サーバ４５に対して、各タスク実行サーバ４５の仮想マシン４６の数を示すデプロイパターンに基づいて仮想マシン４６の起動を命令するデプロイメント部４４と、クラスタ構成情報によって示される仮想マシン４６であってタスク実行サーバ４５上で起動している仮想マシン４６にジョブを配布するジョブ配布部４２と、ジョブ配布部４２にジョブを含むタスクを送信し、タスクに含まれるジョブに付与された付帯情報に基づき、デプロイパターンを決定し、デプロイメント部４４に送信するタスク実行命令部４１と、を包含する。
【００８７】
本実施形態に係る情報処理装置４０は、以下に記載するような効果を奏する。
【００８８】
その効果は、Ｈａｄｏｏｐ等の分散処理システムにおいて、リソースの使用に空きが出現しないように効率的に使うことが難しいという課題、及び、各ノードのリソース量に応じて、分割したジョブ数を割り当てるようにした場合、ジョブ間でのリソース利用に競合が発生し、処理遅延が発生しうるという課題を解決し、タスクの実行時間を短縮することが可能となる。
【００８９】
その理由は、タスクに含まれるジョブに付与された付帯情報に基づき、仮想マシン４６の数を示すデプロイパターンを決定し、デプロイパターンでの仮想マシン４６の起動を命令するからである。
【００９０】
以上、図面を参照して本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００９１】
１    タスク実行命令サーバ
２    ジョブ配布サーバ
３    クラスタ管理サーバ
４    デプロイメントサーバ
５    ネットワーク
１０    タスク実行サーバ
１１    仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）
１２    分散ファイルシステム
２０    情報処理システム
３０    情報処理システム
３１    タスク実行命令サーバ
３１０    タスク実行サーバ
３１１    仮想マシン
３１２    分散ファイルシステム
３２０、３２１    ジョブ配布サーバ
３３０、３３１    クラスタ管理サーバ
３４    デプロイメントサーバ
３５    ネットワーク
４０    情報処理装置
４１    タスク実行命令部
４２    ジョブ配布部
４３    クラスタ管理部
４４    デプロイメント部
４５    タスク実行サーバ
４６    仮想マシン
【図１】
2016115065.tif 000003
【図２】
2016115065.tif 000004
【図３】
2016115065.tif 000005
【図４】
2016115065.tif 000006
【図５】
2016115065.tif 000007
【図６】
2016115065.tif 000008
【図７】
2016115065.tif 000009
【手続補正書】
【提出日】平成28年4月18日(2016.4.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サーバ仮想化環境を構築可能な、複数のタスク実行サーバに接続される情報処理装置であって、
前記タスク実行サーバの構成を示すクラスタ構成情報を管理するクラスタ管理手段と、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンを定義する、ジョブの付帯情報に含まれる処理特性に応じて定義されるパターン制約条件に基づいて、前記仮想マシンの起動を命令するデプロイメント手段と、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンに前記ジョブを配布するジョブ配布手段と、
前記ジョブ配布手段に前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された前記付帯情報に基づき、前記デプロイパターンを決定し、前記デプロイメント手段に送信するタスク実行命令手段と、を包含する、情報処理装置。
【請求項２】
前記付帯情報が、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）依存、または、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）依存を示す処理特性を含む、請求項１に記載の情報処理装置。
【請求項３】
前記付帯情報が、マルチプロセス、または、マルチスレッドに適合するか否かを示す並列処理適合度を含む、請求項１または２に記載の情報処理装置。
【請求項４】
前記付帯情報が、シーケンシャル、または、ランダムを示すＩ／Ｏ特性を含む、請求項１または２に記載の情報処理装置。
【請求項５】
前記ジョブ配布手段、及び、前記クラスタ管理手段のペアが複数で、
前記タスク実行命令手段が、各々の前記ペアごとに、前記デプロイパターンを決定する、請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の情報処理装置と、
前記複数のタスク実行サーバと、を包含する情報処理システム。
【請求項７】
タスク実行サーバの構成を示すクラスタ構成情報を管理し、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンを定義する、ジョブの付帯情報に含まれる処理特性に応じて定義されるパターン制約条件に基づいて、前記仮想マシンの起動を命令し、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンに前記ジョブを配布し、
前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された前記付帯情報に基づき、前記デプロイパターンを決定し、送信する、タスク処理方法。
【請求項８】
前記付帯情報が、ＣＰＵ依存、または、Ｉ／Ｏ依存を示す処理特性を含む、請求項７に記載のタスク処理方法。
【請求項９】
前記付帯情報が、マルチプロセス、または、マルチスレッドに適合するか否かを示す並列処理適合度を含む、請求項７または８に記載のタスク処理方法。
【請求項１０】
タスク実行サーバの構成を示すクラスタ構成情報を管理する処理と、
複数の前記タスク実行サーバに対して、各タスク実行サーバの仮想マシンの数を示すデプロイパターンを定義する、ジョブの付帯情報に含まれる処理特性に応じて定義されるパターン制約条件に基づいて、前記仮想マシンの起動を命令する処理と、
前記クラスタ構成情報によって示される前記仮想マシンであって前記タスク実行サーバ上で起動している前記仮想マシンに前記ジョブを配布する処理と、
前記ジョブを含むタスクを送信し、前記タスクに含まれる前記ジョブに付与された前記付帯情報に基づき、前記デプロイパターンを決定し、送信する処理と、をコンピュータに実行させるプログラム。