(57)【特許請求の範囲】
【請求項１】
データを処理する計算デバイスを搭載するデータ処理ノードを備える分散データベースシステムにおいて、
前記データ処理ノードにおける各前記計算デバイスの計算能力の違いを判定する計算能力判定部と、
各前記計算デバイスの計算能力の違いに基づいてタスクを実行する計算デバイスを複数選択するデバイス選択部と、
前記デバイス選択部によって選択された複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記複数の計算デバイスの計算能力の違いに応じて前記複数の計算デバイス間で配分し、前記複数の計算デバイスを用いて前記タスクを分散して実行させるタスク分配制御部と、
を備え、
前記計算能力判定部は、
前記タスクの処理命令を解釈してタスク負荷を判定するタスク負荷判定部と、
各前記計算デバイスのリソース性能を判定するリソース性能判定部と、
を備え、
前記タスク分配制御部は、
前記複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記タスク負荷及び前記リソース性能に基づくタスク実行性能の平均値に基づいて前記複数の計算デバイス間で配分し、前記複数の計算デバイスを用いて前記タスクを分散して実行させることを特徴とする分散データベースシステム。
【請求項２】
各前記計算デバイスは、
前記タスクを処理するアクセラレータであることを特徴とする請求項１に記載の分散データベースシステム。
【請求項３】
各前記計算デバイスは、
ＣＰＵ、ＦＰＧＡ、ＧＰＵ及びＡＳＩＣのいずれか又はいずれかの組み合わせであることを特徴とする請求項１に記載の分散データベースシステム。
【請求項４】
前記タスク分配制御部は、
複数の前記データ処理ノードに搭載された各前記計算デバイスを用いて前記タスクを分散して実行させることを特徴とする請求項１に記載の分散データベースシステム。
【請求項５】
前記タスク分配制御部は、
１つの前記データ処理ノードに搭載された複数の前記計算デバイスを用いて前記タスクを分散して実行させることを特徴とする請求項１に記載の分散データベースシステム。
【請求項６】
前記タスク分配制御部は、
前記平均値の導出に幾何平均を用いることを特徴とする請求項１に記載の分散データベースシステム。
【請求項７】
データを処理する計算デバイス、及び制御部を搭載するデータ処理ノードを備える分散データベースシステムにおけるリソース管理方法において、
前記制御部が、前記データ処理ノードにおける各前記計算デバイスの計算能力の違いを判定する計算能力判定ステップと、
前記制御部が、各前記計算デバイスの計算能力の違いに基づいてタスクを実行する計算デバイスを複数選択するデバイス選択ステップと、
前記制御部が、前記デバイス選択ステップで選択された複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記複数の計算デバイスの計算能力の違いに応じて前記複数の計算デバイス間で配分し、前記複数の計算デバイスを用いて前記タスクを分散して実行させるタスク分配制御ステップと、
を有し、
前記計算能力判定ステップでは、
前記制御部が、前記タスクの処理命令を解釈してタスク負荷を判定するタスク負荷判定ステップと、
前記制御部が、各前記計算デバイスのリソース性能を判定するリソース性能判定ステップと、
を含み、
前記タスク分配制御ステップでは、
前記制御部が、前記複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記タスク負荷及び前記リソース性能に基づくタスク実行性能の平均値に基づいて前記複数の計算デバイス間で配分し、前記複数の計算デバイスを用いて前記タスクを分散して実行させることを特徴とする分散データベースシステムのリソース管理方法。
【請求項８】
前記タスク分配制御ステップでは、
前記制御部が、複数の前記データ処理ノードに搭載された各前記計算デバイスを用いて前記タスクを分散して実行させることを特徴とする請求項７に記載の分散データベースシステムのリソース管理方法。
【請求項９】
前記タスク分配制御ステップでは、
前記制御部が、１つの前記データ処理ノードに搭載された複数の前記計算デバイスを用いて前記タスクを分散して実行させることを特徴とする請求項７に記載の分散データベースシステムのリソース管理方法。
【請求項１０】
前記タスク分配制御ステップでは、
前記制御部が、前記平均値の導出に幾何平均を用いることを特徴とする請求項７に記載の分散データベースシステムのリソース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースシステム及び分散データベースシステムのリソース管理方法に関し、特に、分散データベースシステムを用いたデータ分析処理におけるリソース管理方法に適用して好適なものである。
【背景技術】
【０００２】
一般的に、様々に視点を変えてビッグデータを解釈するためのインタラクティブな分析においては、多数のデータ処理用サーバを分散配置し、データ処理を並列実行することで高速化を図る分散データベースシステムが適している。このような分散データベースシステムとしては、例えばＡｐａｃｈｅ  Ｈａｄｏｏｐ（登録商標）が用いられる。大量のデータを高速に処理するためには、通常は、計算性能を確保するために多数のデータ処理用サーバ（ノード）が必要となり、この結果システム規模が増大し、導入コストや維持コストが増加する。【０００３】
そこで、高速なデータ処理が可能なＦＰＧＡ（Ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ）、専用ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）等を用いたアクセラレータをノードに搭載することによってノードあたりの性能を向上し、必要ノード数を減らしてシステム規模を抑える技術の適用が考えられる。アクセラレータを適用する際は、分散システム上の全てのノードに同じ性能を持つアクセラレータを搭載し、ノード自体が有するＣＰＵ（Ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）の性能も同じ均質な構成を取り得る場合のみでなく、アクセラレータの種別が様々であったり、搭載するノードが限定されていたり、ＣＰＵ性能がノードによって異なる場合が想定される。このような場合には、システムに不均一性が生じ、各ノードのデータ処理性能がばらつくことがある。【０００４】
非特許文献１には、ノード性能が不均一な分散処理システムにおいて、ノードのＣＰＵ使用率に応じて、ジョブを細分化して分散実行する処理単位であるタスク種別毎に、異なる性能のノード群を割り当てる技術が開示されている。【０００５】
国際公開２０１２／１０５０５６（特許文献１）には、既存システムが利用しているサーバに、追加して並列分散システムを共存させる場合に、並列分散システムの各ノードの処理を調整する技術が開示されている。既存システムで実行される処理を優先する場合には、当該処理の実行状況によって分散システムが使用できるノードの計算リソース及びＩ／Ｏリソースが変化する。この時、ノードの負荷及びリソース使用量を観測し、ノードが保持するデータブロックの処理の進行状況に応じて、ノードの負荷またはリソースに余裕があるノードに、他のノードからデータブロックを転送する。【０００６】
特開２０１４−２１５７６４（特許文献２）には、ノードで実行するタスク１つあたりが処理する最大データ量を、入力データ量に対する各ノードのタスク数とノード数との関係に基づいて決定することにより、ノード毎の処理時間を平準化する方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開２０１２／１０５０５６号
【特許文献２】特開２０１４−２１５７６４号公報
【非特許文献】
【０００８】
【非特許文献１】Ｓ．  Ｆ．  Ｅｌ−Ｚｏｇｈｄｙ  ａｎｄ  Ａｈｍｅｄ  Ｇｈｏｎｅｉｍ，  “Ａ  Ｍｕｌｔｉ−Ｃｌａｓｓ  Ｔａｓｋ  Ｓｃｈｅｄｕｌｉｎｇ  Ｓｔｒａｔｅｇｙ  ｆｏｒ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍｓ，”  ＫＳＩＩ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｔｅｒｎｅｔ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ，  ｖｏｌ．１０，  ｎｏ．１，  ｐｐ．１１７−１３５，  ２０１６．
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した非特許文献１では、複数の異なるタスクをノードに割り振る順番を、例えば全ノードのＣＰＵ使用率が等しくなるように配分しているが、Ｈａｄｏｏｐ（登録商標）処理のように、同一のタスクを複数のノードに分散するシステムには適用されない。【００１０】
特許文献１では、ノードの処理状況に応じて処理の実行中にデータを余裕のあるノードに転送することによりノードの処理時間を平準化しているが、ノードが有する計算リソースに基づくタスク実行性能の偏りを考慮していない。【００１１】
特許文献２では、分散システムで処理する全タスク数に合わせて均等に入力データを分割して各ノードに配置するが、タスクあたりのデータ量が均等になるため、各ノードの計算性能のばらつきは考慮されていない。【００１２】
本発明は以上の点を考慮してなされたもので、システム全体としてデータ処理時間を短縮できる分散データベースシステム及び分散データベースシステムのリソース管理方法を提案しようとするものである。
【課題を解決するための手段】
【００１３】
かかる課題を解決するため、本発明においては、データを処理する１つ以上の計算デバイスを搭載する１つ以上のデータ処理ノードを備える分散データベースシステムにおいて、前記データ処理ノードにおける各前記計算デバイスの計算能力の違いを判定する計算能力判定部と、各前記計算デバイスの計算能力の違いに基づいて最適な計算デバイスを複数選択するデバイス選択部と、前記最適な複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記最適な複数の計算デバイスの計算能力の違いに応じて前記最適な複数の計算デバイス間で配分し、前記最適な複数の計算デバイスを用いて前記タスクを分散して実行させるタスク分配制御部と、を備えることを特徴とする。【００１４】
また、本発明においては、データを処理する１つ以上の計算デバイス、及び制御部を搭載する１つ以上のデータ処理ノードを備える分散データベースシステムにおけるリソース管理方法において、前記制御部が、前記データ処理ノードにおける各前記計算デバイスの計算能力の違いを判定する計算能力判定ステップと、前記制御部が、各前記計算デバイスの計算能力の違いに基づいて最適な計算デバイスを複数選択するデバイス選択ステップと、前記制御部が、前記最適な複数の計算デバイスを用いて前記タスクを実行する時に、前記タスクの処理命令によって処理される前記データのデータ量を、前記最適な複数の計算デバイスの計算能力の違いに応じて前記最適な複数の計算デバイス間で配分し、前記最適な複数の計算デバイスを用いて前記タスクを分散して実行させるタスク分配制御ステップと、を有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、システム全体としてデータ処理時間を短縮することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態による分散データベースシステムの構成例を表す図である。
【図２】データソースを２０台のデータ処理ノードで処理する場合の構成の一例を示した図である。
【図３】データソースを１０台のデータ処理ノードで処理する場合の構成の一例を示した図である。
【図４】データソースを１０台のデータ処理ノードで処理する場合の構成の別の一例を示した図である。
【図５】データソースを２台のアクセラレータ搭載データ処理ノードで処理する場合の構成の一例を示した図である。
【図６】データソースを２台のアクセラレータ搭載データ処理ノードで処理する場合の構成の別の一例を示した図である。
【図７】データソースを９台のアクセラレータ非搭載データ処理ノードと、１台のアクセラレータ搭載データ処理ノードで処理する場合の構成の一例を示した図である。
【図８】データソースを９台のアクセラレータ非搭載データ処理ノードと、１台のアクセラレータ搭載データ処理ノードで処理する場合の、本実施の形態によるリソース管理方法を用いた構成の一例を示した図である。
【図９】データソースを９台のアクセラレータ非搭載データ処理ノードと、１台のアクセラレータ搭載データ処理ノードで処理する場合の、本実施の形態によるリソース管理方法を用いた構成の別の一例を示した図である。
【図１０】データ処理ノードのデータ処理性能に応じて、データ格納ノードに配置するデータ量を調整する機能を詳細に示した図である。
【図１１】データ処理ノードに配置されたタスクの命令を解釈し、タスクが実行するデータブロックの数量を決定して、データ処理ノードがアクセスするデータ格納ノードに配置する流れを示す図である。
【図１２】本実施の形態により、計算デバイスのタスク実行性能に基づいてデータ配分を調整してタスクを実行する方法を示すフローチャートである。
【図１３】タスク負荷判定部において判定した、各タスクの処理負荷に基づいた実行時間の例である。
【図１４】データ処理ノードに搭載された計算デバイスの構成例である。
【図１５】タスク実行性能計算部において、計算デバイス毎のタスク実行時間を計算した結果である。
【図１６】各ノードでタスク毎に最適な計算デバイスを選択した場合のタスク実行時間を示した例である。
【図１７】図１６の実行時間の比較を、データ処理性能（ＴＢ/s）で表現したものである。
【図１８】本実施の形態によるリソース管理方法を用いてノード毎の実行時間を平準化した場合のデータ配分量を示す図である。
【図１９】本実施の形態によるリソース管理方法を用いてデータ処理ノードの計算性能に応じてデータ配分を調整した場合の効果を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面について、本発明の一実施の形態について詳述する。
【００１８】
（１）本実施の形態によるシステム構成
（１−１）全体構成
図１は、本実施の形態による分散データベースシステムの構成例を示すブロック図である。分散データベースシステムは、クライアントノード１０１、ジョブ管理ノード１０３、リソース管理ノード１０４、データ管理ノード１０５、データ処理ノード１１１〜１１４、及びデータ格納ノード１１５〜１１８を備える。
【００１９】
これらのノード１０１などは、図示は省略するが、イーサネット（登録商標）等のネットワークを介して接続されており、このネットワークを通じて制御信号及びデータの送受信を実施する構成となっている。
【００２０】
なお、このネットワークは、ローカルなドメイン内で閉じたネットワーク（ＬＡＮ：Ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）であっても良い。各ノードの一部または全部が、それぞれ異なるデータセンタ等のドメインに配置され、各ノード間がグローバルなネットワーク（ＷＡＮ：Ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）で接続された構成であっても良い。データ処理ノード１１１〜１１４とデータ格納ノード１１５〜１１８とは、いわゆるＳＡＮ（Ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を介して接続された構成であっても良い。
【００２１】
（１−２）クライアントノード
クライアントノード１０１は、少なくともプロセッサ、メモリ及びネットワークインタフェースを備える計算機である。クライアントノード１０１は、さらにストレージ装置、及び、計算機を操作するためのユーザインタフェースを備えても良い。
【００２２】
クライアントノード１０１では、アプリケーションプログラム（図示の「アプリケーション」に相当）１０２は、図示しないネットワーク経由で伝送されるか、図示しないストレージ装置に格納されているか、ユーザインタフェースを介してインストールされている。このアプリケーションプログラム１０２は、図示しないメモリにロードされ、図示しないプロセッサによって実行される。
【００２３】
アプリケーションプログラム１０２には、そのソースコードに、分散データベースシステムを用いてデータ処理を実行する命令が含まれている。アプリケーションプログラム１０２を実行することによって、データ処理を実行する命令が呼び出され、該命令に基づいて分散データベースシステムにおいてデータ処理が実行される。
【００２４】
（１−３）ジョブ管理ノード
ジョブ管理ノード１０３は、少なくともプロセッサ、メモリ及びネットワークインタフェースを備える計算機である。さらにジョブ管理ノード１０３は、図示しないストレージ装置、及び、計算機を操作するためのユーザインタフェースを備えても良い。
【００２５】
ジョブ管理ノード１０３は、クライアントノード１０１上のアプリケーションプログラム１０２が発行したデータ処理命令を受信し、分散データベースシステム上でデータ処理を実行するためのジョブ１０７〜１１０を構成する。
【００２６】
さらにジョブ管理ノード１０３は、ジョブにおけるデータ処理を、複数のデータ処理ノードに分散配置して実行する単位であるタスクを生成する。例えば、Ｈａｄｏｏｐ（登録商標）分散処理システムにおいては、Ｍａｐ処理及びＲｅｄｕｃｅ処理を組み合わせてデータ処理を実行する単位が「ジョブ」に相当する。これらＭａｐ処理及びＲｅｄｕｃｅ処理はそれぞれ「タスク」に相当する。
【００２７】
タスクは、複数のデータ処理ノード１１１〜１１４において分散実行される。ジョブ管理ノード１０３は、生成したタスクを実行するデータ処理ノード１１１〜１１４の使用を、リソース管理ノード１０４に対して要求する。
【００２８】
（１−４）リソース管理ノード
リソース管理ノード１０４は、少なくともプロセッサ、メモリ及びネットワークインタフェースを備える計算機である。さらにリソース管理ノード１０４は、図示しないストレージ装置、及び、計算機を操作するためのユーザインタフェースを備えても良い。
【００２９】
リソース管理ノード１０４は、ジョブ管理ノード１０３からタスクを実行するデータ処理ノード１１１〜１１４の使用要求を受信し、リソース管理情報に基づいて使用可能なデータ処理ノード１１１〜１１４を選択し、タスクを、これらデータ処理ノード１１１〜１１４に配置して実行させる。さらにリソース管理ノード１０４は、ジョブ管理ノードが構成した１つ以上のジョブの実行順や実行割合等を優先度や諸条件に基づいてスケジューリングして実行する。
【００３０】
（１−５）データ管理ノード
データ管理ノード１０５は、少なくともプロセッサ、メモリ及びネットワークインタフェースを備える計算機である。さらにデータ管理ノード１０５は、図示しないストレージ装置、及び、計算機を操作するためのユーザインタフェースを備えても良い。
【００３１】
データ管理ノード１０５は、分散データベースシステムによって処理されるデータをデータソース１０６から取得し、指定された分割サイズのブロックに分割してデータ格納ノード１１５〜１１８に格納する。この時、データ管理ノード１０５は、データの可用性、信頼性を担保するために、ブロックごとに１つ以上の複製を作成し、例えば特定のノードが停止した時にデータが失われないように当該複製を、複数のノードに分散して配置しても良い。
【００３２】
なお、本実施の形態による分散データベースシステムにおいては、ジョブ管理ノード１０３、リソース管理ノード１０４及びデータ管理ノード１０５の全て又はこれらのうちのいずれか２つのノードが、物理的に共通の計算機上に構成されているようにすることも可能である。さらにはクライアントノード１０１は、これらのうちのいずれかのノード、又はこれら全てのノードと物理的に共通の計算機上に構成されるようにことも可能である。
【００３３】
（１−６）データ処理ノード
データ処理ノード１１１〜１１４は、リソース管理ノード１０４によって設定されたタスクを、特定の計算デバイスやメモリ等を用いて実行する。この時、データ処理ノード１１１〜１１４は、タスク毎に、予め設定された論理的なデータ単位であるパーティション１２３〜１３４に接続してデータ処理を行う。
【００３４】
（１−７）データ格納ノード
データ格納ノード１１５〜１１８は、データ管理ノード１０５の指定によって配置されたデータブロックを、各データ格納ノード１１５〜１１８が備えるハードディスク又はフラッシュメモリデバイス等であるストレージ装置１１９〜１２２に格納する。なお、本実施の形態では、ストレージ装置１１９〜１２２のようなストレージ装置の代わりに、いわゆるＤＲＡＭのようなメインメモリにデータブロックを格納するようにしても良い。
【００３５】
各データ格納ノード１１５〜１１８に格納されたデータブロックは、データ処理ノード１１１〜１１４において設定されたパーティション１２３〜１３４それぞれに一つ以上割り当てられる。なお、各データ処理ノードにおいて設定されたパーティションに割り当てるデータブロックは、当該データ処理ノードとペアになっているデータ格納ノードに搭載されているものに限定されるものではなく、他のデータ格納ノードに搭載されているデータブロックに割り当て、ネットワークを介してデータブロックを参照しても良い。
【００３６】
データ処理ノード１１１〜１１４のタスクは、論理データであるパーティション１２３〜１３４を介して、割り当てられたデータブロックにアクセスする。
【００３７】
なお、図１に示すシステム構成は、本実施の形態による分散データベースシステム構成の一例であるが、他の構成例としては、例えば、データ処理ノードとデータ格納ノードを共通にしても良い。データ処理ノード上のタスクと、タスクが処理するデータとが、同じ物理ノード上に存在すれば、ノード間のネットワーク帯域性能によってデータ転送速度が制限されることが無いため、タスクがデータにアクセスする速度が高速になる場合がある。
【００３８】
また、各データ処理ノードでは、ノードのリソースを管理するノード管理プログラム（図示省略）が実行されるが、これらのノード管理プログラムを実行するノードを、データ処理ノードとは別に用意し、ネットワークを介して接続して、データ処理ノードを管理しても良い。この場合、ノード管理プログラムの負荷によってデータ処理ノードにおけるジョブ実行性能が影響を受けることが無くなる。
【００３９】
次に、分散データベースシステムにおいてタスクを並列実行する場合に、処理にかかる時間を、いくつかの条件毎に説明する。
【００４０】
（１−８）比較例としてのデータ処理ノードの構成例
図２は、図１に示したデータ処理ノード構成の一例を示した図である。図示の構成では、データ処理ノード２０１として、４コアのＣＰＵを２つ（２０２、２０３）搭載した計算機を例示している。
【００４１】
データ処理ノード２０１におけるタスクの実行は、ＣＰＵコア数だけ多重化できるものとし、ノードあたりのＣＰＵコア数８に合わせて８つのタスクを同時に実行する場合を示している。
【００４２】
この例では、８つのタスク２０５の各々に対して１つずつパーティション２０６が対応付けられている。各パーティションに対して１つずつデータブロックを割り当てるものとし、データ格納ノード２０４に格納されている８つのデータブロック２０８のそれぞれを１対１でパーティションに割り当てる。
【００４３】
本実施の形態による分散データベースシステムで処理するデータソース２０７は、予め設定されたブロックサイズに基づいて、１６０個のブロックに分割されるものとする。
【００４４】
１６０個のデータブロックをすべてのデータ処理ノードに均等に分配する場合、すべてのデータブロックを処理するためには、２０台のデータ処理ノード、及びデータ格納ノードのペアが必要となる。
【００４５】
ただし、図示の例では、データブロックの複製は省略している。１つのタスクが、１つのＣＰＵコアを用いて、１つのパーティションを介して１つのデータブロックのデータを処理するのにかかる時間を「１単位時間」と定義すると、８コアのデータ処理ノード２０台で１６０個のデータブロックを処理するのに掛かる時間は、グラフ２０９に示す通り、すべてのデータ処理ノードで等しく１単位時間となる。なお、本例のＣＰＵやノード数、タスク数、パーティション数等の数値は、説明のために設定した一例であり、本発明の実施に対し、これらの数値に必然性を求めるものでないことは言うまでもない。なお、本実施の形態では、タスクの実行制御等、データ処理以外にかかるオーバーヘッド時間は、データ処理時間に比べ十分小さいものとし、図示を省略している。
【００４６】
図３は、図２と同様のデータソースのデータを、同じ条件のデータ処理ノード１０台で処理する場合を示している。図３のデータ処理ノード３０５は、４コアのＣＰＵ２つ（３０２、３０３）を持ち、同時に８多重でタスクを処理可能である。
【００４７】
図示の例では、図２と同様に８つのタスク３０５に１つずつパーティション３０６が対応付けられている。データ処理ノード３０５の台数を、図２の例の半分の１０台に設定したため、１６０個のデータブロックは、各データ格納ノードに１６ブロックずつ配置される。
【００４８】
８つのタスクで１６個のブロックを処理するために、各々のパーティションに２つずつデータブロックを割り当てるとすると、１つのタスクが２つのデータブロックを処理するのにかかる時間は、グラフ３０９に示すように、２単位時間となり、データ処理ノードを２０台使用する場合の２倍の時間が必要になる。
【００４９】
図４は、図３と同様に１６０個のデータブロック４０４を１０台のデータ処理ノード４０１で処理する場合の別の構成例である。図４では、８つのコアに対し、１６個のタスク４０５を実行する。
【００５０】
パーティション４０６は、タスクをパーティションと１対１で対応づけ、各パーティションに１つのデータブロックを割り当てる場合、ＣＰＵコアあたり２つのタスクを実行する必要があるため、データ処理時間は、図３と同様に２単位時間となる。
【００５１】
図５は、データ処理ノード５０１の計算デバイスとして、ＣＰＵ５０２、５０３の他にも、ＦＰＧＡ及びＧＰＵ等のようなデータ処理を高速実行するためのアクセラレータ５０４を設けた場合の構成例である。
【００５２】
例えば、搭載しているアクセラレータ５０４が、ＣＰＵ１コアに対し、８８倍の性能を有すると仮定すると、アクセラレータ１台で、１単位時間の間に８８個のデータブロックを処理することができる。この場合、２台のアクセラレータ搭載データ処理ノード５０１、及びデータ格納ノード５０５を用意し、各々にアクセラレータで実行するタスク５０６を１つ、対応するパーティション５０７に８０個のデータブロック５０９を割り当てれば、１６０ブロック分のデータソース５０８を処理するのに必要な時間は、１０／１１単位時間となり（データブロック５０９）、データ処理ノード数を削減してシステム規模を抑えることが可能になる。
【００５３】
この時、ＣＰＵをタスク実行に使用する必要がないため、コア数が少ない廉価なＣＰＵを搭載してコストを低減するか、ＣＰＵに別の処理を行わせることにより、システム全体の負荷を分散させることが可能になる。なお、８コアＣＰＵのみを搭載したデータ処理ノード２０台分と同じ１単位時間でデータ処理を完了するには、８０倍のアクセラレータ性能があればよいことは明らかである。
【００５４】
図６は、図５の例と同様にＣＰＵ１コアの８８倍のデータ処理性能を有するアクセラレータ６０５を搭載したデータ処理ノード６０１を用いてタスクを実行する別の構成例である。図６では、ＣＰＵ６０２、６０３の８つのコアそれぞれで１つずつタスク６０６を実行し、平行してアクセラレータ６０４で１つのタスク６０８を実行する。各タスクには１つずつパーティション６０７、６０９を対応づける。
【００５５】
８つのパーティション６０７には、それぞれデータ格納ノード６０５の１つずつのデータブロック６１１を割り当て、パーティション６０９には、７２個のデータブロック６１２を対応づける。この構成のデータ処理ノード及びデータ格納ノードのペアを２つ用意すれば、１６０ブロック分のデータソース６１０は、１単位時間で処理することができる。なお、この時、アクセラレータは、ＣＰＵコアの７２倍の性能を有すれば十分である。
【００５６】
図７は、図２〜図６と同様に１６０データブロック分のデータソース７０７を処理する場合で、アクセラレータを搭載したデータ処理ノード７０９が１台のみとしたときの構成例である。
【００５７】
これまでの例と同様に、データ格納ノードあたりのデータブロック数を均等配置する場合、図３と同様に１０台のデータ処理ノードでタスクを実行する際には、１データ格納ノードあたり１６個のデータブロックが配置される。
【００５８】
この時は、８コアＣＰＵのみを搭載したデータ処理ノード７０１ｘ９台では、８つのタスク７０５に対応づけた８つのパーティション７０６それぞれに対し、データ格納ノードに格納されているデータブロック７０８から２つずつを割り当てるため、データ処理ノード７０８では、タスクを処理するのに２単位時間必要になる。
【００５９】
一方、ＣＰＵコアの８８倍のデータ処理性能を有するアクセラレータ７１２を搭載したデータ処理ノード７０９では、ペアリングされているデータ格納ノード７１３の１６個のデータブロックは、１つのタスク７１４、及び１つのパーティション７１５において処理され、２／１１単位時間でタスクの実行が完了する。
【００６０】
しかしながら、ＨａｄｏｏｐのＭａｐ／Ｒｅｄｕｃｅ処理等で、ひとつのタスクの分散実行が完了してから次のタスクを実行するような場合では、ＣＰＵのみを搭載したデータ処理ノードにおけるタスク実行が完了するまで、ジョブの次の処理の実行を待つため、システム全体としては、タスクの実行完了に２単位時間必要となり、アクセラレータの効果を活用することができない。
【００６１】
（１−９）本実施の形態によるデータ処理ノードの構成
そこで、本実施の形態では図８に示すような構成を採用している。すなわち、図８では、ＣＰＵ８０２、８０３のみを搭載したデータ処理ノード８０５が処理するデータとして、８個のデータブロック８０８をデータ格納ノード８０４に格納しておく。さらに、図８では、８個のＣＰＵコアそれぞれで１つずつタスクを実行し、各タスクに１つずつ対応付けた８個のパーティション８０６のそれぞれに１つずつデータブロック８０８を割り当てる。
【００６２】
これにより、データ処理ノード８０１と同等の構成を持つ９台のデータ処理ノード、及び、対応する９台のデータ格納ノードにおけるタスク実行時間は、１単位時間となる。
【００６３】
一方、ＣＰＵコア１台の８８倍の性能を有するアクセラレータ８１２を搭載したデータ処理ノード８０９には、アクセラレータで実行する１つのタスク８１４と、該タスクに対応づけた１つのパーティション８１５、及び該パーティションに８８個のブロックを割り当てて、タスクを実行すれば、データ処理ノード８０９においても、１単位時間で８８ブロックのデータを処理するタスクの実行が完了する。
【００６４】
このように、データ処理ノードの計算性能に合わせて、処理するデータ量を調整することにより、本実施の形態による分散データベースシステムは、システム全体としてタスク実行時間を最適化することが可能になる（グラフ８１７参照）。
【００６５】
図９は、本実施の形態によるリソース管理方法の一例を示す図である。具体的には、図９は、全８コアのＣＰＵ９０２、９０３のみを計算デバイスとして構成されたデータ処理ノード９０１と同等構成のデータ処理ノード８台と、同じく８コアのＣＰＵ９１０、９１１に加えＣＰＵコア１台の８８倍の性能を持つアクセラレータ９１２を搭載したデータ処理ノード９０９を用いて１６０ブロック分のデータソース９０７を処理するタスクを実行する場合の構成例を示している。
【００６６】
図９では、データ処理ノード９０１、及びデータ格納ノード９０４と同等の構成を持つデータ処理ノード８台で、図８に示したデータ処理ノード８０１と同様に１単位時間でタスクを実行している。これにより、データ処理ノード９０９は、ＣＰＵコア９１０、９１１で実行する８つのタスク９１４を、対応パーティション９１５、それぞれにデータ格納ノード９１３のデータブロック９１６から各１つずつ対応づけたデータブロックをそれぞれ１単位時間で実行するとともに、アクセラレータ９１２でタスク９１７を、対応パーティション９１８、及びパーティション９１８に８８個のデータブロックを割り当てて１単位時間で実行している。
【００６７】
これにより、全９台のデータ処理ノード、及びペアリングしたデータ格納ノードにおいては、データソース９０７を処理するタスクを１単位時間で実行することができる（グラフ９１９参照）。
【００６８】
なお、データブロックをデータ格納ノードに配置する際は、予めデータ処理ノードの計算性能に合せてデータブロック数を決定して配置しておいても良いし、タスク実行時に、データ管理ノードに対し、データ格納ノードに配置するデータブロックを要求しても良い。
【００６９】
ただし、必要なデータブロックが、データ処理ノードと高速ネットワークで直結しているデータ格納ノード上、又は、データ処理ノードと同一の計算機として構成されているデータ格納ノード上に存在していなかった場合は、他のデータ格納ノードから転送するか、直接他のデータ格納ノードのデータを参照する必要がある。
【００７０】
この場合、データ格納ノード間のネットワークを介したデータ転送、及び、データ処理ノードからネットワークを介したデータ格納ノードへのデータ参照は、ネットワークの帯域によって律速する場合がある。従って、仮にタスク実行中にデータ転送、又は、ネットワークを介したデータ参照を行う必要が生じた場合、計算デバイスの処理性能を十分に活かすためには、ノードのデータ処理に間に合う速度でデータを転送することが必要である。
【００７１】
このためには、ノード間を十分高速なネットワークで接続するか、複数のデータ格納ノードを集中ストレージとして実装し、データブロックをデータ格納ノード間で共有し、データ処理ノードと集中ストレージの間を高速なＳＡＮで接続するか、又は、データ格納ノード間のデータ転送を内部通信バス等により高速化することが考えられる。
【００７２】
本実施の形態では、データ処理ノードと高速ネットワークで接続しているか、データ処理ノードと同一の計算機として構成されているデータ格納ノードに、タスク実行の前に、予めタスクの実行に使用するデータブロックを配置しておく場合を例に、以下の実施方法を説明する。
【００７３】
図１０は、図１で示した分散データベースシステムにおいて、データ処理ノード１１１のデータ処理性能に応じて、データ格納ノード１１５〜１１８に配置するデータ量を調整する機能を詳細に示した図である。
【００７４】
図１０では、図１における説明と同様に、図示しないが、各ノードがネットワークで接続されている。クライアントノード１０１においてアプリケーション実行部１０２Ａが実行されると、分散データベースシステムに対してデータ処理命令が発行される。
【００７５】
ジョブ管理ノード１０３は、データ処理命令解釈部１００１がアプリケーション実行部１０２Ａによって発行されたデータ処理命令を解釈し、ジョブ構成部１００２が分散データベースシステムにおいて実行可能なジョブを構成する。
【００７６】
タスク生成部１００３は、このように構成されたジョブに対応付けて、１つ以上のデータ処理ノード１１１〜１１４のいずれかのデータ処理ノードに分散配置して実行される、データ処理プログラムの単位としてのタスクを生成する。
【００７７】
ジョブ発行部１００４は、リソース管理ノード１０４に対して、このリソース管理ノード１０４によって管理されているデータ処理ノード１１１〜１１４のうちから必要なリソースを要求し、当該要求に応じて割り当てられた特定のデータ処理ノードに対してジョブ、及びジョブの構成要素であるタスクを発行する。
【００７８】
リソース管理ノード１０４では、ジョブ管理部１００５が、発行された１つ以上のジョブを、優先度、発行順及び／又は計算リソース占有率等の条件に従ってスケジューリングし、割り当てられた特定のデータ処理ノードにおいて実行する。
【００７９】
リソース管理部１００６は、分散データベースシステムに含まれるデータ処理ノード１１１〜１１４上における計算デバイス及びメモリ等のリソース要素を管理する。
【００８０】
タスク実行判定部１００７は、タスク生成部１００３によって生成されたタスクの負荷、性能要件等を解釈し、データ処理ノード１１１〜１１４の計算デバイス等のリソース毎のタスク実行性能を計算する。
【００８１】
タスク分配部１００８は、タスク実行判定部１００７で判定されたタスク実行性能に基づいて、各データ処理ノード１１１〜１１４にタスクを分配する。
【００８２】
データ管理ノード１０５は、アプリケーション実行部１０２Ａが処理する対象のデータソースを分散データベースシステムに分散配置する。
【００８３】
データ入力部１００９は、データソースからデータを取り込み、必要に応じて分散処理に適したフォーマットに変換する。ブロック分割部１０１０は、データソースのデータを、予め設定したブロックサイズに分割する。
【００８４】
データ配置部１０１１は、データブロックを、データ処理ノード１１１〜１１４のデータ処理性能に応じたデータ量毎に各データ処理ノードとペアリングされているデータ格納ノード１１５〜１１８のストレージ部１１９に格納する。
【００８５】
ブロック管理部１０１６は、データ格納ノードに格納されたデータブロックに対する、データ処理ノード１１１〜１１４で実行されるタスクからのアクセスを管理する。
【００８６】
データ処理ノード１１１〜１１４のタスク管理部１０１２は、データ処理ノード１１１〜１１４に配置されたタスクの実行順を管理するとともに、実行する計算デバイスへのタスク割り当てを管理する。
【００８７】
デバイス選択部１０１３は、配置されたタスクを、ＣＰＵ、ＦＰＧＡ、ＧＰＵ及びＡＳＩＣ等のどの計算デバイスで実行するかについて、タスク実行判定部において判定した計算デバイス毎のタスク実行性能に基づいて選択する。
【００８８】
論理データ生成部１０１４は、選択した計算デバイスでタスクを実行した時のタスク実行性能に基づいて、該タスクが処理するデータ量を決定し、該データ量に応じた論理データパーティションを生成し、生成したパーティションのサイズに対応した数量のデータブロックを割り当てる。
【００８９】
タスク実行部１０１５は、データ処理ノードに配置されたタスクを、当該タスクを実行するものとして選択された計算デバイスを用いて実行し、該タスクに対応づけられたパーティションに割り当てられたデータブロックを処理する。
【００９０】
図１１は、データ処理ノード１１０５に配置されたタスクの命令を解釈し、タスクが実行するデータブロックの数量を決定して、データ処理ノード１１０５がアクセスするデータ格納ノード１１１６に配置する流れを示す図である。
【００９１】
図１１に示す例では、分散データベースシステムにおいて実行するべく構成されたジョブとして、ジョブ１（図示の符号１１０１に相当）を例示している。このジョブ１は、タスク１．１（図示の符号１１０２に相当）、タスク１．２（図示の符号１１０３に相当）、タスク１．３（図示の符号１１０４に相当）を構成要素として保持する。また、本実施の形態においては、説明のために、データ処理ノードおよびデータ格納ノードが、それぞれ３台ずつの例を示しているが、データ処理ノードおよびデータ格納ノードの台数は、３台に限定されるものではない。
【００９２】
図１０に示すタスク実行判定部１００７では、タスク負荷判定部１１１１において、タスク１．１、タスク１．２、タスク１．３の命令（Ｏｐ１〜Ｏｐ６）を解釈し、各タスクを実行した時の計算量等の処理負荷を判定する。
【００９３】
リソース管理部１００６のリソース性能判定部１１１２は、データ処理ノード１１０５〜１１０７が有するＣＰＵ１１０９及びＦＰＧＡ１１１０等のような計算デバイスの動作周波数、並列実行数、メモリ帯域等のデータ処理性能情報に基づいて各計算デバイスのデータ処理性能を判定する。
【００９４】
タスク実行性能計算部１１１３は、タスク負荷判定部１１１１によって判定された各タスクの処理負荷と、リソース性能判定部１１１２によって判定された各計算デバイスの性能に基づいて、各計算デバイスで各タスクを実行した時のタスク実行性能を計算する。
【００９５】
デバイス選択部１０１３は、計算されたタスク実行性能に基づいて、各タスクを最短時間で実行可能等、当該タスクの実行に最適なデバイスを選択する。
【００９６】
データ配分計算部１１１４は、選択されたデバイスを用いてタスクを実行した時のタスク実行性能に基づいて、各データ処理ノード１１０５〜１１０７におけるタスク実行時間を平準化するように、タスク毎のデータ処理量を決定し、該決定されたデータ処理量に応じて論理データ生成部１０１４においてタスク毎のパーティション１１２０〜１１２４を作成する。
【００９７】
データ配分部１１１５は、データ格納ノード１１１６〜１１１８毎に、各データ格納ノードとペアリングされているデータ処理ノードが処理するデータ量に応じた数量のデータブロックを格納する。
【００９８】
パーティション１１２０〜１１２４には、そのデータ量に対応した数量のデータブロック１１２５〜１１２９が、データ格納ノード１１１６〜１１１９から割り当てられる。
【００９９】
図１２は、本実施の形態によるリソース管理方法の一例を示す。より具体的には、図示の例では、計算デバイスのタスク実行性能に基づいてデータ配分を調整してタスクを実行するデータ配分処理を示している。
【０１００】
データ処理が開始されると、クライアントノード１０１において、アプリケーション実行部１０２Ａがデータ処理命令の実行を要求する（ステップＳ１２０１）。
【０１０１】
ジョブ管理ノード１０３では、アプリケーション実行部１０２Ａが発行したデータ処理命令に基づき、分散データベースシステムでデータ処理命令を実行するジョブ構成を決定する（ステップＳ１２０２）。
【０１０２】
ジョブ管理ノード１０３では、決定されたジョブの構成に基づいて、各データ処理ノードで分散実行するタスクを生成し（ステップＳ１２０３）、リソース管理ノード１０４に対し、このタスクを実行するリソースを有するデータ処理ノードの使用を要求する（ステップＳ１２０４）。
【０１０３】
ジョブ管理ノード１０３は、各データ処理ノードが有する計算デバイスの性能に基づいて、生成されたタスクのノード毎の実行性能を計算する（ステップＳ１２０５）。
【０１０４】
さらにジョブ管理ノード１０３は、各タスクの各データ処理ノードにおける実行性能に基づいて、各タスクを実行する計算デバイスを選択する（ステップＳ１２０６）。
【０１０５】
ジョブ管理ノード１０３は、これらに基づいて、各タスクを実行する計算デバイス毎に、ノード間の実行時間が概ね等しくなる処理データ量を決定する（ステップＳ１２０７）。
【０１０６】
リソース管理ノード１０４は、このように決定した処理データ量に基づいて、タスクによって処理される論理データとしてのパーティションを生成する（ステップＳ１２０８）。
【０１０７】
データ管理ノード１０５は、各タスクが処理するデータ量に基づいて、各データ処理ノードとペアリングした各データ格納ノードに、データ処理ノードが処理するデータ量に対応する数量のデータブロックを配置する（ステップＳ１２０９）。
【０１０８】
データ管理ノード１０５は、各タスクに対応づけた各パーティションに、パーティションに設定したデータ量に応じた数量のデータブロックを割り当てる（ステップＳ１２１０）。
【０１０９】
各データ管理ノード１０５は、タスクを実行し、このタスクに対応づけたパーティションに割り当てられたデータを処理する（ステップＳ１２１１）。各データ管理ノード１０５は、タスクの実行が完了したら、次の計算ステージのタスクが存在するかを判定し、まだ次に実行すべきタスクが存在する場合（ステップＳ１２１２）は、ステップＳ１２０５に戻って処理を反復する。データ管理ノード１０５は、次の計算ステージのタスクが存在しない場合は、実行すべき他のジョブが存在するかを判定する。
【０１１０】
データ管理ノード１０５は、次に実行すべきジョブが存在する場合は、ステップＳ１２０３に戻って処理を反復する。データ管理ノード１０５は、処理すべき他のジョブが存在しない場合（ステップＳ１２１３）、処理を終了する。
【０１１１】
図１３は、図１１のタスク負荷判定部１１１１において判定された各タスクの処理負荷に基づいた実行時間の一例を示す。ここでは、図１１の例に従って、ジョブ１にタスク１．１、タスク１．２、タスク１．３の３つのタスクが構成要素として含まれるものとする。また、本実施の形態による分散データベースシステムで実行される複数のジョブは、それぞれの間に依存関係を持たず独立であるとし、各データ処理ノード１１０５〜１１０７に搭載されている計算デバイスもそれぞれ独立に実行可能であるとする。さらに、同一ジョブ内の異なる種類のタスクは並列実行不可であり、タスク１．１、タスク１．２、タスク１．３の順番に、前のタスク完了後に次のタスクの実行を開始できるものとする。
【０１１２】
このとき、図１３に示す表では、タスク１．１で１００ＧＢのデータを処理した場合における処理負荷は、ＣＰＵで実行したときに、１コアあたり、動作周波数１ＧＨzあたり１０００ｍｓの実行時間が掛かるとする。また、タスク１．１をＦＰＧＡで処理した場合には１ｍｓの実行時間であるとする一方、ＧＰＵで実行した場合は１０ｍｓの実行時間であるとする。タスク１．２及びタスク１．３については、表に示す通りである。
【０１１３】
ただし、タスク１．２は、タスクの処理の性質上ＧＰＵで実行することができないものとした。タスク１．３は、ＦＰＧＡで実行することができないものとした。なお、これらの数値は、タスクプログラムの処理内容から性能モデルを生成し、該生成モデルに基づいて推定しても良いし、実際に特定の計算デバイスで予め実行しておいた結果から換算することも可能である。
【０１１４】
図１４は、図１１等で示したデータ処理ノード１１０５〜１１０７に搭載された計算デバイスの構成例である。例えば、ノード１には、２０コアのＣＰＵ（動作周波数：４ＧＨｚ）と、ＦＰＧＡ及びＧＰＵが１台ずつ搭載されていることを示している。
【０１１５】
図１５は、図１３及び図１４に基づいて、図１１のタスク実行性能計算部１１１３において、計算デバイス毎のタスク実行時間を計算した結果の一例を示す。
【０１１６】
例えば、ノード１のＣＰＵでタスク１．１を実行した場合の実行時間Ｔｉｍｅは、以下のように計算される。
Ｔｉｍｅ（タスク１．１、ノード１、ＣＰＵ）＝１０００／２０／４＝１２．５ｍｓ
【０１１７】
例えば、ノード１のＦＰＧＡ又はＧＰＵでタスク１．１を実行した場合の実行時間Ｔｉｍｅも同様に以下のように計算することができる。
【０１１８】
Ｔｉｍｅ（タスク１．１、ノード１、ＦＰＧＡ）＝１ｍｓ
Ｔｉｍｅ（タスク１．１、ノード１、ＧＰＵ）＝５ｍｓ
【０１１９】
以上より、ノード１でタスク１．１を実行する場合は、ＦＰＧＡを使用した場合に最も短い実行時間で処理が完了するため、計算デバイスとしてＦＰＧＡを選択する。なお、ノード２及びノード３の場合は図１５に示す通りである。
【０１２０】
図１６は、各ノードでタスク毎に最適な計算デバイスを選択した場合のタスク実行時間を示した一例である。実行時間は、図１５の説明で示した方法に基づいて計算する。１００ＧＢのデータを処理する場合、ノード１では、タスク１．１の実行時間は、ＦＰＧＡを使用することにより１ｍｓ、タスク１．２ではＣＰＵを使用し６．２５ｍｓ、タスク１．３ではＣＰＵを使用し５ｍｓとなる。ノード２、ノード３についても同様に表に示す。
【０１２１】
図１７は、図１６の実行時間の比較を、データ処理性能（ＴＢ/s）を用いて示す。図１８は、データソースとして１ＴＢ（テラバイト）のデータを３台のデータ処理ノードで処理する場合に、本実施の形態によるリソース管理方法を用いてノード毎の実行時間を平準化するデータ配分量を示す。
【０１２２】
例えば、タスク１．１では、ノード１、ノード２、ノード３における計算性能比が、図１７より、１０対２対０．２となっている。そこで、この比率で１ＴＢ＝１０２４ＧＢのデータを配分すると、ノード１では、
データ配分量（ノード１）＝  １０２４ｘ１０／（１０＋２＋０．２）＝８３９ＧＢ
となる。
【０１２３】
同様にノード２には１６８ＧＢ、ノード３には１７ＧＢを割り当てることにより、タスク１．１は、全てのノードで同じ実行時間で処理を完了する。タスク１．２、タスク１．３については、図１８の表の通りである。
【０１２４】
図１９は、本実施の形態によるリソース管理処理により、データ処理ノードの計算性能に応じてデータ配分を調整した場合の効果を示す。
【０１２５】
図１９（Ａ）は、データ配分の調整を行わず、全てのデータ処理ノードに３３３ＧＢずつ均等に配分した場合の各タスクの実行時間を示している。
【０１２６】
タスク１、１、タスク１．２、タスク１．３は、それぞれ前のタスクが完了してから次のタスクの実行を開始する条件であるため、各タスクにおいて、ノード１やノード２では処理が早期に完了しているにも関わらず、ノード３の処理が完了するまで待機することになり、システム全体の処理時間は、ノード３の実行性能で律速している。
【０１２７】
これに対し、図１９（Ｂ）では、タスク毎に、図１８の表に記載したデータ配分を行うことで、タスク毎の実行時間がノード間で平準化され、待機時間が無くなり、システム全対の実行時間が大幅に短縮される。
【０１２８】
図１９（Ｃ）は、タスク毎にデータ配分を最適化するのではなく、タスク１．１、１．２、１．３のノード毎の実行性能の幾何平均（図１７の表における幾何平均欄に記載）に基づいてデータを配分（図１８の表における幾何平均欄に記載）した場合である。
【０１２９】
この場合は、実行するタスクによらず同じデータ配分を用いる。Ｈａｄｏｏｐ（登録商標）の分散ファイルシステムであるＨＤＦＳのデータ配分機能等を用いてデータを配分する場合、データ格納ノードへのデータ転送が発生するため、タスク実行の度にデータ配分を行うと、データ転送のオーバーヘッド時間が全体の実行時間に影響を与える可能性がある。
【０１３０】
そこで本実施の形態では、データ転送のオーバーヘッドの影響が大きい場合には、実行する複数のタスクに対し準最適なデータ配分を予め行うことにより、タスク実行時のデータ転送オーバーヘッドの影響を回避しても良い。
【０１３１】
図１９（Ｃ）では、タスク毎に多少の待機時間が生じているが、システム全体の実行時間は、データを均等配置した場合（Ａ）に比べ、十分短くなっている。
【０１３２】
本実施の形態では、データ配分比として、タスク実行性能の幾何平均を用いたが、配分比を決定する方法は幾何平均に限定されるものではなく、例えば、算術平均、調和平均等、タスクの性質に応じて最適な計算方法を選択することが可能である。
【０１３３】
本実施の形態による分散データベースシステムでは、そのリソース管理方法として、ここまで、データ処理ノードが備える計算デバイスを用いてタスクを実行した際における、タスク実行性能に応じてタスクが処理するデータ量を配分する方法を開示したが、このようにタスク実行性能に応じてデータ量を配分する代わりに、予め配分されたデータ量に応じてタスクの実行性能を調整するようにしても良い。
【０１３４】
例えば、特定のタスクを実行する際に、高い動作周波数を持つＣＰＵ、又は、コア数の多いＣＰＵを有するノードでタスクを実行する場合に、該ノードにおけるタスク実行時間が他のノードより短くなり、当該ノードに待機時間が生じてしまうときは、動作周波数を下げたり、使用するコア数を制限する等により、システム全体の実行時間を平準化し、かつ特定のノードの消費電力を削減したり、データベースソフトのライセンス費を削減することが可能である。
【０１３５】
また、計算デバイスとしてＦＰＧＡを使用する場合も、対象タスクを実行する論理回路の並列度を落としたり、論理回路規模を削減する等により、タスク実行性能を、他のＦＰＧＡ非搭載データ処理ノードと平準化しながら、消費電力を削減したり、他の処理を実行する論理を追加する等により機能性を向上することが考えられる。
【０１３６】
本実施の形態では、計算能力としてタスク実行時間を評価尺度とする例について記載したが、例えば、タスク実行時のデータ転送量やネットワーク負荷、メモリ使用量等の性能指標や、タスク実行に伴う電力消費量や、計算リソース使用料金等を評価尺度として、ジョブ実行を最適化しても良い。
【０１３７】
（２）本実施の形態の効果等
以上説明したように、上記実施の形態における分散データベースシステムでは、最適な複数の計算デバイスを用いてタスクを実行する時に、タスクの処理命令によって処理されるデータのデータ量を、最適な複数の計算デバイスの計算能力の違いに応じて最適な複数の計算デバイス間で配分し、最適な複数の計算デバイスを用いてタスクを分散して実行させている。
【０１３８】
このような構成によれば、各データ処理ノーゾにおける計算能力に応じて処理対象のデータのデータ量を分散できるため、システム全体でのデータの処理に掛かる実行時間を短縮することができる。
【０１３９】
（３）その他の実施形態
上記実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その趣旨を逸脱しない限り、様々な形態で実施することができる。例えば、上記実施形態では、各種プログラムの処理をシーケンシャルに説明したが、特にこれにこだわるものではない。従って、処理結果に矛盾が生じない限り、処理の順序を入れ替え又は並行動作するように構成しても良い。
【産業上の利用可能性】
【０１４０】
本発明は、分散データベースシステムを用いたデータ分析処理におけるリソース管理方法に広く適用することができる。
【符号の説明】
【０１４１】
１００７……タスク実行判定部、１００８……タスク分配部、１０１１……データ配置部、１０１４……論理データ生成部、１１１１……タスク負荷判定部、１１１２……リソース性能判定部、１１１３……タスク実行性能計算部、１１１４……データ配分計算部、１１１５……データ配分部。
【図１】
0006753999.tif 000002
【図２】
0006753999.tif 000003
【図３】
0006753999.tif 000004
【図４】
0006753999.tif 000005
【図５】
0006753999.tif 000006
【図６】
0006753999.tif 000007
【図７】
0006753999.tif 000008
【図８】
0006753999.tif 000009
【図９】
0006753999.tif 000010
【図１０】
0006753999.tif 000011
【図１１】
0006753999.tif 000012
【図１２】
0006753999.tif 000013
【図１３】
0006753999.tif 000014
【図１４】
0006753999.tif 000015
【図１５】
0006753999.tif 000016
【図１６】
0006753999.tif 000017
【図１７】
0006753999.tif 000018
【図１８】
0006753999.tif 000019
【図１９】
0006753999.tif 000020