"分散並列処理において、複数の計算ノードと、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、該複数の計算ノードから実行結果を入力して受け取り計算を行う資源管理ノードを有する集約処理システムであって、前記資源管理ノードは、ジョブの実行ファイルから集約処理を検出し、該集約処理を行うタスクを抽出する集約処理検出手段と、前記タスクの入力データを有する計算ノードに対して該入力データのハッシュ値の計算を要求し、実行ファイルと共に取得するハッシュ値取得手段と、前記ハッシュ値と実行ファイルを検索キーとして過去の計算結果が格納されている計算結果記憶手段を検索し、該当する計算結果がある場合は、該計算結果を保持する計算ノードで処理が終了したと見做して計算処理をスキップし、該当する計算結果がない場合は、タスクを実行する計算ノードを決定し、タスクを実行させるタスク管理手段と、ジョブが終了すると、前記検索キーに基づいて前記計算結果記憶手段を検索し、計算結果を保持している計算ノードを特定し、該計算ノードから取得した計算結果を取得して、該計算ノードと関連付けて該計算結果記憶手段に格納する計算結果格納手段と、を有し、前記計算ノードは、前記資源管理ノードからの要求により、前記入力データのハッシュ値を求めるハッシュ値計算手段と、前記資源管理ノードから割り当てられた前記タスクを実行し、該タスクの計算結果を実行ファイル、入力データを関連付けて一時記憶手段に格納するタスク実行手段と、前記ジョブが終了した時点で、前記資源管理ノードから要求があると、前記一時記憶手段から計算結果を読み出して該資源管理ノードに転送するデータ転送手段と、を有することを特徴とする集約処理システム。前記計算ノードは、前記資源管理ノードから集約処理の入力要求があると、当該計算ノードと同じ物理計算機内のデータノードから計算結果を取得し、集約処理の計算結果があることを該資源管理ノードに通知する手段を含み、前記資源管理ノードは、前記計算ノードから計算結果があることが通知されると、集約処理が終了したものと判断する手段を含む請求項1記載の集約処理システム。前記資源管理ノードは、前記タスクを実行した計算ノード以外の計算ノードの計算結果を前記データノードに転送するデータ格納手段を有し、前記計算ノードと同じ物理計算機内のデータノードは、データを格納するデータ記憶手段と、前記資源管理ノードから転送された計算結果を前記データ記憶手段に格納する手段と、を有する請求項1記載の集約処理システム。分散並列処理において、複数の計算ノードと、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、該複数の計算ノードから実行結果を入力して受け取り計算を行う資源管理ノードを有するシステムにおける集約処理方法であって、前記資源管理ノードの集約処理検出手段が、ジョブの実行ファイルから集約処理を検出し、該集約処理を行うタスクを抽出する集約処理検出ステップと、前記資源管理ノードのハッシュ値取得手段が、前記タスクの入力データを有する計算ノードに対して該入力データのハッシュ値の計算を要求するハッシュ値要求ステップと、前記計算ノードのハッシュ値計算手段が、前記入力データのハッシュ値を求めるハッシュ値計算ステップと、前記資源管理ノードの前記ハッシュ値取得手段が、前記計算ノードから取得したハッシュ値を実行ファイルと共に取得するハッシュ値取得ステップと、前記資源管理ノードのタスク管理手段が、前記ハッシュ値と実行ファイルを検索キーとして過去の計算結果が格納されている計算結果記憶手段を検索し、該当する計算結果がある場合は、該計算結果を保持する計算ノードで処理が終了したと見做して計算処理をスキップし、該当する計算結果がない場合は、タスクを実行する計算ノードを決定し、タスクを実行させるタスク管理ステップと、前記計算ノードのタスク実行手段が、前記資源管理ノードから割り当てられた前記タスクを実行し、該タスクの計算結果を実行ファイル、入力データを関連付けて一時記憶手段に格納するタスク実行ステップと、前記資源管理ノードの計算結果格納手段が、ジョブが終了すると、前記検索キーに基づいて前記計算結果記憶手段を検索し、計算結果を保持している計算ノードを特定し、該計算ノードに計算結果を要求する計算結果要求ステップと、前記計算ノードのデータ転送手段が、前記一時記憶手段から計算結果を読み出して前記資源管理ノードに転送するデータ転送ステップと、前記資源管理ノードの計算結果格納手段が、前記計算ノードから取得した計算結果を取得して、該計算ノードと関連付けて該計算結果記憶手段に格納する計算結果格納ステップと、を行うことを特徴とする集約処理方法。前記計算ノードにおいて、前記資源管理ノードから集約処理の入力要求があると、当該計算ノードと同じ物理計算機内のデータノードから計算結果を取得し、集約処理の計算結果があることを該資源管理ノードに通知し、前記資源管理ノードにおいて、前記計算ノードから計算結果があることが通知されると、集約処理が終了したものと判断する請求項4記載の集約処理方法。前記資源管理ノードにおいて、前記タスクを実行した計算ノード以外の計算ノードの計算結果を前記データノードに転送し、前記計算ノードと同じ物理計算機内のデータノードにおいて、前記資源管理ノードから転送された計算結果をデータ記憶手段に格納する請求項4記載の集約処理方法。分散並列処理において、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、複数の計算ノードから実行結果を入力して受け取り計算を行う資源管理ノードであって、ジョブの実行ファイルから集約処理を検出し、該集約処理を行うタスクを抽出する集約処理検出手段と、前記タスクの入力データを有する計算ノードに対して該入力データのハッシュ値の計算を要求し、実行ファイルと共に取得するハッシュ値取得手段と、前記ハッシュ値と実行ファイルを検索キーとして過去の計算結果が格納されている計算結果記憶手段を検索し、該当する計算結果がある場合は、該計算結果を保持する計算ノードで処理が終了したと見做して計算処理をスキップし、該当する計算結果がない場合は、タスクを実行する計算ノードを決定し、タスクを実行させるタスク管理手段と、ジョブが終了すると、前記検索キーに基づいて前記計算結果記憶手段を検索し、計算結果を保持している計算ノードを特定し、該計算ノードから取得した計算結果を取得して、該計算ノードと関連付けて該計算結果記憶手段に格納する計算結果格納手段と、前記タスクを実行した計算ノード以外の計算ノードの計算結果を前記データノードに転送するデータ格納手段と、を有することを特徴とする資源管理ノード。分散並列処理において、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、資源管理ノードからのタスク割り当てによりタスクを実行する計算ノードであって、前記資源管理ノードからの要求により、前記入力データのハッシュ値を求めるハッシュ値計算手段と、前記資源管理ノードから割り当てられた前記タスクを実行し、該タスクの計算結果を実行ファイル、入力データを関連付けて一時記憶手段に格納するタスク実行手段と、前記ジョブが終了した時点で、前記資源管理ノードから要求があると、前記一時記憶手段から計算結果を読み出して該資源管理ノードに転送するデータ転送手段と、を有することを特徴とする計算ノード。コンピュータを、請求項7記載の資源管理ノードの各手段として機能させるための集約処理プログラム。コンピュータを、請求項8記載の計算ノードの各手段として機能させるための集約処理プログラム。しかしながら、上記特許文献1,2,3、非特許文献1,2のシステムのよい箇所を組み合わせたシステムを構築した場合でも、以下のような問題がある。過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合であっても、複数の計算ノードから入力を受け取り、計算を行うような処理の実行時間は以前の実行時間と同程度である。その原因としては、入力データが過去と一致している場合であっても、入力データを計算ノードに再転送し、再計算を行う必要があるためである。また、ネットワークの入出力、ディスクの入出力が特定の計算ノードに集中し、輻輳が発生しうるという問題がある。本発明は、上記の点に鑑みなされたもので、ジョブ内に複数回実行される集約処理が含まれている場合、ジョブを高速に処理すると共に、過去に行ったことがある集約処理を効率的に実行することが可能な分散並列処理における集約システム及び方法及び資源管理ノード及び計算ノード及び集約処理プログラムを提供することを目的とする。上記の課題を解決するため、本発明請求項1は、分散並列処理において、複数の計算ノードと、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、該複数の計算ノードから実行結果を入力して受け取り計算を行う資源管理ノードを有する集約処理システムであって、前記資源管理ノードは、ジョブの実行ファイルから集約処理を検出し、該集約処理を行うタスクを抽出する集約処理検出手段と、前記タスクの入力データを有する計算ノードに対して該入力データのハッシュ値の計算を要求し、実行ファイルと共に取得するハッシュ値取得手段と、前記ハッシュ値と実行ファイルを検索キーとして過去の計算結果が格納されている計算結果記憶手段を検索し、該当する計算結果がある場合は、該計算結果を保持する計算ノードで処理が終了したと見做して計算処理をスキップし、該当する計算結果がない場合は、タスクを実行する計算ノードを決定し、タスクを実行させるタスク管理手段と、ジョブが終了すると、前記検索キーに基づいて前記計算結果記憶手段を検索し、計算結果を保持している計算ノードを特定し、該計算ノードから取得した計算結果を取得して、該計算ノードと関連付けて該計算結果記憶手段に格納する計算結果格納手段と、を有し、前記計算ノードは、前記資源管理ノードからの要求により、前記入力データのハッシュ値を求めるハッシュ値計算手段と、前記資源管理ノードから割り当てられた前記タスクを実行し、該タスクの計算結果を実行ファイル、入力データを関連付けて一時記憶手段に格納するタスク実行手段と、前記ジョブが終了した時点で、前記資源管理ノードから要求があると、前記一時記憶手段から計算結果を読み出して該資源管理ノードに転送するデータ転送手段と、を有することを特徴とする。また、本発明請求項2は、前記計算ノードにおいて、前記資源管理ノードから集約処理の入力要求があると、当該計算ノードと同じ物理計算機内のデータノードから計算結果を取得し、集約処理の計算結果があることを該資源管理ノードに通知する手段を含み、前記資源管理ノードにおいて、前記計算ノードから計算結果があることが通知されると、集約処理が終了したものと判断する手段を含む。また、本発明請求項3は、前記資源管理ノードにおいて、前記タスクを実行した計算ノード以外の計算ノードの計算結果を前記データノードに転送するデータ格納手段を有し、前記計算ノードと同じ物理計算機内のデータノードは、データを格納するデータ記憶手段と、前記資源管理ノードから転送された計算結果を前記データ記憶手段に格納する手段と、を有する。上記のように、過去に行ったジョブの入力一部を変更し、再度同じジョブを行う場合に、複数の計算ノードから実行結果を入力として受け取り計算を行うような集約処理を効率的に実行することができる。これにより、1つのジョブの中に集約処理が複数存在する場合において、ある集約処理の入力ファイルのキー入力ファイルのハッシュ値バイナリによる検索結果が集約処理の入力ファイル全てに対してヒットした場合は計算をスキップすることができる。また、集約処理を行う計算ノードにおけるネットワークの入出力回数及びディスクの入出力回数を削減することができる。以下図面と共に、本発明の実施の形態を説明する。図6は、本発明の一実施の形態におけるシステム構成を示す。同図に示すシステムは、資源管理ノード10と複数の物理計算機20から構成される。資源管理ノード10は、集約処理検出部11、タスク管理部12、検索部13、ノード管理DB14から構成され、タスク管理部12、検索部13には計算結果記憶部1が接続されている。計算結果記憶部1は、計算ノードに対応する計算結果、タスク実行に必要な入力データのハッシュ値、実行ファイルの組が格納され、ローカルディスクまたはメモリとして保持される。本実施の形態では、計算結果記憶部1はローカルディスク外部記憶装置として説明する。また、ノード管理DB14には、物理計算機毎に計算ノードの識別情報及び当該計算ノードが有するタスクの入力データの識別情報、及び、データノードの識別情報を格納している。物理計算機20は、実際にタスクを実行する計算ノード21、データを保存するデータノード22を有する。計算ノード21は、資源管理ノード10からの要求によりハッシュ値を計算するハッシュ計算部211を有し、計算結果一時記憶部2と接続されている。当該計算結果一時記憶部2は、ローカルディスクまたはメモリとして保持される。本実施の形態ではローカルディスク外部記憶装置として説明する。データノードは、データ記憶部221を有する。計算ノード21では、集約処理を行う。集約処理とは、他の計算ノードから転送された複数の入力ファイルを取得し、全部揃ったら計算を行い、計算結果を計算結果一時記憶部2に格納する。図7は、本発明の一実施の形態における概略フローチャートである。ステップ310資源管理ノード10の集約処理検出部11は、入力されたジョブから集約処理を検出する。当該処理の詳細は、図8にて後述する。ステップ320資源管理ノード10のタスク管理部12は、タスクを計算ノード21に割り当てる。当該処理の詳細は、図9にて後述する。ステップ330計算ノード21は、割り当てられたタスクを実行する。ステップ340計算ノード221は、その計算結果を、実行ファイル、入力データと関連付けて計算結果一時記憶部2に格納すると共に、資源管理ノード10に送出する。ジョブが終了した場合にはステップ350に移行し、終了していない場合はステップ320に移行する。ステップ350資源管理ノード10は、ジョブが終了すると、中間結果を再利用できるように、計算結果記憶部1のデータを永続化する。詳細な処理については図12にて後述する。次に、上記のステップ310の集約処理の検出処理について説明する。図8は、本発明の一実施の形態における図7のS310の詳細化フローチャートである。ステップ410資源管理ノード10の集約処理検出部11は、特許文献2の手法により、ジョブの実行ファイルから集約処理を検出する。当該特許文献2の手法では、プログラマによって記述された動作フローがプログラムに含まれており、動作フローの記述のうち、複数の入力をとる記述は限られているため、どのタスクが集約処理であるのかを判定することができる。ステップ420集約処理検出部11は、集約処理を行うタスクをマークし、メモリ図示せずに格納する。なお、本実施の形態では、当該マークが付与されたタスクはメモリに保存するものとして説明するが、ローカルディスクに保存してもよい。なお、当該マークは、資源管理ノード10がタスクを計算ノード21に割り当てる際に、そのタスクが集約処理であるかどうかの判断に用いられる。次に、上記のステップ320のタスク割当処理について説明する。図9は、本発明の一実施の形態における図7のS320の詳細化のフローチャートである。ステップ610資源管理ノード10のタスク管理部12は、非特許文献2の手法を用いて次に実行すべきタスクを決定する。ステップ620タスク管理部12は、ステップ610で選択したタスクに基づいて、ノード管理DB14から当該タスクの入力データを保持している計算ノードを検索し、当該計算ノード21に対して、入力データのハッシュ値を計算するように要求する。これにより、当該計算ノード21は、ハッシュ計算部211において、入力データのハッシュ値を計算し、資源管理ノード10に返却する。ステップ630資源管理ノード10の検索部13は、ステップ620で計算ノード21から取得した入力データのハッシュ値と実行ファイルをキーとして、計算結果記憶部1から過去の計算結果の有無と場所を検索する。当該キーに該当する計算結果が計算結果記憶部1に存在するかを判定し、存在する場合は、ステップ640に移行し、存在しない場合はステップ650に移行する。ステップ640タスク管理部12は、計算結果が計算結果記憶部1に存在する場合は、計算結果を保持する計算ノード21で処理が終了したものと見做し、計算処理をスキップし、ステップ610の処理に戻る。詳細は図10にて後述する。ステップ650計算結果が計算結果記憶部1に存在しない場合は、非特許文献2に基づいてタスクを実行する計算ノードを決定し、処理を終了する。次に、上記の図9のステップ640の計算処理をスキップする場合の処理について説明する。図10は、本発明の一実施の形態における図9のS640の詳細化のフローチャートである。ステップ710タスク管理部12は、計算ノード21に対して、今から実行するタスクの入力、実行ファイルから集約処理の入力集約処理の入力ファイルの集合を求める。集約処理の入力になるような計算結果が見つかった場合はステップ720に移行し、見つからない場合はステップ740に移行する。詳細な処理については図11で後述する。ステップ720計算ノード21は、ステップ710で求めた計算結果を、計算結果を保持しているデータノード22に要求する。これにより、データノード22は、計算結果をデータ記憶部221から集約処理を実行する計算ノード21へのコピーを開始する。但し、既に転送中の計算結果は転送しない。計算ノード21は、複数の計算ノードから実行結果を入力として受け取り、集約処理に必要な入力が計算結果一時記憶部2にキャッシュされている計算結果にヒットしたかを判定し、ヒットした場合には、ステップ730に移行し、ヒットしない場合は当該処理を終了する。ステップ730計算ノード21は、ヒットした場合には、ヒットしたことをタスク管理部12に通知し、タスク管理部12は、ステップ720で開始したコピーを停止し、計算結果を保持している計算ノード21で集約処理が終了したと見做し処理を終了する。ステップ740タスク管理部12は、ステップ710の処理において、集約処理の入力になるような計算結果が見つからない場合は、非特許文献2の手法に基づいて、タスクを実行する計算ノードを決定する。上記のステップ710の処理について説明する。図11は、本発明の一実施の形態における図10のS710の詳細化のフローチャートである。ステップ810タスク管理部12は、資源管理ノード10が実行するタスクの入力データを保持するデータノード22に対して入力データのハッシュ値を問い合わせる。ステップ820データノード22は、ハッシュ計算部222においてハッシュ値を計算し、タスク管理部12に返却する。ステップ830資源管理ノード10の検索部13は、入力データのハッシュ値、タスクに対する実行ファイルをキーとして計算結果記憶部1を検索し、対応する計算結果を取得する。キーに対応する計算結果が存在する場合、または、キーに対応する計算結果が存在せず、次の処理が集約処理である場合はステップ840に移行する。なお、集約処理であるか否かは、ステップ420で付与したマークがあるか否かで判定する。キーに対応する計算結果が存在せず、次の処理が存在しない場合、または、キーに対応する計算結果が存在し、かつ、次の処理が集約処理ではなく、次の処理が存在しない場合はステップ850に移行する。ステップ840タスク管理部12は、ステップ830で取得した計算結果が見つかったと見做し、処理を終了する。ステップ850タスク管理部12は、検索結果が見つからなかったと見做し、処理を終了する。次に、図7のステップ350の処理について説明する。図12は、本発明の一実施の形態における図7のS350の詳細化のフローチャートである。ステップ1010資源管理ノード10の検索部13は、計算結果記憶部1に保存した検索キー入力データのハッシュ値と実行ファイルに基づいて、ノード管理DB14を検索し、当該検索キーに対応する計算結果を保持している計算ノードを求める。ステップ1020タスク管理部12は、集約処理を行ったノードの入力データのキー入力データ群のハッシュ値と実行ファイルと実行結果を保持している計算ノード21とを関連付け、計算結果記憶部1に保存する。ステップ1030集約処理以外の処理を行った計算ノードにある計算結果を、当該計算ノードと同じ物理計算機上で動作しているデータノードのデータ記憶部221に保存する。図13本発明の一実施の形態における全体動作のシーケンスチャートである。同図におけるステップ番号は前述のフローチャートのステップ番号に対応する。上記のような処理を行うことにより、過去に行ったジョブの入力の一部を変更し、再度同じジョブを行う場合に、複数の計算ノードから実行結果を入力して受け取り計算を行うような処理集約処理を効率よく実行することができる。これにより、入力データが時系列に従って増えていくような処理を含む計算を高速に行うことができ、1検索エンジンの更新が高速に行えるようになる;2ユーザへのレコメンデーションが高速に更新できるようになる;3ログ解析を高速に行うことができる。なお、上記の資源管理ノード及び計算ノードの動作をプログラムとして構築し、資源管理ノード、計算ノードとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更応用が可能である。"