(57)【要約】【課題】分散処理装置への要求処理に対し、各ジョブに適切な設定値を与える。【解決手段】複数のタスク実行部１３２を用いてジョブを実行する分散処理基盤部１３０と、入力されたクエリを分散処理基盤部１３０で処理可能なジョブの命令に変換するインタフェース提供部１１０とを備える分散処理装置１０において、ジョブそれぞれの設定値を生成する設定値生成部１２０は、ジョブの開始時に当該ジョブの実行時情報を取得する実行時情報取得部１２１と、取得したジョブの実行時情報と設定値生成モデル１２２とを参照して、当該ジョブの実行に用いる設定値を生成し、分散処理基盤部１３０へ出力する設定値生成処理部１２３とを備える。分散処理基盤部１３０は、出力された当該ジョブの設定値を用いて分散処理基盤部１３０により当該ジョブを実行する。【選択図】図１
2014215764.tif 000002
【特許請求の範囲】
【請求項１】
１以上のノードを用いて１以上のジョブを実行する分散処理基盤部と、前記分散処理基盤部への要求処理の入力を受け付けたとき、前記要求処理の内容を、前記分散処理基盤部で処理可能なジョブの命令に変換し、前記変換された命令に基づき、前記分散処理基盤部を用いて、前記１以上のジョブを実行するインタフェース提供部とを備える分散処理装置において実行される前記ジョブそれぞれの設定値を生成する設定値生成装置であって、
前記ジョブの実行開始時に、前記分散処理基盤部から当該ジョブの実行時情報を取得する実行時情報取得部と、
当該ジョブの実行時情報に基づき、当該ジョブの設定値を求めるための設定値生成モデルを記憶する記憶部と、
当該ジョブの実行時情報を用いて、前記設定値生成モデルにより、当該ジョブの実行に用いる設定値を生成し、前記分散処理基盤部へ出力する設定値生成処理部とを備えることを特徴とする設定値生成装置。
【請求項２】
前記設定値生成モデルの一つとして、当該ジョブの実行時間の短縮を要件として設定値を最適化するモデルを用いることを特徴とする請求項１に記載の設定値生成装置。
【請求項３】
前記実行時情報は、当該ジョブへの入力データ量であり、
前記設定値生成モデルは、当該ジョブを実行する全タスク処理において，前記入力データ量に対し一タスクが処理する最大データ量である分割サイズを設定値として求めるモデルであり、
前記生成される当該ジョブの設定値は、前記設定値生成モデルにより求められた前記分割サイズであること
を特徴とする請求項１または請求項２に記載の設定値生成装置。
【請求項４】
前記実行時情報は、当該ジョブへの入力データ量および当該ジョブにおいて用いられるユーザ関数であり、
前記設定値生成モデルは、前記入力データ量に対する当該ユーザ関数による処理の実行により得られる中間出力データの転送にあたり、圧縮しない前記中間出力データのデータ転送時間である非圧縮時転送時間と、前記中間出力データを圧縮した場合の前記中間出力データの圧縮および解凍処理に要する時間と圧縮後の前記中間出力データの転送時間の合計値である圧縮時転送時間との長短を比較し、前記圧縮転送時間に対し、前記非圧縮転送時間が短い場合は圧縮しない、前記非圧縮転送時間が長い場合は圧縮する、と判断するモデルであり、
前記生成される当該ジョブの設定値は、前記モデルにより判断された、当該ジョブにおいて中間出力データを圧縮するか否かを示す値であること
を特徴とする請求項１または請求項２に記載の設定値生成装置。
【請求項５】
前記実行時情報取得部は、さらに、
前記生成された設定値により実行されたジョブの統計情報を取得し、
前記設定値生成装置は、さらに、
前記生成された設定値および当該ジョブの統計情報を参照して、前記設定値生成モデルを更新するモデル更新部を備えること
を特徴とする請求項１ないし請求項４のいずれか１項に記載の設定値生成装置。
【請求項６】
１以上のノードを用いて１以上のジョブを実行する分散処理基盤部と、
要求処理の入力を受け付けたとき、前記要求処理の内容を、前記分散処理基盤部で処理可能なジョブの命令に変換し、前記変換された命令に基づき、前記分散処理基盤部を用いて、前記１以上のジョブを実行するインタフェース提供部と、
前記ジョブの実行開始時に、前記分散処理基盤部から当該ジョブの実行時情報を取得する実行時情報取得部と、
当該ジョブの実行時情報に基づき、当該ジョブの設定値を求めるための設定値生成モデルを記憶する記憶部と、
前記取得したジョブの実行時情報と、前記設定値生成モデルとを参照して、当該ジョブの実行に用いる設定値を生成し、前記分散処理基盤部へ出力する設定値生成処理部とを備え、
前記分散処理基盤部は、
前記出力された当該ジョブの設定値を用いて、当該ジョブを実行することを特徴とする分散処理装置。
【請求項７】
１以上のノードを用いて１以上のジョブを実行する分散処理基盤部と、前記分散処理基盤部への要求処理の入力を受け付けたとき、前記要求処理の内容を、前記分散処理基盤部で処理可能なジョブの命令に変換し、前記変換された命令に基づき、前記分散処理基盤部を用いて、前記１以上のジョブを実行するインタフェース提供部とを備える分散処理装置において実行される前記ジョブそれぞれの設定値を生成する設定値生成方法であって、
当該ジョブの実行時情報に基づき、当該ジョブの設定値を求めるための設定値生成モデルを記憶するコンピュータが、
前記ジョブの実行開始時に、前記分散処理基盤部から当該ジョブの実行時情報を取得するステップと、
前記取得したジョブの実行時情報と、前記設定値生成モデルとを参照して、当該ジョブの実行に用いる設定値を生成し、前記分散処理基盤部へ出力する設定値生成処理ステップとを実行することを特徴とする設定値生成方法。
【請求項８】
１以上のノードを用いて１以上のジョブを実行する分散処理基盤部と、前記分散処理基盤部への要求処理の入力を受け付けたとき、前記要求処理の内容を、前記分散処理基盤部で処理可能なジョブの命令に変換し、前記変換された命令に基づき、前記分散処理基盤部を用いて、前記１以上のジョブを実行するインタフェース提供部とを備える分散処理装置において実行される前記ジョブそれぞれの設定値を生成するための設定値生成プログラムであって、
当該ジョブの実行時情報に基づき、当該ジョブの設定値を求めるための設定値生成モデルを記憶するコンピュータに、
前記ジョブの実行開始時に、前記分散処理基盤部から当該ジョブの実行時情報を取得するステップと、
前記取得したジョブの実行時情報と、前記設定値生成モデルとを参照して、当該ジョブの実行に用いる設定値を生成し、前記分散処理基盤部へ出力する設定値生成処理ステップとを実行させるための設定値生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設定値生成装置、分散処理装置、設定値生成方法、および、設定値生成プログラムに関する。
【背景技術】
【０００２】
大量・多様なデータを短時間に分析するために、スケールアウト型の特徴を持つ分散処理システムが注目されている。この技術では、複数の計算機（ノード）を協調させ、個々の計算機にデータ処理を分担することで、全体として大規模なデータ処理を可能にする。どの計算機に処理を任せるか等の管理は分散処理基盤（ＭａｐＲｅｄｕｃｅ等）が担うため、ユーザは分散処理基盤に対し、実現したい処理内容を命令として記述すればよい。ここで、命令の記述が複雑であるため、ユーザが分散処理基盤に対し要求する処理(要求処理)の内容を簡易に指示するためのインタフェースツール（Ｈｉｖｅ、Ｐｉｇ等）が登場した。
【０００３】
このインタフェースツールは、ユーザにとって分かりやすい、抽象度の高い形式で記載された要求処理の入力を受け付けると、この要求処理を、分散処理基盤上で処理できる実行単位の命令形式に変換する。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】J.  Dean  and  S.  Ghemawat.  MapReduce:  simplified  data  processing  on  large  clusters.  In  OSDI’04,    2004,  pp.137-149.
【非特許文献２】A.  Thusoo,  J.S.Sarma,  N.  Jain,  Z.Shao,  P.  Chakka,  N.  Zhang,  S.  Anthony,  H.  Liu,  and  R.  Murthy.  Hive-a  petabyte  scale  data  warehouse  using  Hadoop.  In  ICDE’10,    IEEE,  2010，  pp.  996-1005.
【非特許文献３】Christopher  Olston,  Benjamin  Reed,  Utkarsh  Srivastava,  Ravi  Kumar,  and  Andrew  Tomkins.  Pig  latin:  a  not-so-foreign  language  for  data  processing.  In  SIGMOD'08,  ACM,  2008
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般にユーザの指示する上位概念レベルの処理(要求処理)内容は、複数の実行単位(ジョブ)からなる処理に変換され、分散処理基盤上で実行されることになる。しかし、ユーザの指示する設定値を、要求処理を構成するジョブごとに変更することができず、また、その設定値の適正さはジョブ実行時まで不明である。よって、分散処理システムにおける要求処理に対する各ジョブの設定値の最適化が不十分となり、分散処理システムが十分な性能を発揮することができないという問題があった。
【０００６】
例えば、分散処理システムにおいて要求処理（クエリ等）から生成された複数のジョブのうち、後半のジョブは、前半のジョブの出力データを引き継ぐことがあるが、従来技術では、前半のジョブの出力データ量に応じて、後半のジョブの設定値を変えるといった、各ジョブに対して適切な値を設定することができなかった。
【０００７】
そこで、本発明は、前記した問題を解決し、分散処理システムへの要求処理に対し、各ジョブに適切な設定値を与えることにより、分散処理システムの性能を十分発揮させることを目的とする。
【課題を解決するための手段】
【０００８】
前記した問題を解決するため、本発明は、１以上のノードを用いて１以上のジョブを実行する分散処理基盤部と、前記分散処理基盤部への要求処理の入力を受け付けたとき、前記要求処理の内容を、前記分散処理基盤部で処理可能なジョブの命令に変換し、前記変換された命令に基づき、前記分散処理基盤部を用いて、前記１以上のジョブを実行するインタフェース提供部とを備える分散処理装置において実行される前記ジョブそれぞれの設定値を生成する設定値生成装置であって、前記ジョブの実行開始時に、前記分散処理基盤部から当該ジョブの実行時情報を取得する実行時情報取得部と、当該ジョブの実行時情報に基づき、当該ジョブの設定値を求めるための設定値生成モデルを記憶する記憶部と、当該ジョブの実行時情報を用いて、前記設定値生成モデルにより、当該ジョブの実行に用いる設定値を生成し、前記分散処理基盤部へ出力する設定値生成処理部とを備えることを特徴とする設定値生成装置とした。
【発明の効果】
【０００９】
本発明によれば、分散処理システムへの要求処理に対し、各ジョブに適切な設定値を与えるため、分散処理システムの性能を十分発揮させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、分散処理装置の構成を示す図である。
【図２】図２は、設定値生成モデルに用いる関数ｆを説明するための図である。
【図３】図３は、入力データ量Ｄの分割サイズＭの最適値を説明するための図である。
【図４】図４は、分散処理装置の処理手順を示すフローチャートである。
【図５】図５は、入力データ量Ｄの分割サイズＭと実行時間の実測値とを示すグラフである。
【図６】図６は、分散処理プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
[構成]
以下、図面を参照しながら、本発明の分散処理装置（分散処理システム）の実施の形態を説明する。図１に示すように分散処理装置１０は、外部装置等から、本システムで要求する要求処理（クエリ等）の入力を受け付けると、この要求処理の内容を解釈してデータ処理を実行する。データ処理は、分散処理装置１０の備える１以上のタスク実行部１３２により実行される。タスク実行部（ノード）１３２は、この分散処理装置１０の備える計算機（図示省略）により実現される。
【００１２】
分散処理装置１０は、インタフェース提供部１１０と、設定値生成部１２０と、分散処理基盤部１３０とを備える。
【００１３】
インタフェース提供部１１０は、分散処理装置１０への要求処理（クエリ等）の入力を受け付けたとき、この要求処理の内容を解釈し、分散処理基盤部１３０が処理可能な１以上の実行単位（ジョブ）の命令に変換する。そして、インタフェース提供部１１０は、この変換された命令に基づき、分散処理基盤部１３０を用いて各ジョブを実行する。つまり、インタフェース提供部１１０は、分散処理基盤部１３０に対し、各ジョブの実行を指示し、分散処理基盤部１３０から、当該ジョブの実行結果を受け取るこのインタフェース提供部１１０は、非特許文献２に記載のＨｉｖｅや、非特許文献３に記載のＰｉｇにより実現される。
【００１４】
インタフェース提供部１１０は、変換部１１１と、実行部１１２とを備える。変換部１１１は、要求処理の入力を受け付けたとき、この要求処理の内容を、分散処理基盤部１３０が処理可能な１以上のジョブの命令に変換する。実行部１１２は、変換部１１１により変換された命令に基づき、分散処理基盤部１３０を用いてジョブを実行する。ここで実行部１１２は、変換された命令に基づき、ジョブ同士の依存関係（例えば、ジョブ１の出力結果がジョブ２の入力になる等）があればそれに従い、分散処理基盤部１３０を用いてジョブを実行し、その実行結果を外部装置等へ出力する。なお、実行部１１２は、分散処理基盤部１３０によるジョブの実行にあたり、設定値生成部１２０から出力された当該ジョブの設定値を用いる。
【００１５】
設定値生成部１２０は、ジョブの実行時情報（例えば、当該ジョブへの入力データ量Ｄ）を用いて当該ジョブで用いる設定値を生成し、生成した設定値を分散処理基盤部１３０へ出力する。ジョブで用いる設定値は、例えば、リソースを最大限利用してジョブの実行時間を最小化することを要件とした、当該ジョブを構成するタスク１つあたりの最大データ量Ｍである。この設定値生成部１２０は、実行時情報取得部１２１と、設定値生成モデル１２２と、設定値生成処理部１２３とを備える。モデル更新部１２４は、装備する場合と装備しない場合とがあり、装備する場合について後記する。
【００１６】
実行時情報取得部１２１は、ジョブの実行時情報を分散処理基盤部１３０から取得する。この実行時情報は、各ジョブの実行開始時に得られる情報であり、当該ジョブよりも前に実行されたジョブの実行結果に依存する。この実行時情報は、例えば、当該ジョブより前のジョブが終了した後、当該ジョブへ入力される入力データ量Ｄや、タスク実行部１３２の数Ｎ等である。
【００１７】
設定値生成モデル１２２は、当該ジョブの実行時情報に基づき、当該ジョブの最適な設定値を得るためのモデルであり、例えば、図２に示すような関数ｆで与えられる。この関数ｆにおいて（ｘ１，…，ｘｎ）は、モデルに与える引数であり、当該ジョブの実行時情報（例えば、当該ジョブへの入力データ量Ｄ等）の値である。また、関数ｆにおける（ｗ１，…，ｗl）はモデルに登場する定数値であり、例えば、当該ジョブにおけるタスク実行部１３２それぞれのタスク処理数ｗである。そして、この関数ｆから得られる（ｃ１，…，ｃｍ）は、モデルの出力であり、当該ジョブの最適な設定値である。この設定値生成モデル１２２は、分散処理装置１０の備える記憶部（図示省略）の所定領域に記憶され、設定値生成処理部１２３により参照される。なお、設定値生成モデル１２２における関数ｆや、この関数ｆで用いるパラメータの種類、定数等は、実験等により予め求めておくものとする。
【００１８】
ここで、ジョブの最適な設定値は、例えば、当該ジョブの実行時間をできるだけ短くするような、タスク１つあたりの最大データ量（つまり、入力データ量Ｄの分割サイズ）Ｍの値である。この入力データ量Ｄの分割サイズＭの最適値は、例えば、以下の式（１）に示す設定値生成モデル１２２により得られる。
【００１９】
【数１】
2014215764.tif 000003
【００２０】
なお、式（１）におけるｗは予め与えられる定数である。
【００２１】
設定値生成処理部１２３が、式（１）に示す設定値生成モデル１２２を用いることで、当該ジョブの実行時間をできるだけ短くするような、入力データ量Ｄの分割サイズＭを求めることができる。この理由を、図３を参照して説明する。
【００２２】
例えば、ジョブを実行するタスク実行部１３２の数を２個（タスク実行部１３２ａおよびタスク実行部１３２ｂ）、ｗ＝３とする。ここで、（ａ）に示すように、入力データ量Ｄを５個に分割した場合、つまり、タスク１つあたりの最大データ量Ｍを、Ｄ／５とした場合、タスク実行部１３２ｂに待機時間が発生してしまう。つまり、タスク実行部１３２群全体としてのジョブの実行時間は、タスク実行部１３２ａが５個目のタスクが終了するまでの時間となってしまう。
【００２３】
一方、（ｂ）に示すように、入力データ量Ｄを６個（つまり、タスク処理数ｗ（３）×タスク実行部１３２の数Ｎ（２））とすれば、タスク実行部１３２ｂの待機時間は発生せず、タスク実行部１３２ａ，１３２ｂはそれぞれほぼ同時にジョブを終了させることができる。これにより、タスク実行部１３２群全体としてのジョブの実行時間を低減させることができる。
【００２４】
このように、設定値生成処理部１２３が、設定値生成モデル１２２として前記した式（１）を用いることで、タスク実行部１３２群全体のジョブの実行時間を低減させるような、入力データ量Ｄの分割サイズＭを得ることができる。
【００２５】
設定値生成処理部１２３は、当該ジョブの実行時情報と、設定値生成モデル１２２とを参照して、当該ジョブで用いる設定値を生成する。例えば、設定値生成処理部１２３は、ジョブ２の実行時情報として、ジョブ２への入力データ量Ｄを取得したとき、設定値生成モデル１２２である式（１）を用いてジョブ２における入力データ量Ｄの分割サイズＭを決定する。そして、設定値生成処理部１２３は、決定したジョブ２における入力データ量Ｄの分割サイズＭの設定値を、分散処理基盤部１３０へ出力する。この設定値を受信した分散処理基盤部１３０は、当該設定値を用いてジョブ２を実行する。
【００２６】
分散処理基盤部１３０は、インタフェース提供部１１０から出力されたジョブの実行指示および設定値生成部１２０から出力された設定値に基づき、この分散処理基盤部１３０管理下にある各タスク実行部１３２にジョブの実行処理を分担させる。そして、分散処理基盤部１３０は、ジョブを分担させた各タスク実行部１３２の実行結果をまとめたデータをインタフェース提供部１１０へ返す。この分散処理基盤部１３０は、例えば、非特許文献１に記載のＭａｐＲｅｄｕｃｅ等により実現される。この分散処理基盤部１３０は、ジョブ実行管理部１３１と１以上のタスク実行部１３２とを備える。
【００２７】
ジョブ実行管理部１３１は、ジョブの実行指示および当該ジョブの設定値に基づき、タスク実行部１３２に当該ジョブをどのようにタスクとして実行させるのかを管理する。ジョブ実行管理部１３１は、例えば、できるだけタスク実行部１３２がローカルディスクに保持するデータを処理するようにタスクを配置する。そして、ジョブ実行管理部１３１は、ジョブを分担させた各タスク実行部１３２の実行結果をまとめたデータをインタフェース提供部１１０へ返す。
【００２８】
タスク実行部１３２は、ジョブ実行管理部１３１からタスクや設定値を受け取ると、該当する入力データをローカルディスクやネットワーク転送により読み込み、当該設定値に基づくタスクの実行処理を行う。
【００２９】
[処理手順]
次に、図４を用いて、分散処理装置１０の処理手順を説明する。まず、インタフェース提供部１１０は、分散処理装置１０への要求処理の入力を受け付けると（Ｓ１）、変換部１１１により、この要求処理の内容を解釈し、この要求処理の内容を、分散処理基盤部１３０が処理可能なジョブの命令へ変換する（Ｓ２）。例えば、前記した図１に示すようにジョブ１，２，３の命令に変換する。
【００３０】
そして、実行時情報取得部１２１は、分散処理基盤部１３０からジョブの実行時情報を取得する（Ｓ３）。例えば、実行時情報取得部１２１は、分散処理基盤部１３０からジョブ１への入力データ量Ｄ、および、ジョブ１を実行するタスク実行部１３２の数Ｎの値を取得する。そして、設定値生成処理部１２３は、この実行時情報と、設定値生成モデル１２２とを参照して、当該ジョブ（例えば、ジョブ１）の設定値を生成する（Ｓ４）。そして、設定値生成処理部１２３は、生成した設定値を分散処理基盤部１３０へ出力する。
【００３１】
実行部１１２は、変換部１１１により変換された命令に基づき、分散処理基盤部１３０によりジョブを実行する（Ｓ５）。例えば、実行部１１２は分散処理基盤部１３０により、ジョブ１の設定値に基づきジョブ１を実行する。
【００３２】
Ｓ５の後、未実行のジョブがあれば（Ｓ６のＹｅｓ）、Ｓ３へ戻る。例えば、変換部１１１により変換された命令において、ジョブ１に引き続き、ジョブ２の実行が指示されていれば、Ｓ３へ戻る。そして、実行時情報取得部１２１は、ジョブ１の実行後、ジョブ２の実行開始時に、ジョブ２への入力データ量Ｄ、および、ジョブ２を実行するタスク実行部１３２の数Ｎを分散処理基盤部１３０から取得する（Ｓ３）。そして設定値生成処理部１２３は、ジョブ２への入力データ量Ｄと、ジョブ２を実行するタスク実行部１３２の数Ｎと、設定値生成モデル１２２とを参照して、ジョブ２の設定値を生成する（Ｓ４）。その後、実行部１１２は、生成されたジョブ２の設定値を用いて、分散処理基盤部１３０によりジョブ２を実行する（Ｓ５）。
【００３３】
Ｓ５の後、Ｓ６において未実行のジョブがなければ（Ｓ６のＮｏ）、実行部１１２はジョブの実行結果を出力し（Ｓ７）、処理を終了する。
【００３４】
このようにすることで、分散処理装置１０は、要求処理に対し、ジョブごとに最適な設定値を与えることができるため、分散処理装置１０の性能を十分発揮させることができる。また、分散処理装置１０のユーザは、ジョブごとに設定値の調整を行う必要がなくなる。
【００３５】
[実験結果]
なお、分散処理装置１０におけるジョブへの入力データ量Ｄの分割サイズＭと当該ジョブの実行時間の実測値との関係を、図５に示す。ここではジョブの実行に用いたタスク実行部１３２の数Ｎ＝１０とし、入力データ量Ｄ＝１８（ＧＢ）とした。図５に示すように、入力データ量Ｄの分割サイズＭが、Ｄ／Ｎとなっている場合、および、Ｄ／２Ｎとなっている場合において、ジョブの実行時間が最も短くなっていることが分かる。このことからも、前記した式（１）が、入力データ量Ｄの分割サイズＭの最適値を計算するのに適した式であることが分かる。
【００３６】
なお、分散処理装置１０への実際の入力データは、複数の計算機（タスク実行部１３２）に分散して保持されている。これは、１つのタスクが処理するデータ量を決める時に影響が出る。１つの計算機が保持するデータ量よりも多いデータを１つのタスクで処理するように指示した場合、他の計算機からデータを受け取る必要があり、転送というコストが上乗せされる。そのコストを避けるために、計算機をまたいで１つのデータとみなすことは少ない。実際に従来技術の実装では、ユーザは分散処理システムに対し、１つのタスクが処理するデータ量は指定できず、最大量（これを分割サイズＭと呼ぶ）のみ指定できる。ジョブ実行管理部１３１は、分割サイズを超えているデータについては、データを分割する（つまりタスクも増える）。ここで、分割サイズＭに満たない余りのデータは、転送コストを避けるために、余りだけで１つの分割データを構成し、タスクとして実行される。つまり、分割サイズＭと実際のタスクが処理するデータ量は必ずしも一致しない。例えば、分割サイズＭを「６」とし、ある計算機は「１０」のデータ量を保持している場合、「６」の分割データを処理するタスクと「４」の分割データを処理するタスクができる。このように、厳密な等分割り当てができないため、実験で実行時間が最小になる設定値を探す必要がある。実験の結果、入力データ量Ｄを前記した式（１）により求めた分割サイズＭで分割した場合の設定値を採用すると本実験の環境では上手くいくことが分かるため、その値を算出する式（１）をモデルとして採用している。
【００３７】
[その他の実施の形態]
（設定値生成モデルの例  その１）
なお、設定値生成処理部１２３は、ジョブの設定値として、当該ジョブへの割り当てメモリ量を生成してもよい。例えば、設定値生成処理部１２３は、当該ジョブにおける中間出力を加工（例えば、ソート）する際に用いる最適なメモリ量や、中間出力を転送する際に用いる最適なメモリ量等を生成してもよい。ここでいう最適なメモリ量とは、例えば、当該ジョブの実行時間をできるだけ短くするようなメモリ量である。
【００３８】
この場合、設定値生成モデル１２２として、当該ジョブの中間出力を加工する際に用いる最適なメモリ量や、中間出力を転送する際に用いる最適なメモリ量を求めるための関数ｆを用いる。この関数ｆのパラメータは、例えば、当該ジョブへの入力データ量Ｄや、各タスク実行部１３２（つまり、タスク実行部１３２によりデータ処理を行う計算機）間を接続するネットワークにおける単位時間あたりのネットワーク転送速度ｖｔや、各タスク実行部１３２で用いることができる最大メモリ量の値である。なお、当該ジョブへの入力データ量Ｄは、実行時情報取得部１２１により取得された値を用いる。また、ネットワーク転送速度ｖｔや各タスク実行部１３２で用いることができる最大メモリ量の値は、分散処理基盤部１３０等から事前に取得されるものとする。
【００３９】
このように分散処理装置１０は、ジョブの設定値として、当該ジョブにおける中間出力を加工する際に用いる最適なメモリ量や、中間出力を転送する際に用いる最適なメモリ量等を与える。これにより、当該ジョブにおける中間出力を加工するためのメモリ量が大きすぎることにより、加工後の中間出力を転送するためのメモリ量が不足し、当該ジョブの実行時間が長くなってしまうことを避けることができる。また、当該ジョブにおける中間出力を加工するためのメモリ量が小さすぎることにより、加工自体に時間がかかり当該ジョブの実行時間が長くなってしまうことを避けることができる。
【００４０】
（設定値生成モデルの例  その２）
さらに、設定値生成処理部１２３は、当該ジョブの設定値として、当該ジョブの中間出力データを転送する際、この中間出力データを圧縮してから転送するか否かを示した値を生成してもよい。
【００４１】
この場合、設定値生成処理部１２３が用いる設定値生成モデル１２２は、例えば、当該ジョブの中間出力データを圧縮する場合の転送時間（解凍時間も含む）と、圧縮しない場合の転送時間とを計算し、より転送時間の短い方（中間出力データを圧縮するかしないか）を採用するモデルである。つまり、設定値生成モデル１２２は、当該ジョブの中間出力データを圧縮する場合の転送時間の方が短かったとき、中間出力データを圧縮すると判断するが、圧縮しない場合の転送時間の方が短かったとき、当該ジョブにおいて中間出力データを圧縮しないと判断するモデルである。
【００４２】
この場合、設定値生成処理部１２３は、実行時情報として、当該ジョブへの入力データ量Ｄおよび当該ジョブにおいて用いられるユーザ関数ｆを用いる。そして、設定値生成処理部１２３が用いる設定値生成モデル１２２は、入力データ量Ｄに対する当該ユーザ関数ｆによる処理の実行により得られる中間出力データの転送にあたり、圧縮しない中間出力データのデータ転送時間である非圧縮時転送時間と、中間出力データを圧縮した場合の中間出力データの圧縮および解凍処理に要する時間と圧縮後の中間出力データの転送時間の合計値である圧縮時転送時間との長短を比較し、圧縮転送時間に対し、非圧縮転送時間が短い場合は圧縮しない、非圧縮転送時間が長い場合は圧縮する、と判断するモデルである。また、設定値生成処理部１２３により生成される当該ジョブの設定値は、この設定値生成モデル１２２により判断された、当該ジョブにおいて中間出力データを圧縮するか否かを示す値である。
【００４３】
圧縮しない場合の転送時間は、例えば、以下の式（２）により推定される。
【００４４】
【数２】
2014215764.tif 000004
【００４５】
式（２）におけるｖｔは、ネットワーク転送速度であり、ｇ(Ｄ，ｆ)は、入力データ量Ｄをユーザ関数ｆで処理した際の出力データ量（つまり、中間出力データ量）である。
【００４６】
圧縮する場合の転送時間は、例えば、以下の式（３）により推定される。
【００４７】
【数３】
2014215764.tif 000005
【００４８】
なお、前記したとおり、式（２）および式（３）における当該ジョブへの入力データ量Ｄとユーザ関数ｆは、実行時情報取得部１２１により取得される。また、ネットワーク転送速度ｖｔ、データ圧縮速度ｖｃ、および、データ解凍速度ｖｄは、分散処理基盤部１３０等から事前に取得される値とする。
【００４９】
このように分散処理装置１０は、ジョブの設定値として、当該ジョブにおいて中間出力を圧縮するか否かを設定するため、当該ジョブの実行時間をできるだけ短くすることができる。
【００５０】
（モデル更新部）
なお、設定値生成部１２０は、生成した設定値によるジョブの統計情報を取得し、その統計情報をもとに設定値生成モデル１２２を修正（更新）するようにしてもよい。このような設定値生成部１２０は、図１の破線で示すモデル更新部１２４をさらに備える。また、実行時情報取得部１２１は、当該ジョブの実行時情報として、当該ジョブの統計情報を取得する。ここで取得する統計情報とは、当該ジョブの実行時間等である。
【００５１】
モデル更新部１２４は、実行時情報取得部１２１等により、各ジョブの統計情報を取得し、また、設定値生成処理部１２３等から、ジョブに設定された設定値を取得する。そして、モデル更新部１２４は、取得したジョブの統計情報と、設定値とを用いて、設定値生成モデル１２２の関数ｆを修正する。その後、設定値生成処理部１２３は、修正された設定値生成モデル１２２の関数ｆを用いてジョブの設定値を生成し、分散処理基盤部１３０へ出力する。そして、モデル更新部１２４は、修正された設定値生成モデル１２２に基づく設定値と、その設定値によるジョブの統計情報とを用いて、設定値生成モデル１２２の関数ｆをさらに修正する。モデル更新部１２４が、このような処理を繰り返すことで、設定値生成モデル１２２を適切な設定値を計算するようなモデルにすることができる。
【００５２】
（設定値生成装置）
なお、前記した実施の形態において、設定値生成部１２０は分散処理装置１０内の構成としたが、これに限定されない。例えば、設定値生成部１２０を分散処理装置１０とは別個の装置として実現し、設定値生成部１２０は、ネットワーク経由で、分散処理装置１０から各ジョブの実行時情報を取得し、分散処理装置１０へ各ジョブの設定値を出力するようにしてもよい。
【００５３】
（ジョブの設定値の例）
前記した実施の形態におけるジョブの設定値は、リソースを最大限利用してジョブの実行時間を最小化することを要件とした、当該ジョブを構成するタスク１つあたりの最大データ量Ｍ以外にも以下の設定値であってもよい。例えば、分散処理装置１０において複数の要求処理（クエリ等）が入力されたとき、タスク実行部１３２において、同時に複数のジョブを実行する場合もある。このような場合、当該ジョブの設定値として、各要求処理はユーザが定めた時間内で処理の実行を完了し、かつ、要求処理に基づく処理の実行開始からすべての要求処理の実行完了までの時間をできるだけ短くするためには、タスク実行部１３２それぞれが用いるＣＰＵやメモリ量等の消費リソースを最小化することが好ましい。よって、このような場合のジョブの設定値として、当該ジョブの実行に係るタスクを実行するタスク実行部１３２の数や当該タスクに割り当てるメモリ量、当該タスク実行部１３２で実行するタスク数等が考えられる。さらに、各タスク実行部１３２の総消費電力を最小化することを要件とする場合におけるジョブの設定値として、例えば、計算リソースであるタスク実行部１３２の数等が考えられる。
【００５４】
（プログラム）
前記した分散処理装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラム（分散処理プログラム）で実現することもできる。この場合、コンピュータがプログラムを実行することにより、前記した実施の形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータで読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより前記した実施形態と同様の処理を実現してもよい。以下に、分散処理装置１０と同様の機能を実現するプログラムを実行するコンピュータの一例を説明する。
【００５５】
図６は、プログラムを実行するコンピュータ１０００を示す図である。図６に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００５６】
メモリ１０１０は、図６に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図６に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図６に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。
【００５７】
ここで、図６に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記のプログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【００５８】
また、上記実施の形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、前記したインタフェース提供部１１０、分散処理基盤部１３０、実行時情報取得部１２１、設定値生成処理部１２３、および、モデル更新部１２４の機能を実現する。
【００５９】
なお、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６０】
１０    分散処理装置
４０    ノード
１１０  インタフェース提供部
１１１  変換部
１１２  実行部
１２０  設定値生成部
１２１  実行時情報取得部
１２２  設定値生成モデル
１２３  設定値生成処理部
１２４  モデル更新部
１３０  分散処理基盤部
１３２  タスク実行部
【図１】
2014215764.tif 000006
【図２】
2014215764.tif 000007
【図３】
2014215764.tif 000008
【図４】
2014215764.tif 000009
【図５】
2014215764.tif 000010
【図６】
2014215764.tif 000011