(57)【特許請求の範囲】
【請求項１】
第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測する、予測手段と、
前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する、選定手段と、
を備え、
前記予測手段は、前記処理性能として、前記所定の処理に係る処理時間を予測し、
前記選定手段は、
前記予測された処理時間をもとに、前記所定の処理が終了すべき時刻までに終了するように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定し、
前記第２のデータに対する前記所定の処理を実行すべき前記処理装置における他のデータに対する前記所定の処理の状況、及び、前記予測された処理時間をもとに、前記第２のデータに対する前記所定の処理を開始する前に、当該所定の処理が前記終了すべき時刻までに終了できるかどうかを判定し、終了できない場合、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を再決定する、
情報処理装置。
【請求項２】
前記予測手段は、前記処理性能として、前記所定の処理に係る処理時間とリソース量とを予測し、
前記選定手段は、前記予測された処理時間とリソース量とをもとに、前記所定の処理が終了すべき時刻までに終了し、かつ、前記所定の処理を開始してから終了するまでの間に、前記予測されたリソース量が前記処理装置で利用可能なリソース量以下となるように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定する、
請求項１に記載の情報処理装置。
【請求項３】
前記選定手段は、前記予測された処理時間とリソース量に、前記決定した、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を関連付けて表示する、
請求項２に記載の情報処理装置。
【請求項４】
前記選定手段は、起動中の複数の前記処理装置から、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定可能かどうか判定し、選定できない場合、新たに前記処理装置を起動し、当該新たに起動した前記処理装置を、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置として選定する、
請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
さらに、前記処理装置から収集した、前記第１のデータに対して前記所定の処理を実行したときの当該所定の処理に係る処理性能をもとに、前記関係を生成する、生成手段を備える、
請求項１乃至４のいずれかに記載の情報処理装置。
【請求項６】
コンピュータに具備された予測手段が、第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測し、
前記コンピュータに具備された選定手段が、前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する、
情報処理方法であって、
前記予測手段は、前記所定の処理に係る処理性能を予測する場合、前記処理性能として、前記所定の処理に係る処理時間を予測し、
前記選定手段は、前記所定の処理を実行すべき前記処理装置を選定する場合、前記予測された処理時間をもとに、前記所定の処理が終了すべき時刻までに終了するように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定し、
さらに、前記選定手段は、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置における他のデータに対する前記所定の処理の状況、及び、前記予測された処理時間をもとに、前記第２のデータに対する前記所定の処理を開始する前に、当該所定の処理が前記終了すべき時刻までに終了できるかどうかを判定し、終了できない場合、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を再決定する、
情報処理方法。
【請求項７】
前記予測手段は、前記所定の処理に係る処理性能を予測する場合、前記処理性能として、前記所定の処理に係る処理時間とリソース量とを予測し、
前記選定手段は、前記所定の処理を実行すべき前記処理装置を選定する場合、前記予測された処理時間とリソース量とをもとに、前記所定の処理が終了すべき時刻までに終了し、かつ、前記所定の処理を開始してから終了するまでの間に、前記予測されたリソース量が前記処理装置で利用可能なリソース量以下となるように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定する、
請求項６に記載の情報処理方法。
【請求項８】
コンピュータに、
第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測し、
前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する、
処理を実行させるプログラムであって、
前記所定の処理に係る処理性能を予測する場合、前記処理性能として、前記所定の処理に係る処理時間を予測し、
前記所定の処理を実行すべき前記処理装置を選定する場合、前記予測された処理時間をもとに、前記所定の処理が終了すべき時刻までに終了するように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定し、
さらに、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置における他のデータに対する前記所定の処理の状況、及び、前記予測された処理時間をもとに、前記第２のデータに対する前記所定の処理を開始する前に、当該所定の処理が前記終了すべき時刻までに終了できるかどうかを判定し、終了できない場合、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を再決定する、
処理を実行させるプログラム。
【請求項９】
前記所定の処理に係る処理性能を予測する場合、前記処理性能として、前記所定の処理に係る処理時間とリソース量とを予測し、
前記所定の処理を実行すべき前記処理装置を選定する場合、前記予測された処理時間とリソース量とをもとに、前記所定の処理が終了すべき時刻までに終了し、かつ、前記所定の処理を開始してから終了するまでの間に、前記予測されたリソース量が前記処理装置で利用可能なリソース量以下となるように、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置、及び、前記所定の処理を開始すべき時刻を決定する、
処理を実行させる、請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特に、分析処理等の所定の処理を複数の処理装置で分散して実行するための、情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
近年、業務処理において扱われるデータが大規模化しており、これらのデータに対する処理は複数のサーバに分散して行われている。例えば、ビッグデータ等の大規模データを扱う分析システムにおいては、分析処理層を分散して構成することにより、負荷を分散する。しかし、データ分析においては、分析対象のデータの大きさや構成は様々であり、これらデータの大きさや構成によって分析処理の所要時間やリソース消費量が異なる。また、処理単位あたりの所要時間も、一般的なＷｅｂアプリケーションサーバにおける業務処理の所要時間と比べて長い傾向がある。そのため、分析処理における負荷の度合いや兆候を想定することは困難であり、処理量等を事前に見積もった上でのスケーリングの最適化が行われていない。その結果、サーバ等のリソースの配置が適切に行われていない。特に、従量課金制のクラウドサービス上でこのような分析システムを構築する場合、リソースの配置が過剰だと、サービス利用に伴う費用が増大してしまう。
【０００３】
また、データ分析では、最新の予測モデルや分類モデルを生成する必要があるため、定期的な分析処理が発生する。この場合、分析対象によっては、短期間でのモデル更新が求められるため、分析処理に時間的な制約が伴うことが多い。そのような制約の下で、多くのモデルを更新するためには、リソースと負荷の平準化を十分考慮してリソースプランニングをする必要がある。リソースプランニングは、一般に、一定の経験やスキルが必要であるため、システム運用者等への負担も大きい。
【０００４】
このような負荷分散に係る技術の一例が、特許文献１に記載されている。特許文献１に記載の技術では、入力データの値に係る条件ごとに、各サーバで動作するビジネスプロセスの平均応答時間が算出され、入力データの値に対して、平均応答時間が最も短いビジネスプロセスが動作するサーバが選択される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−００４４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特許文献１に記載された技術では、入力データの値によりプロセスの応答時間が決まる場合には、応答時間が短いサーバを選択できる。しかしながら、データ分析のように、データの大きさや構成によって分析処理の所要時間やリソース消費量が異なる場合には、適切なサーバを選択することが難しい。
【０００７】
本発明の目的は、上述の課題を解決し、様々な大きさや構成を有するデータに対して所定の処理を分散して実行する場合に、リソースの配置を最適化する、情報処理装置、情報処理方法、及び、プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測する、予測手段と、前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する、選定手段と、を備える。
【０００９】
本発明の情報処理方法は、第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測し、前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する。
【００１０】
本発明のプログラムは、コンピュータに、第１のデータの属性と当該第１のデータに対して所定の処理を処理装置で実行したときの当該所定の処理に係る処理性能との関係を用いて、第２のデータの属性に対する前記所定の処理に係る処理性能を予測し、前記予測された処理性能をもとに、複数の前記処理装置の内、前記第２のデータに対する前記所定の処理を実行すべき前記処理装置を選定する、処理を実行させる。
【発明の効果】
【００１１】
本発明の効果は、様々な大きさや構成を有するデータに対して所定の処理を分散して実行する場合に、リソースの配置を最適化できることである。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の実施の形態における、分析システム１の構成を示すブロック図である。
【図３】本発明の実施の形態における、コンピュータにより実現された負荷分散装置２００の構成を示すブロック図である。
【図４】本発明の実施の形態における、分析実行処理を示すフローチャートである。
【図５】本発明の実施の形態における、モデル生成処理を示すフローチャートである。
【図６】本発明の実施の形態における、ノード選定処理を示すフローチャートである。
【図７】本発明の実施の形態における、リクエスト転送／ノード再選定処理を示すフローチャートである。
【図８】本発明の実施の形態における、性能情報の例を示す図である。
【図９】本発明の実施の形態における、学習用性能情報２２１の例を示す図である。
【図１０】本発明の実施の形態における、モデル情報２２２の例を示す図である。
【図１１】本発明の実施の形態における、ノード情報２２６の例を示す図である。
【図１２】本発明の実施の形態における、処理性能の予測結果を示す図である。
【図１３】本発明の実施の形態における、ノード３００、ワーカー３１０の選定の例を示す図である。
【図１４】本発明の実施の形態における、ノード３００、ワーカー３１０の選定の他の例を示す図である。
【図１５】本発明の実施の形態における、ノード３００、ワーカー３１０の選定の他の例を示す図である。
【図１６】本発明の実施の形態における、ノード３００、ワーカー３１０の選定の他の例を示す図である。
【図１７】本発明の実施の形態における、選定結果２２５の例を示す図である。
【図１８】本発明の実施の形態における、表示画面５００の例を示す図である。
【図１９】本発明の実施の形態における、ノード３００、ワーカー３１０の再選定の例を示す図である。
【発明を実施するための形態】
【００１３】
以下、入力されたデータに対して分析処理を行う、分析システム１を例に、本発明の実施の形態を説明する。
【００１４】
はじめに、本発明の実施の形態の構成を説明する。
【００１５】
図２は、本発明の実施の形態における、分析システム１の構成を示すブロック図である。図２を参照すると、分析システム１は、１以上のクライアント装置１００、負荷分散装置２００、１以上のノード３００、及び、データ記憶装置４００を含む。クライアント装置１００と負荷分散装置２００、負荷分散装置２００とノード３００、負荷分散装置２００とデータ記憶装置４００、及び、ノード３００とデータ記憶装置４００は、ネットワーク等により接続される。
【００１６】
クライアント装置１００は、分析リクエストを、負荷分散装置２００を介して、ノード３００に送信する。
【００１７】
ノード３００（以下、処理装置、または、サーバマシンとも記載）は、クライアント装置１００から負荷分散装置２００を介して受信した分析リクエストに対して、分析処理を実行する。ノード３００は、例えば、ＣＰＵ（Central Processing Unit）とプログラムを記憶した記憶媒体を含み、プログラムにもとづく制御によって動作するコンピュータである。ノード３００は、物理的なコンピュータ（物理マシン）でも仮想的なコンピュータ（仮想マシン）でもよい。
【００１８】
ノード３００上では、分析処理を実行するためのプログラム（プロセス）である、１以上のワーカー３１０（以下、サーバプロセスとも記載）が稼働する。各ノード３００で同時に稼働可能なワーカー３１０の数は、最大ワーカー数により定義される。ノード３００のリソース（メモリ、ディスク）は、当該ノード３００で稼働するワーカー３１０により共有される。ノード３００で利用可能なリソース量の最大値は、最大リソース量により定義される。
【００１９】
なお、本発明の実施の形態では、リソースとしてメモリ、及び、ディスク（リソース量としてメモリ量、及び、ディスク量）を用いる。しかしながら、これに限らず、リソースとしてＣＰＵやネットワーク（リソース量としてＣＰＵ使用率やネットワーク使用率）等、他のリソースを用いてもよい。
【００２０】
各ワーカー３１０は、分析実行部３１１、性能情報記憶部３１２、及び、性能情報送信部３１３を含む。分析実行部３１１は、分析リクエストで指定されたデータに対して所定の分析処理を実行する。所定の分析処理は、例えば、指定されたデータをもとに、所定のアルゴリズムに従って、データの予測や分類を行うための予測モデルや分類モデルを学習するための処理である。性能情報記憶部３１２は、各分析リクエストに対して実行した分析処理の処理性能に係る、性能情報を記憶する。性能情報送信部３１３は、負荷分散装置２００に性能情報を送信する。
【００２１】
なお、本発明の実施の形態では、分析処理の処理性能として、分析処理の処理時間、及び、リソース消費量を用いる。しかしながら、これに限らず、分析処理を実行すべきノード３００やワーカー３１０の選定に用いることができれば、処理性能として、他の指標の値を用いてもよい。
【００２２】
データ記憶装置４００は、分析対象のデータを記憶する。データ記憶装置４００は、１以上のノード３００に共有される。
【００２３】
負荷分散装置２００は、１以上のノード３００を監視するとともに、クライアント装置１００から分析リクエストを受信したときに、分析処理を実行すべきノード３００、及び、当該ノード３００上のワーカー３１０を選定し、分析リクエストを振り分ける。負荷分散装置２００は、本発明の情報処理装置の一実施形態である。
【００２４】
負荷分散装置２００は、性能情報収集部２０１、モデル生成部２０２、リクエスト制御部２０３、性能予測部２０４、ノード選定部２０５、及び、ノード制御部２０６を含む。負荷分散装置２００は、さらに、性能情報記憶部２１１、モデル情報記憶部２１２、選定結果記憶部２１５、及び、ノード情報記憶部２１６を含む。
【００２５】
性能情報収集部２０１は、ノード３００から性能情報を収集し、学習用性能情報２２１を生成する。
【００２６】
性能情報記憶部２１１は、性能情報収集部２０１により生成された学習用性能情報２２１を記憶する。
【００２７】
モデル生成部２０２（以下、単に生成部とも記載）は、性能情報記憶部２１１に記憶されている学習用性能情報２２１をもとに、ノード３００における分析処理の処理性能を予測するためのモデルを生成する。
【００２８】
モデル情報記憶部２１２は、モデル生成部２０２によって生成されたモデルを含むモデル情報２２２を記憶する。
【００２９】
リクエスト制御部２０３は、クライアント装置１００から受信した分析リクエストを、ノード選定部２０５により選定されたノード３００上のワーカー３１０に転送する。
【００３０】
性能予測部２０４（以下、単に予測部とも記載）は、モデル情報２２２に含まれるモデルを用いて、分析リクエストで指定されたデータに対する分析処理の処理性能を予測する。
【００３１】
ノード選定部２０５（以下、単に選定部とも記載）は、性能予測部２０４で予測された処理性能をもとに、分析リクエストに対する分析処理を実行すべきノード３００とワーカー３１０を選定する。
【００３２】
選定結果記憶部２１５は、ノード選定部２０５による、各分析リクエストに対するノード３００の選定結果２２５を記憶する。
【００３３】
ノード制御部２０６は、ノード３００におけるワーカー３１０の追加、削除や、スケールアウトに伴うノード３００の起動や停止を制御する。
【００３４】
ノード情報記憶部２１６は、ノード３００の状態や最大リソース量を示す、ノード情報２２６を記憶する。
【００３５】
なお、負荷分散装置２００は、ＣＰＵ（Central Processing Unit）とプログラムを記憶した記憶媒体を含み、プログラムにもとづく制御によって動作するコンピュータであってもよい。
【００３６】
図３は、本発明の実施の形態における、コンピュータにより実現された負荷分散装置２００の構成を示すブロック図である。
【００３７】
図３を参照すると、負荷分散装置２００は、ＣＰＵ２５１、ハードディスクやメモリ等の記憶デバイス２５２（記憶媒体）、キーボード、ディスプレイ等の入出力デバイス２５３、及び、他の装置等と通信を行う通信デバイス２５４を含む。ＣＰＵ２５１は、性能情報収集部２０１、モデル生成部２０２、リクエスト制御部２０３、性能予測部２０４、ノード選定部２０５、及び、ノード制御部２０６を実現するためのプログラムを実行する。記憶デバイス２５２は、性能情報記憶部２１１、モデル情報記憶部２１２、選定結果記憶部２１５、及び、ノード情報記憶部２１６のデータを記憶する。通信デバイス２５４は、クライアント装置１００から分析リクエストを受信し、ノード３００に分析リクエストを送信する。また、通信デバイス２５４は、ノード３００から性能情報を受信する。入出力デバイス２５３は、選定結果２２５をシステム運用者等に出力する。また、入出力デバイス２５３が、クライアント装置１００から分析リクエストの入力を受け付けてもよい。
【００３８】
また、負荷分散装置２００の各構成要素は、論理回路で実現されていてもよい。この場合、複数の構成要素が、１つの論理回路で実現されていてもよいし、それぞれ、複数の独立した論理回路で実現されていてもよい。
【００３９】
また、負荷分散装置２００の各構成要素は、有線または無線で接続された複数の物理的な装置に分散的に配置されていてもよい。この場合、負荷分散装置２００は、複数のコンピュータによる分散処理により実現されていてもよい。
【００４０】
次に、本発明の実施の形態の動作について説明する。
【００４１】
＜分析実行処理＞
はじめに、ノード３００における分析実行処理の動作を説明する。
【００４２】
図４は、本発明の実施の形態における、分析実行処理を示すフローチャートである。
【００４３】
ノード３００のワーカー３１０は、負荷分散装置２００から転送された分析リクエストを受信する（ステップＳ１０１）。クライアント装置１００から送信される分析リクエストには、分析対象のデータＩＤ（Identifier）、及び、分析処理の終了要求時刻が含まれる。負荷分散装置２００は、処理ＩＤとともに分析リクエストを転送する。
【００４４】
ワーカー３１０の分析実行部３１１は、データ記憶装置４００から、分析リクエストで指定されたデータを取得する。そして、分析実行部３１１は、取得したデータに対して、所定の分析処理を実行する（ステップＳ１０２）。
【００４５】
分析実行部３１１は、所定の計測間隔で、実行中の分析処理によるリソース消費量（メモリ消費量、ディスク消費量）の計測値を、性能情報として、性能情報記憶部３１２に保存する（ステップＳ１０３）。ここで、計測値は、処理ＩＤと関連付けて保存される。
【００４６】
図８は、本発明の実施の形態における、性能情報の例を示す図である。例えば、分析実行部３１１は、図８のような性能情報を保存する。
【００４７】
分析実行部３１１は、分析処理が終了すると、処理結果を、分析リクエストに対する応答として、負荷分散装置２００へ送信する（ステップＳ１０４）。
【００４８】
以降、分析リクエストを受信するたびに、ステップＳ１０１からの処理が繰り返される。
【００４９】
性能情報送信部３１３は、性能情報記憶部３１２に記憶された性能情報を、負荷分散装置２００からの要求に応じて、負荷分散装置２００に送信する。
【００５０】
＜モデル生成処理＞
次に、負荷分散装置２００におけるモデル生成処理を説明する。
【００５１】
図５は、本発明の実施の形態における、モデル生成処理を示すフローチャートである。
【００５２】
負荷分散装置２００の性能情報収集部２０１は、所定のモデル生成間隔で、各ノード３００の各ワーカー３１０から性能情報を収集する（ステップＳ２０１）。
【００５３】
性能情報収集部２０１は、収集した性能情報を解析して、学習用性能情報２２１を生成し、性能情報記憶部２１１に保存する（ステップＳ２０２）。ここで、性能情報収集部２０１は、例えば、リソース消費量（メモリ消費量、ディスク消費量）の増減をもとに、性能情報を、各分析処理に対応する区間に分割し、その区間の長さ（処理時間）、及び、その区間におけるリソース消費量のピーク値を取得する。そして、性能情報収集部２０１は、処理ＩＤをもとに、後述するリクエスト制御部２０３により取得されるデータの種別、サンプル数、項目数と、取得した処理時間、リソース消費量のピーク値とを関連付けることにより、学習用性能情報２２１を生成する。
【００５４】
図９は、本発明の実施の形態における、学習用性能情報２２１の例を示す図である。例えば、性能情報収集部２０１は、図８の性能情報をもとに、図９のような学習用性能情報２２１を生成する。
【００５５】
モデル生成部２０２は、性能情報記憶部２１１に記憶されている学習用性能情報２２１をもとに、モデルを生成する（ステップＳ２０３）。モデル生成部２０２は、生成したモデルを含むモデル情報２２２を、モデル情報記憶部２１２に保存する。ここで、モデル生成部２０２は、モデルとして、データの種別ごとに、データの属性（ｐｒｏｐｅｒｔｙ）と処理時間やリソース消費量（メモリ消費量、ディスク消費量）との間の関係（ｒｅｌａｔｉｏｎｓｈｉｐ）を表す関係式（相関関数）を生成する。本発明の実施の形態では、データは、１以上の項目（ｉｔｅｍ）の値の組（サンプル）のサンプル数分の集合により構成され、データの属性として、例えば、データのサイズ（サンプル数と項目数とを乗じた値）を用いる。なお、データの属性として、例えば、データの密度（単位量当たりのサンプル数）を用いてもよいし、データの特徴量（分散、平均値、その他統計的に得られる値）を用いてもよい。また、データの属性として、これらの組み合わせから得られる値を用いてもよい。相関関数は、例えば、回帰分析により算出される。これらの相関関数により、データの属性から、当該データに対する処理性能（処理時間、リソース消費量）を予測できる。
【００５６】
図１０は、本発明の実施の形態における、モデル情報２２２の例を示す図である。図１０の例では、データ種別「Ｄ１」、「Ｄ２」、…に対して、それぞれ、モデルＩＤ「Ｍ１」、「Ｍ２」、…のモデルが生成されている。各モデルは、データの属性と処理時間の相関関数（処理時間算出式）、データの属性とメモリ消費量の相関関数（メモリ消費量算出式）、及び、データの属性とディスク消費量の相関関数（ディスク消費量算出式）を含む。各式において、変数ｘは、データの属性（サンプル数と項目数とを乗じた値）を示す。
【００５７】
例えば、モデル生成部２０２は、図９の学習用性能情報２２１をもとに、図１０のようなモデルを生成する。
【００５８】
なお、モデル生成部２０２は、データの属性から当該データに対する分析処理の処理性能を予測できれば、モデルとして、相関関数以外のモデルを生成してもよい。
【００５９】
＜ノード選定処理＞
次に、負荷分散装置２００における、ノード選定処理を説明する。
【００６０】
図１１は、本発明の実施の形態における、ノード情報２２６の例を示す図である。図１１の例では、ノード情報２２６は、ノード状態（起動中／停止中）、最大リソース量（最大メモリ量、最大ディスク量）、最大ワーカー数、及び、稼働中ワーカー数を含む。ここでは、図１１のような最大メモリ量、最大ディスク量、及び、最大ワーカー数が、予め、システム運用者等によりノード情報２２６に設定され、ノード情報記憶部２１６に記憶されていると仮定する。
【００６１】
また、初期状態では、ノードＩＤ「Ｎ１」のノード３００（以下、ノード３００「Ｎ１」と記載）のみが起動し、当該ノード３００「Ｎ１」上でワーカーＩＤ「Ｗ１」のワーカー３１０（以下、ワーカー３１０「Ｗ１」と記載）が稼働していると仮定する。
【００６２】
また、モデル情報記憶部２１２には、モデル生成部２０２により生成された、図１０のモデル情報２２２のモデルが記憶されていると仮定する。
【００６３】
図６は、本発明の実施の形態における、ノード選定処理を示すフローチャートである。
【００６４】
リクエスト制御部２０３は、クライアント装置１００から、データＩＤ、及び、終了要求時刻を含む、分析リクエスト（選定対象リクエスト）を受信する（ステップＳ３０１）。終了要求時刻は、その時刻以前に分析処理が終了すべきことを示す。リクエスト制御部２０３は、選定対象リクエストのデータＩＤで指定されたデータをデータ記憶装置４００から取得し、当該データから、当該データの種別、サンプル数、項目数を取得する。なお、分析リクエストがデータの種別、サンプル数、項目数を含む場合、リクエスト制御部２０３は、これらの情報を、分析リクエストから取得してもよい。
【００６５】
リクエスト制御部２０３は、選定対象リクエストに対する分析処理（選定対象処理）に、処理ＩＤを付与する（ステップＳ３０２）。
【００６６】
性能予測部２０４は、モデル情報記憶部２１２に記憶されているモデルを用いて、選定対象処理の処理性能（処理時間、リソース消費量）を予測する（ステップＳ３０３）。
【００６７】
ノード選定部２０５は、処理性能の予測結果（予測処理時間、予測リソース消費量）と選定結果記憶部２１５に記憶されている選定結果２２５とをもとに、選定対象処理を実行すべきノード３００、ワーカー３１０、開始予定時刻を、以下のように決定する。
【００６８】
ノード選定部２０５は、起動中のノード３００で稼働中のいずれかのワーカー３１０において、選定対象処理を実行可能かどうか判定する（ステップＳ３０４）。ここで、ノード選定部２０５は、稼働中のワーカー３１０が利用可能な時間帯（分析処理の実行予定のない時間帯）において、その時刻を開始時刻とした場合に、予測終了時刻（開始時刻＋予測処理時間）が終了要求時刻以前となる時刻（開始候補時刻）を抽出する。そして、ノード選定部２０５は、選定対象処理の予測リソース消費量が、抽出された開始候補時刻から予測終了時刻までの間のノード３００の予測利用可能リソース量以下であれば、当該開始候補時刻から選定対象処理を実行可能と判定する。各時刻のノード３００の予測利用可能リソース量は、ノード３００の最大リソース量から、選定結果２２５において、当該時刻において実行が予定されている分析処理の予測リソース消費量の合計値を減じることにより算出できる。
【００６９】
ステップＳ３０４で実行可能な場合（ステップＳ３０４／Ｙ）、ノード選定部２０５は、以下の処理を行う。すなわち、ノード選定部２０５は、実行可能と判定されたノード３００、ワーカー３１０、開始候補時刻を、選定対象処理を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する（ステップＳ３０５）。実行可能と判定された開始候補時刻が複数ある場合、ノード選定部２０５は、例えば、最も早い開始候補時刻を開始予定時刻に決定する。
【００７０】
図１２は、本発明の実施の形態における、処理性能の予測結果を示す図である。また、図１３、図１４、図１５、図１６は、本発明の実施の形態における、ノード３００、ワーカー３１０の選定の例を示す図である。
【００７１】
例えば、初期状態の時刻「０：００」にデータＩＤ「ｄ１０１」を指定した分析リクエスト（処理ＩＤ「Ｐ１０１」）を受信したと仮定する。性能予測部２０４は、モデルＩＤ「Ｍ１」のモデルを用いて、図１２のように、分析処理「Ｐ１０１」の予測処理性能を算出する。
【００７２】
この場合、図１３において、算出した予測処理性能（予測処理時間「３６０秒」、予測メモリ消費量「１４８６ＭＢ」）の分析処理は、起動中のノード３００「Ｎ１」上の稼働中のワーカー３１０「Ｗ１」で、時刻「０：００」から実行可能である。したがって、ノード選定部２０５は、図１３に示すように、ノード３００「Ｎ１」、ワーカー３１０「Ｗ１」、時刻「０：００」を、分析処理「Ｐ１０１」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【００７３】
また、時刻「０：０１」にデータＩＤ「ｄ１０２」を指定した分析リクエスト（処理ＩＤ「Ｐ１０２」）を受信したと仮定する。性能予測部２０４は、モデルＩＤ「Ｍ２」のモデルを用いて、図１２のように、分析処理「Ｐ１０２」の予測処理性能を算出する。
【００７４】
この場合、図１３において、算出した予測処理性能（予測処理時間「１２０秒」、予測メモリ消費量「２２９ＭＢ」）の分析処理は、ノード３００「Ｎ１」上で稼働中のワーカー３１０「Ｗ１」で、時刻「０：０６」から実行可能である。したがって、ノード選定部２０５は、図１４に示すように、ノード３００「Ｎ１」、ワーカー３１０「Ｗ１」、時刻「０：０６」を、分析処理「Ｐ１０２」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【００７５】
ステップＳ３０４で実行可能でない場合（ステップＳ３０４／Ｎ）、ノード選定部２０５は、起動中のノード３００の内、稼働中のワーカー３１０の数が最大ワーカー数未満のノード３００があるかどうかを判定する（ステップＳ３０６）。
【００７６】
ステップＳ３０６でノード３００がある場合（ステップＳ３０６／Ｙ）、ノード選定部２０５は、以下の処理を行う。すなわち、ノード選定部２０５は、稼働中のワーカー３１０の数が最大ワーカー数以下のノード３００において、ワーカー３１０を追加することで、選定対象処理を実行可能かどうか判定する（ステップＳ３０７）。ここで、ノード選定部２０５は、現在時刻以降に、その時刻を開始時刻とした場合に、予測終了時刻（開始時刻＋予測処理時間）が終了要求時刻以前となる時刻（開始候補時刻）を抽出する。そして、ノード選定部２０５は、選定対象処理の予測リソース消費量が、抽出された開始候補時刻から予測終了時刻までの間のノード３００の予測利用可能リソース量以下であれば、当該開始候補時刻から選定対象処理を実行可能と判定する。
【００７７】
ステップＳ３０７で実行可能な場合（ステップＳ３０７／Ｙ）、ノード選定部２０５は、ノード制御部２０６を介して、実行可能と判定されたノード３００に新たなワーカー３１０を追加して稼働させる（ステップＳ３０８）。ノード制御部２０６は、ノード情報２２６の稼働中ワーカー数を更新する。ノード選定部２０５は、実行可能と判定されたノード３００、追加したワーカー３１０、実行可能と判定された開始候補時刻を、選定対象処理を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する（ステップＳ３０９）。実行可能と判定された開始候補時刻が複数ある場合、ノード選定部２０５は、例えば、最も早い開始候補時刻を開始予定時刻に決定する。
【００７８】
例えば、時刻「０：０２」にデータＩＤ「ｄ１０３」を指定した分析リクエスト（処理ＩＤ「Ｐ１０３」）を受信したと仮定する。性能予測部２０４は、モデルＩＤ「Ｍ２」のモデルを用いて、図１２のように、分析処理「Ｐ１０３」の予測処理性能を算出する。
【００７９】
この場合、図１４において、算出した予測処理性能（予測処理時間「１８０秒」、予測メモリ消費量「３１９ＭＢ」）の分析処理は、ノード３００「Ｎ１」上で稼働中のワーカー３１０「Ｗ１」では実行できない。しかしながら、ノード３００「Ｎ１」で稼働中のワーカー３１０の数は最大ワーカー数「３」未満であり、当該分析処理は、ノード３００「Ｎ１」にワーカー３１０を追加することで、時刻「０：０２」から実行可能である。ノード選定部２０５は、図１５に示すように、ノード３００「Ｎ１」にワーカー３１０「Ｗ２」を追加する。そして、ノード選定部２０５は、ノード３００「Ｎ１」、ワーカー３１０「Ｗ２」、時刻「０：０２」を、分析処理「Ｐ１０３」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【００８０】
さらに、時刻「０：０３」、「０：０４」、「０：０５」にデータＩＤ「ｄ１０４」、「ｄ１０５」、「ｄ１０６」を指定した分析リクエスト（処理ＩＤ「Ｐ１０４」、「Ｐ１０５」、「Ｐ１０６」）を受信したと仮定する。この場合、図１５に示すように、ノード選定部２０５は、ノード３００「Ｎ１」、ワーカー３１０「Ｗ１」、時刻「０：０８」を、分析処理「Ｐ１０４」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。また、ノード選定部２０５は、ノード３００「Ｎ１」、ワーカー３１０「Ｗ２」、時刻「０：０６」を、分析処理「Ｐ１０５」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。さらに、ノード選定部２０５は、ノード３００「Ｎ１」にワーカー３１０「Ｗ３」を追加し、ノード３００「Ｎ１」、ワーカー３１０「Ｗ３」、時刻「０：０５」を、分析処理「Ｐ１０６」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【００８１】
ステップＳ３０６でノード３００がない場合（ステップＳ３０６／Ｎ））、または、ステップＳ３０７で実行可能でない場合（ステップＳ３０７／Ｎ）、ノード選定部２０５は、以下の処理を行う。すなわち、ノード選定部２０５は、ノード制御部２０６を介して、新たなノード３００を起動（スケールアウト）し、当該新たなノード３００上でワーカー３１０を稼働させる（ステップＳ３１０）。ノード制御部２０６は、ノード情報２２６のノード状態、稼働中ワーカー数を更新する。ノード選定部２０５は、当該起動したノード３００、当該稼働させたワーカー３１０、現在時刻を、選定対象処理を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する（ステップＳ３１１）。
【００８２】
例えば、時刻「０：０６」にデータＩＤ「ｄ１０７」を指定した分析リクエスト（処理ＩＤ「Ｐ１０７」）を受信したと仮定する。性能予測部２０４は、モデルＩＤ「Ｍ１」のモデルを用いて、図１２のように、分析処理「Ｐ１０７」の予測処理性能を算出する。
【００８３】
この場合、図１５において、算出した予測処理性能（予測処理時間「２４０秒」、予測メモリ消費量「１００６ＭＢ」）の分析処理は、ノード３００「Ｎ１」上で稼働中のワーカー３１０では実行できない。また、ノード３００「Ｎ１」で稼働中のワーカー３１０の数は最大ワーカー数「３」に達している。したがって、ノード選定部２０５は、図１６に示すように、ノード３００「Ｎ２」を起動し、当該ノード３００「Ｎ２」上でワーカー３１０「Ｗ１」を稼働させる。そして、ノード選定部２０５は、ノード３００「Ｎ２」、ワーカー３１０「Ｗ１」、時刻「０：０６」を、分析処理「Ｐ１０７」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【００８４】
ノード選定部２０５は、ステップＳ３０５や、Ｓ３０９、Ｓ３１１で決定した、選定対象処理を実行すべきノード３００、ワーカー３１０、開始予定時刻を、処理ＩＤに関連付けて、選定結果２２５に登録する（ステップＳ３１２）。
【００８５】
図１７は、本発明の実施の形態における、選定結果２２５の例を示す図である。図１７の例では、処理ＩＤに関連付けて、当該処理ＩＤの分析処理を実行すべきノード３００のノードＩＤ、ワーカー３１０のワーカーＩＤ、及び、開始予定時刻が関連付けられている。
【００８６】
例えば、ノード選定部２０５は、クライアント装置１００から受信した各分析リクエストに対して決定したノード３００、ワーカー３１０、開始予定時刻を、図１７のように選定結果２２５に登録する。
【００８７】
なお、上述の説明では、リソース消費量としてメモリ消費量のみを示したが、ディスク消費量についても、同様に、予測ディスク消費量の算出、予測利用可能ディスク量との比較が行われる。
【００８８】
また、ノード制御部２０６は、分析処理が終了したことにより、分析処理の実行予定が無くなったワーカー３１０を終了（削除）してもよい。さらに、ノード制御部２０６は、ワーカー３１０を停止したことにより稼働しているワーカー３１０が無くなったノード３００を停止してもよい。
【００８９】
また、ノード選定部２０５は、モデル生成部２０２によるモデルの生成が完了するまでの間は、システム運用者等により予めノード３００や分析処理の仕様をもとに設定されたモデルを用いて、上述のノード選定処理を行ってもよい。
【００９０】
また、ステップＳ３１０のような分析リクエストをトリガとしたスケールアウトに加えて、ノード制御部２０６が、例えば、ＣＰＵ使用率が所定値を超えた場合等、システム運用者等により予め設定された条件にもとづくスケールアウトを実行してもよい。
【００９１】
また、上述の説明では、分析処理の予測リソース消費量は、分析処理の開始から終了まで一定であることを前提として、予測リソース消費量を予測利用可能リソース量と比較した。しかしながら、これに限らず、分析処理が複数のジョブにより構成され、各ジョブの切り替えタイミングと予測リソース消費量を消費するジョブを特定できる場合、当該ジョブが実行される時間帯の予測リソース消費量を予測利用可能リソース量と比較してもよい。これにより、分析処理で予測リソース消費量がピークになるタイミングに合わせて、さらに効率的なノード３００、ワーカー３１０、及び、開始予定時刻の決定が行われる。
【００９２】
また、ノード選定部２０５は、各分析リクエストに対する処理性能の予測結果と、予測処理性能にもとづくノード３００、ワーカー３１０の選定結果とを関連付けて、システム運用者等に表示してもよい。
【００９３】
図１８は、本発明の実施の形態における、表示画面５００の例を示す図である。図１８の例では、表示画面５００は、予測処理性能表示エリア５０１、選定結果表示エリア５０２を含む。予測処理性能表示エリア５０１では、各分析リクエストに対して、処理性能を予測するために使用したモデルのモデルＩＤや、処理性能（処理時間、リソース消費量）の予測結果、選定されたノード３００、ワーカー３１０、及び、開始予定時刻が表示されている。また、選定結果表示エリア５０２には、各分析リクエストに対する分析処理について、選定されたノード３００、ワーカー３１０上での、実行が予定されている時間帯が示されている。
【００９４】
システム運用者等は、図１８のような表示画面５００により、ノード３００、ワーカー３１０の選定結果を容易に把握できる。
【００９５】
＜リクエスト転送／ノード再選定処理＞
次に、負荷分散装置２００における、リクエスト転送／ノード再選定処理を説明する。
【００９６】
図７は、本発明の実施の形態における、リクエスト転送／ノード再選定処理を示すフローチャートである。
【００９７】
リクエスト制御部２０３は、所定の判定間隔で、選定結果２２５を参照し、開始予定時刻が現在時刻以前である分析処理（実行対象処理）があるか判定する（ステップＳ４０１）。
【００９８】
ステップＳ２０１で実行対象処理がある場合、リクエスト制御部２０３は、当該実行対象処理を実行すべきノード３００のワーカー３１０において、当該実行対象処理の前の分析処理が終了しているかを判定する（ステップＳ４０２）。
【００９９】
ステップＳ４０２で前の分析処理が終了している場合（ステップＳ４０２／Ｙ）、リクエスト制御部２０３は、実行対象処理に係る分析リクエストを処理ＩＤとともに当該実行対象処理を実行すべきノード３００のワーカー３１０に転送する（ステップＳ４０３）。ノード３００から当該分析リクエストに対する応答を受信した場合、リクエスト制御部２０３は、当該応答を当該分析リクエストの送信元のクライアント装置１００へ転送する（ステップＳ４０４）。
【０１００】
例えば、リクエスト制御部２０３は、図１７の選定結果２２５をもとに、時刻「０：００」に分析処理「Ｐ１０１」、時刻「０：０２」に分析処理「Ｐ１０３」、時刻「０：０５」に分析処理「Ｐ１０６」に対する分析リクエストを転送する。
【０１０１】
一方、ステップＳ４０２で前の分析処理が終了していない場合（ステップＳ４０２／Ｎ）、リクエスト制御部２０３は、以下の処理を行う。すなわち、リクエスト制御部２０３は、実行対象処理、及び、実行対象処理と同じワーカー３１０が選定されている他の分析処理の内、終了予定時刻が終了要求時刻より後になる分析処理（リカバリ対象処理）があるか判定する（ステップＳ４０５）。終了予定時刻は、開始予定時刻に遅延時間（現在時刻−実行対象処理の開始予定時刻）と予測処理時間とを加えることにより算出される。
【０１０２】
ステップＳ４０５でリカバリ対象処理がある場合（ステップＳ４０５／Ｙ）、ノード選定部２０５は、当該リカバリ対象処理を選定対象処理として、上述のノード選定処理を行い、ノード３００、及び、ワーカー３１０の再選定を行う（ステップＳ４０６）。
【０１０３】
図１９は、本発明の実施の形態における、ノード３００、ワーカー３１０の再選定の例を示す図である。
【０１０４】
例えば、時刻「０：０６」において、分析処理「Ｐ１０２」の前の分析処理「Ｐ１０１」が遅延し、終了していない場合、分析処理「Ｐ１０２」の後の分析処理「Ｐ１０４」の終了予定時刻は終了要求時刻（時刻「０：１０」）より後になる。リクエスト制御部２０３は、分析処理「Ｐ１０４」について再選定を行い、図１９のように、ノード３００「Ｎ１」、ワーカー３１０「Ｗ３」、時刻「０：０７」を、分析処理「Ｐ１０４」を実行すべきノード３００、ワーカー３１０、開始予定時刻に決定する。
【０１０５】
以降、ステップＳ４０１からの処理が繰り返し実行される。
【０１０６】
以上により、本発明の実施の形態の動作が完了する。
【０１０７】
なお、本発明の指示の形態では、ノード３００のワーカー３１０が、入力データに対する分析処理を行う場合（ノード３００上で稼働するプロセスが分析サーバの場合）を例に説明した。しかしながら、これに限らず、入力データの属性に応じて異なる処理性能が得られるのであれば、ワーカー３１０が行う処理は、分析処理以外の他の処理でもよい。例えば、ワーカー３１０が行う処理は、画像データや映像データの解析処理や、所定のバッチ処理、データベースの検索処理でもよい。すなわち、ノード３００上で稼働するプロセスは、画像処理サーバや、バッチサーバ、データベースサーバでもよい。
【０１０８】
次に、本発明の実施の形態の特徴的な構成を説明する。図１は、本発明の実施の形態の特徴的な構成を示すブロック図である。
【０１０９】
図１を参照すると、負荷分散装置２００（情報処理装置）は、性能予測部２０４（予測部）、及び、ノード選定部２０５（選定部）を含む。性能予測部２０４は、第１のデータの属性と当該第１のデータに対して分析処理（所定の処理）をノード３００（処理装置）で実行したときの当該分析処理に係る処理性能との関係を用いて、第２のデータの属性に対する分析処理に係る処理性能を予測する。ノード選定部２０５は、予測された処理性能をもとに、複数のノード３００の内、第２のデータに対する分析処理を実行すべきノード３００を選定する。
【０１１０】
次に、本発明の実施の形態の効果を説明する。
【０１１１】
本発明の実施の形態によれば、様々な大きさや構成を有するデータに対して所定の処理を分散して実行する場合に、リソースの配置を最適化できる。その理由は、ノード選定部２０５が、データの属性と分析処理に係る処理性能との関係を用いて、入力データに対して予測された処理性能をもとに、複数のノード３００の内、当該入力データに対する分析処理を実行すべきノード３００を選定するためである。
【０１１２】
また、本発明の実施の形態によれば、所定の処理を分散して実行する場合に、リソースプランニングに伴うシステム運用者等への負担を低減できる。その理由は、ノード選定部２０５が、新たなデータに対して予測された処理性能をもとに、新たなノード３００を起動（スケールアウト）するかどうかを判定するためである。これにより、システム運用者等は、処理性能の見積もりや、スケールアウトの判定条件を定義する必要はなく、システム運用者等の負担が低減する。
【０１１３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１１４】
１    分析システム
１００    クライアント装置
２００    負荷分散装置
２０１    性能情報収集部
２０２    モデル生成部
２０３    リクエスト制御部
２０４    性能予測部
２０５    ノード選定部
２０６    ノード制御部
２１１    性能情報記憶部
２１２    モデル情報記憶部
２１５    選定結果記憶部
２１６    ノード情報記憶部
２２１    学習用性能情報
２２２    モデル情報
２２５    選定結果
２２６    ノード情報
２５１    ＣＰＵ
２５２    記憶デバイス
２５３    入出力デバイス
２５４    通信デバイス
３００    ノード
３１０    ワーカー
３１１    分析実行部
３１２    性能情報記憶部
３１３    性能情報送信部
４００    データ記憶装置
５００    表示画面
５０１    予測処理性能表示エリア
５０２    選定結果表示エリア
【図１】
0006613763.tif 000002
【図２】
0006613763.tif 000003
【図３】
0006613763.tif 000004
【図４】
0006613763.tif 000005
【図５】
0006613763.tif 000006
【図６】
0006613763.tif 000007
【図７】
0006613763.tif 000008
【図８】
0006613763.tif 000009
【図９】
0006613763.tif 000010
【図１０】
0006613763.tif 000011
【図１１】
0006613763.tif 000012
【図１２】
0006613763.tif 000013
【図１３】
0006613763.tif 000014
【図１４】
0006613763.tif 000015
【図１５】
0006613763.tif 000016
【図１６】
0006613763.tif 000017
【図１７】
0006613763.tif 000018
【図１８】
0006613763.tif 000019
【図１９】
0006613763.tif 000020