"1つのキーと値の組から一つ以上のキーと値の組を生成するマップMap手段と、キーが同じ複数のキーと値の組から1つないしは複数のキーと値の組を生成するリデュースReduce手段、及び、与えられた教師データを格納する分散ファイル記憶手段を有し、大規模なデータを並列分散処理するためのデータ分析機械学習装置であって、前記マップ手段及び前記リデュース手段は、入力されたデータの処理中に、該マップ手段及び該リデュース手段で利用するパラメータに関する情報として、該データからパラメータの値、利用位置、利用元関数を検出し、前記分散ファイル記憶手段に格納する検出手段を有し、ジョブに与えられたパラメータを参照し、前記分散ファイル記憶手段に格納されている前記パラメータに関する情報と照合し、所定の条件を満たす場合に、中間データをキャッシュとして該分散ファイル記憶手段、または、ローカルの記憶手段に格納する中間データ格納手段と、ジョブに与えられたパラメータを参照し、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、前記リデュース手段のみを実行させるスキップ処理手段と、を有し、前記リデュース手段は、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、該分散ファイル記憶手段、または、該ローカルの記憶手段から該中間データを読み込んで処理を行う手段を含むことを特徴とするデータ分析機械学習装置。前記検出手段は、前記マップ手段及び前記リデュース手段のクラス名、予め与えられているパラメータ名と値の該マップ手段及び該リデュース手段の処理中における利用順序、利用される関数を検出する手段を含む請求項1記載のデータ分析機械学習装置。前記中間データ格納手段は、前記マップ手段の処理がパラメータに依存する、または、該パラメータの利用頻度が所定の閾値を超えている、または、ユーザにより保存することが指定されている場合に、前記中間データをキャッシュとして格納する手段を含む請求項1記載のデータ分析機械学習装置。1つのキーと値の組から一つ以上のキーと値の組を生成するマップMap手段と、キーが同じ複数のキーと値の組から1つないしは複数のキーと値の組を生成するリデュースReduce手段、及び、与えられた教師データを格納する分散ファイル記憶手段を有し、大規模なデータを並列分散処理する装置におけるデータ分析機械学習方法であって、前記マップ手段及び前記リデュース手段が、入力されたデータの処理中に、該マップ手段及び該リデュース手段で利用するパラメータに関する情報として、該データからパラメータの値、利用位置、利用元関数を検出し、前記分散ファイル記憶手段に格納する検出ステップと、中間データ格納手段が、ジョブに与えられたパラメータを参照し、前記分散ファイル記憶手段に格納されている前記パラメータに関する情報と照合し、所定の条件を満たす場合に、中間データをキャッシュとして該分散ファイル記憶手段、または、ローカルの記憶手段に格納する中間データ格納ステップと、スキップ処理手段が、ジョブに与えられたパラメータを参照し、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、前記リデュース手段のみを実行させるスキップ処理ステップと、前記リデュース手段が、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、該分散ファイル記憶手段、または、該ローカルの記憶手段から該中間データを読み込んで処理を行うステップと、を行うことを特徴とするデータ分析機械学習方法。前記検出ステップにおいて、前記マップ手段及び前記リデュース手段のクラス名、予め与えられているパラメータ名と値の該マップ手段及び該リデュース手段の処理中における利用順序、利用される関数を検出する請求項4記載のデータ分析機械学習方法。前記中間データ格納ステップにおいて、前記マップ手段の処理がパラメータに依存する、または、該パラメータの利用頻度が所定の閾値を超えている、または、ユーザにより保存することが指定されている場合に、前記中間データをキャッシュとして格納する請求項4記載のデータ分析機械学習方法。請求項1乃至3のいずれか1項に記載のデータ分析機械学習装置を構成する各手段としてコンピュータを機能させるためのデータ分析機械学習プログラム。機械学習処理は、事前に機械学習アルゴリズムに与える設定値次第で得られる処理結果の精度が大きく異なる場合があるため、設定値を調整しながら処理を複数回繰り返さなければ最良の結果を得ることができない。特に、MapReduceを利用して大規模なデータを対象とした処理を行う際に、例えば、機械学習ライブラリであるMahoutでは設定値の調整があまり考慮されないため、良い結果を得るために長時間に及ぶ処理を複数回行うことになり、非常に効率が悪い。上記の非特許文献1の技術は、複数回の処理において、各処理のデータ読み込み部分の共有化により、中間データ削減によるShuffleコストは削減できるが、以前の処理の中間データを再利用することによる大幅な処理量の削減ができないという問題がある。本発明は、上記の点に鑑みなされたもので、過去の処理において利用した中間データを再利用できないという問題を解決し、大幅な処理量の削減が可能なデータ分析及び機械学習処理装置及び方法及びプログラムを提供することを目的とする。上記の課題を解決するために、本発明請求項1は、1つのキーと値の組から一つ以上のキーと値の組を生成するマップMap手段と、キーが同じ複数のキーと値の組から1つないしは複数のキーと値の組を生成するリデュースReduce手段、及び、与えられた教師データを格納する分散ファイル記憶手段を有し、大規模なデータを並列分散処理するためのデータ分析機械学習装置であって、前記マップ手段及び前記リデュース手段は、入力されたデータの処理中に、該マップ手段及び該リデュース手段で利用するパラメータに関する情報として、該データからパラメータの値、利用位置、利用元関数を検出し、前記分散ファイル記憶手段に格納する検出手段を有し、ジョブに与えられたパラメータを参照し、前記分散ファイル記憶手段に格納されている前記パラメータに関する情報と照合し、所定の条件を満たす場合に、中間データをキャッシュとして該分散ファイル記憶手段、または、ローカルの記憶手段に格納する中間データ格納手段と、ジョブに与えられたパラメータを参照し、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、前記リデュース手段のみを実行させるスキップ処理手段と、を有し、前記リデュース手段は、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、該分散ファイル記憶手段、または、該ローカルの記憶手段から該中間データを読み込んで処理を行う手段を含む。また、本発明請求項2は、請求項1の前記検出手段に、前記マップ手段及び前記リデュース手段のクラス名、予め与えられているパラメータ名と値の該マップ手段及び該リデュース手段の処理中における利用順序、利用される関数を検出する手段を含む。また、本発明請求項3は、請求項1の前記中間データ格納手段に、前記マップ手段の処理がパラメータに依存する、または、該パラメータの利用頻度が所定の閾値を超えている、または、ユーザにより保存することが指定されている場合に、前記中間データをキャッシュとして格納する手段を含む。本発明請求項4は、1つのキーと値の組から一つ以上のキーと値の組を生成するマップMap手段と、キーが同じ複数のキーと値の組から1つないしは複数のキーと値の組を生成するリデュースReduce手段、及び、与えられた教師データを格納する分散ファイル記憶手段を有し、大規模なデータを並列分散処理する装置におけるデータ分析機械学習方法であって、前記マップ手段及び前記リデュース手段が、入力されたデータの処理中に、該マップ手段及び該リデュース手段で利用するパラメータに関する情報として、該データからパラメータの値、利用位置、利用元関数を検出し、前記分散ファイル記憶手段に格納する検出ステップと、中間データ格納手段が、ジョブに与えられたパラメータを参照し、前記分散ファイル記憶手段に格納されている前記パラメータに関する情報と照合し、所定の条件を満たす場合に、中間データをキャッシュとして該分散ファイル記憶手段、または、ローカルの記憶手段に格納する中間データ格納ステップと、スキップ処理手段が、ジョブに与えられたパラメータを参照し、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、前記リデュース手段のみを実行させるスキップ処理ステップと、前記リデュース手段が、前記中間データが前記分散ファイル記憶手段、または、前記ローカルの記憶手段に格納されている場合には、該分散ファイル記憶手段、または、該ローカルの記憶手段から該中間データを読み込んで処理を行うステップと、を行う。また、本発明請求項5は、請求項4の前記検出ステップにおいて、前記マップ手段及び前記リデュース手段のクラス名、予め与えられているパラメータ名と値の該マップ手段及び該リデュース手段の処理中における利用順序、利用される関数を検出する。また、本発明請求項6は、請求項4の前記中間データ格納ステップにおいて、前記マップ手段の処理がパラメータに依存する、または、該パラメータの利用頻度が所定の閾値を超えている、または、ユーザにより保存することが指定されている場合に、前記中間データをキャッシュとして格納する。本発明請求項7は、請求項1乃至3のいずれか1項に記載のデータ分析機械学習装置を構成する各手段としてコンピュータを機能させるためのデータ分析機械学習プログラムである。上記のように、本発明では、MapReduce処理中に、パラメータの利用順序、利用関数を検知し、その情報を活用して中間データをキャッシュとして残すかを判定し、所定の条件を満たした場合には中間データを分散ファイルシステムに格納しておき、以降の処理においてキャッシュした中間データを再利用することで、マップMap処理、及び、シャッフルShuffle処理をスキップして、リデュースReduce処理のみを開始することにより、処理量を削減することができる。以下図面と共に、本発明の実施の形態を説明する。[第1の実施の形態]図1は、本発明の第1の実施の形態におけるシステム構成を示す。本発明の構成は、図23と同様に、ネットワークによって相互に接続された複数のコンピュータを用い、図23と同様の流れを処理が行われる分散処理フレームワークを行うシステムである。本実施の形態では、MapReduce処理において、集計用データ作成部Mapper20、集計部Reducer40においてパラメータに関する情報を検知し、保存する。それ以後、制御部Controller50において、MapReduce処理の開始時に処理に利用するMapperReducerパラメータと、保存した情報とを比較して、中間データをキャッシュとして分散ファイルシステム10に保存するか否かを、ユーザの指定等により判定する。さらに、それ以降の処理において、分散ファイルシステム10に保存されたキャッシュを利用するか否かを判定し、中間データを再利用することで、MapShuffle処理をスキップする。以下に、動作の詳細を説明する。図2は、本発明の第1の実施の形態における全体動作のフローチャートである。ステップ300本ステップでは、図24と同様のMapReduce処理を行うが、その過程でMapper20やReducer40が利用するパラメータの値、利用位置、利用元関数を検知し、分散ファイルシステム10に保存する。ステップ310図24に示すMapReduce処理の過程において、制御部50が、ジョブに与えられたパラメータを参照し、ステップ300で得られたパラメータに関する情報と照合することで、中間データをキャッシュとして保存するべきか判定し、保存する場合は、中間データを分散ファイルシステム10またはローカルに保存する。ステップ320図24に示すMapReduce処理の過程において、Controller50は、ジョブに与えられたパラメータを参照し、ステップ310で得られた中間データのキャッシュを再利用可能かどうかを判定して、可能な場合はキャッシュを再利用することによってMap処理とShuffle処理をスキップし、Reducer40のReduce処理のみを行う。次に、上記のステップ310の詳細な動作を説明する。図3は、本発明の第1の実施の形態における中間データを保存するMapReduceを利用した処理のフローチャートである。ステップ600図24と同様に、MapReduceジョブを生成する。ステップ610図24と同様に、ジョブにパラメータを与える。ステップ620Controller50は、ステップ610の出力であるジョブが保持するパラメータを元に、ステップ300の出力である分散ファイルシステム10に格納されたパラメータに関する情報を参照し、当該ジョブにおいて中間データをキャッシュとして保存するか否かを判定し、保存する場合は保存フラグ真を示すパラメータを新たに追加する。ステップ630MapReduce処理の過程で、Reduce処理を行う直前に、中間データをキャッシュとして分散ファイルシステム10に保存する。ステップ640図24のステップ130と同様の処理を行う。次に、上記のステップ620の処理について詳細に説明する。図4は、本発明の第1の実施の形態における中間データ保存判定の処理フローチャートである。ステップ700Controller50は、Mapperクラス名、パラメータに関する情報が与えられると、Mapperクラス名を元に、パラメータに関する情報を参照し、Mapper20の処理内においてパラメータ呼び出しがない場合は真を、そうでな場合は偽を出力するステップ710Controller50は、Map処理で利用するパラメータの全てにおいて、同じ値が設定される頻度がユーザが指定した閾値を超えているかを判定する。詳しくは、Mapperクラス名に基づいて、与えられたパラメータに関する情報を参照し、Mapper20の処理内において利用されるパラメータのうち、全てがユーザにより設定された閾値を超える頻度で同じ値が設定される場合は真を、そうでない場合は偽を出力する。ステップ720controller50は、パラメータの集合を取得して、当該集合中に中間データ記憶部30への保存を明示的に有効化するものがあるかを確認し、ある場合は真を、ない場合は偽を出力する。ステップ730上記のステップ700,710,720のいずれにおいて、真である場合は、Controller50は、MapReduceジョブが保持するパラメータに対して中間データを有効化するフラグと、中間データを保存する場所を付与する。次に、図2のステップ320の処理について詳細に説明する。図5は、本発明の第1の実施の形態における中間データを再利用するMapReduceを利用した処理のフローチャートである。ステップ900Controller50は、図24のステップ100と同様にMapReduceジョブを生成する。ステップ910図24のステップ110と同様に生成されたジョブにパラメータを与える。ステップ920ステップ910の出力であるジョブが保持するパラメータを元に、当該ジョブにおいて利用可能な中間データがキャッシュとして分散ファイルシステム10に保存されているか否かを判定し、利用可能な場合はキャッシュ利用フラグが真を示すパラメータを新たにジョブに追加する。ステップ930Reducer40は、キャッシュとして中間データ記憶部30に保存されている中間データを利用して、Map処理及びShuffle処理をスキップしてReduce処理のみのMapReduce処理を行う。ステップ940図24のステップ130と同様の処理を行う。次に、上記の5のステップ920の処理を説明する。図6は、本発明の第1の実施の形態における中間データ再利用判定処理のフローチャートである。ステップ1000ジョブが保持するパラメータを元に、分散ファイルシステム10内に利用できるキャッシュ同じ入力データ、同じパラメータを利用して処理したときの中間データがあるかどうかを判定する。ステップ1010ある場合は、ジョブに対して利用するキャッシュ保存場所を含めたキャッシュ利用フラグを付与する。[第2の実施の形態]本実施の形態は、第1の実施の形態の図2のステップ300の処理において、MapReduce処理に使われるMapperクラスReduceクラスの名前、事前に与えるパラメータ名と値、それがMapReduce処理中のどのような順序で、どの関数内で利用されるかを検出し、その情報を分散ファイルシステム10に保存することで、以後の処理において利用できるようにするものである。本実施の形態におけるシステム構成は第1の実施の形態と同様である。図7は、本発明の第2の実施の形態におけるパラメータ情報を検知するMapReduceを利用した処理のフローチャートである。以下の処理は、第1の実施の形態の図2のステップ300の処理に対応する。ステップ400図24のステップ100と同様である。ステップ410図24のステップ110と同様である。ステップ420Mapper20及びReducer40は、入力された任意のデータから、内部で利用されるパラメータの値、利用位置、利用元関数を検知し、分散ファイルシステム10に保存しながらMapReduce処理を行う。ステップ430図24のステップ130と同様である。次に、上記のステップ420の処理について詳細に説明する。図8は、本発明の第2の実施の形態におけるパラメータ情報を検知するMapReduce処理のフローチャートである。ステップ500各ノードに割り当てられたデータが入力されると、Mapper20は、ユーザが定義した任意のMap処理を行う。各ノードが自らに割り当てた分散データを先頭から順に1行に対して1回、ユーザが定義したMap関数が適用される。その間パラメータが利用される際に、利用したMapperクラス名、関数、パラメータ名、パラメータ値を分散ファイルシステム10に保存する。ステップ510ステップ500で生成されたKeyValue形式のデータが入力されると、キーが共通のものを集めキー1つにリスト状の値となる、ユーザが定義した任意のCombine処理を行う。その間、パラメータが利用される際に、利用したCombinerクラス名、関数、パラメータ名、パラメータ値を分散ファイルシステム10に格納する。ステップ520Reducer40において、図25のステップ220と同様の処理を行う。ステップ530Reducer40は、入力に対してユーザが定義した任意のReduce処理を行う。その間パラメータが利用される際に、利用したReducerクラス名、関数、パラメータ名、パラメータ値を分散ファイルシステム10に保存する。図9に実装時の処理イメージを示す。オープンソフトウェアであるMapReduceは、Hadoopを利用することにより容易に実現可能である。Hadoopにおいて、ジョブに予め与える全てのパラメータはConfigurationという名のクラスで管理されており、MapReduce処理の過程でMapperやReducerはControllerからこのConfigurationがファイルとして保存された場所を受け取り、そのファイルを読み込んで利用する。Configurationには、Mapper及びReducerが利用するパラメータの他、JobTrackerが利用するパラメータなども含む全てのパラメータが格納される。Configurationはパラメータをnamevalueの組で管理しており、nameが問い合わせられたら対応するvalueを返すという形で利用される。本発明では、同図下段に示すように、これを検知用のものに入れ替えることで、パラメータ情報の検知を実現する。具体的には、パラメータ利用のために、Configurationにnameが送られたとき、単純にvalueを返答するだけでなく、同時に問い合わせ元のクラス名関数名パラメータ値などの情報を取得して別途HDFSに保存する。[第3の実施の形態]本実施の形態は、第2の実施の形態によって得られた情報を利用して、Map処理がパラメータに依存しない場合、統計的に同じパラメータが頻繁に利用される場合、ユーザが指定する場合に、Map処理の結果である中間データをキャッシュとして分散ファイルシステム10に保存する。以降の処理において、保存した中間データをキャッシュとして利用可能な場合は、それを読み込んで、Reduce処理のみを行い、Map処理及びShuffle処理は行わない。本実施の形態におけるシステム構成は第1の実施の形態と同様である。図10は、本発明の第3の実施の形態における中間データを保存するMapReduce処理のフローチャートである。同図に示す処理は、第1の実施の形態の図3のステップ630の処理に対応する。ステップ800図25のステップ200と同様にMap処理を行う。ステップ810図25のステップ210と同様にCombine処理を行う。ステップ820図25のステップ220と同様に、Shuffle処理を行う。ステップ830上記の処理による中間データをキャッシュとして分散ファイルシステム10に出力する。ステップ840図25のステップ230と同様の処理を行う。但し、Reducer40に対して中間データ記憶部30に保存されているShuffle済みの中間データを直接流し込むことで、Map処理及びShuffle処理をスキップする。次に、上記の図5のステップ930の処理を説明する。図11は、本発明の第3の実施の形態における中間データを再利用したMapReduce処理のフローチャートである。ステップ1100Reducer40は、キャッシュとして分散ファイルシステム10に保存されている中間データを取得する。ステップ1110Reducer40は、取得した中間データを用いて、図25のステップ230と同様の処理を行う。以上、本発明の実施の形態を説明したが、本発明では、ユーzが中間データのキャッシュを陽に指定しない限り自動的にキャッシュを行う場合、最低3回のMapReduceを行う。1回目はパラメータ情報の検知、2回目で1回目の情報を利用した中間データのキャッシュ判定及びキャッシュ、3回目で2回目においてキャッシュした中間データを利用する処理量を削減する。以下、本発明をオープンソース分散システムのHadoopに適用した例を示す。以下では、Hadoopにおいて、パラメータは具体的にはConfigurationクラスを指す。Configurationクラスは、Hadoopによる一連のMapReduce処理の流れの中で、Hadoopそのもののパラメータ、ユーザが定義したMapper、Reducerを指定するパラメータ、MapperやReducer等で利用される変数等のパラメータなど、あらゆるパラメータを区別なく格納、管理するためのクラスであり、MapReduceに関わる様々なクラスがConfigurationクラスを継承あるいはConfigurationクラスを保持する形で利用する。パラメータは、名前:値の形でConfigurationクラスに格納され、必要とする型に応じたメソッドにパラメータの名前を与えると、その型の値が応答される。HDFSやローカルファイルに出力するために、XML形式に変換するメソッドを持つ。ジョブjobまたはJobConfは、Hadoopにおいて、具体的にはJobクラス、もしくは、JobConfクラスを指す。HadoopによるMapReduce処理を開始する際、ジョブを生成し、ジョブが提供する各種メソッドを用いて処理に利用するMapperクラスやReduceクラスなどを与え、開始メソッドによってMapReduce処理を開始することができる。Configurationクラスを内包し、与えられたパラメータは基本的に全てそちらに格納する。なお、後述するJobTrackerは前述の実施の形態における制御部Controller50に対応する。図12は、HadoopによるMapReduce処理開始時の各ノードの動作を示す。同図に示すシステムは、JobClient1302、MapReduceアプリケーション1301を有するクライアントノード1300、JobTracker1311を有するJobTrackerノード1310、TaskTracker1321、MaporReduceタスク1322を有するTrackTrackerノード1320から構成される。まず、一般的なクライアントノード1300の動作を説明する。図13は、クライアントノードの一般的な処理のフローチャートである。ステップ1400クライアントノード1300のJobClient1302は、Hadoopに含まれるJobクラスのインスタンスの生成時に、XML形式の初期パラメータが読み込まれ、Configurationクラスとしてジョブに与えられる。ステップ1410MapperReducerKeyValueクラスなどのHadoopが必要とするパラメータや、処理の途中に利用する変数の初期値などのパラメータをジョブに与えジョブが保持するconfigurationにパラメータを与える、固定のパラメータが与えられたジョブインスタンスを出力する。ステップ1420入力データの場所や実行時にユーザが変更可能なパラメータをコマンドライン引数の解析などによって取得し、ジョブに与えるジョブが保持するConfigurationにパラメータを与える。ステップ1430JobClient1302を利用してJobTrackerが動作しているサーバから新規のジョブのIDを取得し、ジョブに与える。ステップ1440ステップ1430で取得したジョブIDを元にした分散ファイルシステム1330上の所定の場所パスに、ステップ1400、1410、1420によって生成、設置付与がなされたジョブをXMLとして出力するまた、入力データを示すファイルも所定の場所に出力する。ステップ1450JobClient1302を利用して新しいジョブの追加をJobTracker1311に通知する。詳細について後述する。ステップ1460JobTracker1311において追加されたジョブが実行中ジョブとなり、キューに蓄積される。適宜キューを元にMapReduce処理が実行され、処理のログを標準出力に表示しながら終了まで待機するTaskTrackerノード1320のMaporReduceタスク1322が全て終了まで待機する。ステップ1460ステップ1460の処理が終了し、MapReduce処理のログ情報をMapReduce処理の結果として取得し、ユーザが定義した任意の処理を行う。図14は、ジョブ追加時の処理のフローチャートであり、上記のステップ1450の詳細を示す。ステップ1500入力されたジョブIDを元にしてジョブの初期化を行い、実行ジョブを生成する。ステップ1510実行ジョブをキューに追加する。上記に示した処理は一般的な処理であるが、本発明では、図14の処理の代わりに、図15に示す処理を行う。図15は、本発明の一実施例のジョブ追加時の処理のフローチャートである。ステップ1600クライアントノード1300のJobClient1302において、図25のステップ200と同様に、実行ジョブを生成する。ステップ1610ジョブが保持するConfigurationを参照し、パラメータ検知設定が有効か判定する。有効である場合はステップ1620に移行し、有効でない場合は、ステップ1611に移行する。ステップ1611MapperReducerクラス名、入力データ名、パラメータを用いて分散ファイルシステム1330上のディレクトリを検索し、再利用可能な中間データのキャッシュがあるかどうか判定する。ある場合はステップ1612に移行し、ない場合は、ステップ1640に移行する。ステップ1612ジョブのConfigurationに対してReducerの処理が無しになるように操作し、Mapperクラスをスキップ用のものに入れ替え、ステップ1640に移行する。ステップ1620設定済みのMapper、Reducerは別の設定名として退避し、パラメータ検知用のMapper、Reducerに入れ替える。また、入れ替え済みのConfigurationの内容を分散ファイルシステム1330上に保存されているXMLにも反映する。ステップ1630ユーザによる明示的なキャッシュ有効指定がある場合には、常に真を、また、MapperReducerクラスタ名、入力データ名、パラメータ名を用いて分散ファイルシステム1330上に蓄積されたパラメータの利用クラス関数の情報を検索し、Mapperがパラメータに依存しない場合や、依存していても同じパラメータ値をユーザが指定する回数以上利用している場合に真を出力する。それ以外は偽を出力してステップ1640に移行する。ステップ1631ステップ1630において、真である場合には、実行ジョブのConfigurationに対して、中間データをキャッシュするためのフラグを付与する。ステップ1640図14のステップ1510と同様に、実行ジョブをキューに格納する。次に、図13のJobTrackerノード1310のJobTracker1311のジョブスケジューラの処理について説明する。図16は、本発明の一実施例のジョブスケジューラの処理のフローチャートである。ステップ1700JobTracker1311は、キューの中に実行ジョブがあるかどうかを判定し、ある場合は、ステップ1710に移行し、ない場合にはキュー待ちする。ステップ1710キューから実行ジョブを取得する。ステップ1720実行ジョブを元にして分散ファイルシステム1330の適切な場所からジョブのリソースを取得し、必要な数のMapタスク、Reduceタスクを生成する。ステップ1730終了判定として、終了フラグがあるかを判定する。終了フラグがある場合は当該処理を終了し、ない場合はステップ1700に移行する。次に、TaskTrackerノード1320のTaskTracker1321のタスク取得処理について説明する。図17は、本発明の一実施例のTaskTrackerのタスク取得ループの処理のフローチャートである。ステップ1800TaskTrackerノード1320のTaskTracker1321は、JobTrackerノード1310のJobTracker1311に対して、自らの生存を確認させるためにハートビートHeatBeatを送出し、JobTracker1311からそれに対する応答を受け取る。ステップ1810TaskTracker1321は、JobTracker1311からの応答にタスクが含まれているかどうかを判定し、含まれている場合はステップ1820に移行し、含まれていない場合はステップ1800に移行する。ステップ1820TaskTracker1321は、タスクがMapタスクであるかどうかを判定する。Mapタスクである場合はステップ1821に移行し、そうでない場合はステップ1830に移行する。ステップ1821TaskTracker1321は、与えられたMapタスクを実行し、ステップ1800に移行する。詳細については図18で後述する。ステップ1830タスクがReduceタスクであるかを判定する。Reduceタスクである場合はステップ1831に移行し、そうでない場合はステップ1840に移行する。ステップ1831与えられたReduceタスクを実行し、ステップ1800に移行する。詳細は図18で後述する。ステップ1840終了フラグがあれば、処理を終了し、なければステップ1800に移行する。次に、上記のステップ1821,1831のタスクMapタスク、Reduceタスクの開始の処理について説明する。図18は、本発明の一実施例のタスク開始時の処理のフローチャートである。ステップ1900TaskTracker1321は、パラメータConfiguration、ジョブの進捗状況Status、入出力などを含むContextクラスをタスクに応じて生成する。ステップ1910与えられたタスクに応じたクラスMapperクラスまたはReducerクラスを生成する。ステップ1920生成したContextクラスをMapperクラスまたはReducerクラスに与え、実行する。Mapperクラスの場合は、図19の処理、Reducerクラスの場合は図20の処理を実行する。上記のステップ1910でMapperクラスが生成された場合には、以下の処理を行う。図19は、本発明の一実施例のMapperクラスが生成された場合の処理のフローチャートである。ステップ2200Contextクラス設定、タスクID、データの入出力、ジョブステータス、カウンタ等を持つクラス、Mapperとして利用しているクラスが入力されると、Contextクラスが保持するConfigurationクラスを取り出し、それをパラメータが利用されたクラス関数順序を検知するためのConfigurationに入れ替える。ステップ2210Mapperクラスの名前をConfigurationから取り出し、通常のMapperクラスを生成する。ステップ2220ユーザの定義した任意の事前処理のみを行う。ここでは、MapperやReducerの中の関数名をそれぞれMapper内、Reducer内のものであることが明示的にわかるような関数名検知が容易な関数名にしておくことで、MapperReducerどちらからパラメータが利用されたかを容易に判定できるようになる。ステップ2230割り当てられた入力データの一部及びContextクラスが入力されると、入力の次の1行に対して、検知が容易な関数名を用いてユーザの定義した任意のMap処理のみを行う。ステップ2240ステップ2230で読み込んだ行がデータの最終行であるかどうかを判断する。ステップ2250検知が容易な関数名を用いてユーザの定義した任意の終了処理のみを行う。次に、上記の図19のステップ2200で生成された検知用コンテキストに対してパラメータを要求するときの処理を説明する。図20は、本発明の一実施例の検知用Configurationクラスのパラメータ呼び出し時の処理のフローチャートである。ステップ2300Java登録商標の機能であるStackTraceを用いて、当該関数を呼び出した関数を辿り、呼び出し元のMapperクラス名と関数名を検知する。ステップ2310分散ファイルシステム1330上に、ステップ2300の出力を呼び出し元クラス名、順序数値、関数名、パラメータ名をディレクトリ名、値をファイル名、頻度を内容としてファイルを生成し、分散ファイルシステム1330に出力する。ステップ2320保持しているプロパティクラスから、パラメータ名をキーとして値を取得し、呼び出したメソッドに適切な型に変換する。次に、図18のステップ1920において、検知用Reducerを実行する場合の処理について説明する。図21は、本発明の一実施例の検知用Reducerの処理のフローチャートである。ステップ2500Contextクラス設定、タスクIDデータの入出力、ジョブステータス、カウンタ等を持つクラス、Reducerとして利用しているクラスの名前が入力されると、Contextクラスが保持するConfigurationクラスを取り出し、それをパラメータが利用されたクラス、関数、順序を検知するためのConfigurationに入れ替える。ステップ2510Reducerクラスの名前をConfigurationから取得し、通常のReducerクラスを生成する。ステップ2520検知が容易な関数名を用いて、ユーザの定義した任意の事前処理のみを行う。ステップ2530Contextクラス内のConfigurationにキャッシュ保存フラグがあるかを判定する。ある場合は、ステップ2540に移行し、ない場合はステップ2550に移行する。ステップ2540分散ファイルシステム1330内の所定の場所に、Mapperクラス名、Reduceクラス名、入力データ名、Keyをディレクトリとし、Valueイテレータの内容を全てそのディレクトリ内に出力する。ステップ2550割り当てられた中間データKey,Valueに対して、検知が容易な関数を用いてReduce処理を行う。ステップ2560ユーザが定義した任意の終了処理のみを行う。次に、図18のステップ1920において、スキップ用Mapperを実行する場合の処理について説明する。図22は、本発明の一実施例のスキップ用Mapperの処理のフローチャートである。ステップ2600Reducerクラスの名前をConfigurationから取得し、通常のReducerクラスを生成する。ステップ2610ユーザの定義した任意の事前処理のみを行う。ステップ2620予め保存していた分散ファイルシステム1330上の中間データのキャッシュを読み込み、Key、Valueイテレータの形で取得する。ステップ2630割り当てられた中間データKey、Valueに対してReduce処理を行う。ステップ2640ユーザの定義した任意の終了処理のみを行う。なお、上記の図1に示す構成要素の動作をプログラムとして構築し、データ分析機械学習装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。また、本発明は、上記の実施の形態及び実施例に限定されることなく、特許請求の範囲内において、種々変更応用が可能である。"