(57)【要約】【課題】ジョブの分割による並列分散処理を行う際、利用可能なリソース群に対して分割ジョブを最適に割り当てること。【解決手段】ジョブ依頼元装置１０は、ジョブの投入を宣言し(S001)、ジョブの処理対象データ量を測定し(S002)、処理に必要なリソース需要を見積もり(S003)、それに見合うリソースをリソースプール２０から確保する(S004)。予約が完了すると、ジョブ依頼元装置は、確保したリソースのリソース能力係数に応じて、個々のリソースにおける処理時間がほぼ等しくなるようにジョブの割り当てを最適化し(S006)、これに基づいてジョブ及びデータを分割し(S007)、リソースに割り当てる(S008)。各リソースは、割り当てられたジョブを実行する(S009)。各リソースでの処理が終了すると、ジョブ依頼元装置は、各リソースで分散処理されて戻された子ジョブのジョブを結合し(S010)、結果データをマージし(S011)、確保したリソースを開放する(S012)。【選択図】図２
2007264794.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
与えられたジョブの処理対象データ量を測定するステップと、
測定されたデータ量から処理に必要なリソース需要を見積もるステップと、
見積もった需要に見合うリソースをリソースプールから確保するステップと、
確保した各リソースの処理能力に応じて、個々のリソースにおける処理時間がほぼ等しくなるように前記ジョブの各リソースへの割り当てを最適化するステップと、
最適化された割り当てに従って前記ジョブを複数の子ジョブに分割するステップと、
分割された子ジョブを各リソースに投入するステップと、
各リソースで分散処理された子ジョブを結合するステップと、
確保したリソースを開放するステップと、
を実行させることを特徴とする並列分散処理プログラム。
【請求項２】
前記リソースを確保するステップは、需要に見合うリソースが確保できるまで、次のステップには進まずに繰り返し実行されることを特徴とする請求項１に記載の並列分散処理プログラム。
【請求項３】
与えられたジョブを複数の子ジョブに分割して複数のリソースにより並列分散処理する並列分散処理システムにおいて、
与えられたジョブの処理対象データ量を測定するデータ量測定手段と、
測定されたデータ量から処理に必要なリソース需要を見積もるリソース需要見積手段と、
見積もった需要に見合うリソースをリソースプールから確保するリソース予約手段と、
確保した各リソースの処理能力に応じて、個々のリソースにおける処理時間がほぼ等しくなるように前記ジョブの各リソースへの割り当てを最適化する分割割合決定手段と、
最適化された割り当てに従って前記ジョブを複数の子ジョブに分割するジョブ分割手段と、
分割された子ジョブを各リソースに投入するリソース割当制御手段と、
各リソースで分散処理された子ジョブを結合するジョブ結合手段と、
確保したリソースを開放するリソース開放手段と、
を備えることを特徴とする並列分散処理システム。
【請求項４】
前記リソース予約手段は、需要に見合うリソースが確保できるまで、次の手段を実行せずに繰り返し実行されることを特徴とする請求項３に記載の並列分散処理システム。
【請求項５】
ジョブ依頼元のコンピュータと、前記リソースプールに含まれる各リソースを構成するコンピュータとが、ネットワークを介して接続されていることを特徴とする請求項３又は４に記載の並列分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブを分割して複数のリソースにより並列分散処理するようにコンピュータを機能させる並列分散処理プログラム、及びこれを用いた並列分散処理システムに関する。
【背景技術】
【０００２】
ジョブを効率よく処理するため、ジョブを分割して複数のリソースで並行処理する方法が従来から知られている。例えば、特許文献１には、システムを複数グループで分割利用する際に、ジョブ処理の効率向上を図るため、各グループのジョブの情報からデータ量に基づき効率的なリソース割当を予測し、最適なジョブ実行環境を設定してからジョブを実行する方法が開示されている。
【０００３】
【特許文献１】特開平７−２１９７８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の方法では、各グループに割り当て可能なリソースにばらつきがある場合、各クループに割り当てられたリソースで最適な実行環境を設定しても、グループ間の実行環境には大きなばらつきが残る。このため、グループによって処理時間に大きな違いが生じ、処理の遅いグループがボトルネックとなってジョブ全体の処理が遅くなるという問題がある。
【０００５】
本発明は、上記の問題点に鑑みてなされたものであり、その課題は、ジョブの分割による並列分散処理を行う際、利用可能なリソース群に対して分割ジョブを最適に割り当てることにある。
【課題を解決するための手段】
【０００６】
本発明にかかる並列分散処理プログラムは、コンピュータに、与えられたジョブの処理対象データ量を測定するステップと、測定されたデータ量から処理に必要なリソース需要を見積もるステップと、見積もった需要に見合うリソースをリソースプールから確保するステップと、確保した各リソースの処理能力に応じて、個々のリソースにおける処理時間がほぼ等しくなるようにジョブの各リソースへの割り当てを最適化するステップと、最適化された割り当てに従ってジョブを複数の子ジョブに分割するステップと、分割された子ジョブを各リソースに投入するステップと、各リソースで分散処理された子ジョブを結合するステップと、確保したリソースを開放するステップと、を実行させることを特徴とする。
【０００７】
リソースを確保するステップは、需要に見合うリソースが確保できるまで、次のステップには進まずに繰り返し実行されるようにすることが望ましい。
【０００８】
また、本発明にかかる並列分散処理システムは、与えられたジョブを複数の子ジョブに分割して複数のリソースにより並列分散処理するシステムにおいて、与えられたジョブの処理対象データ量を測定するデータ量測定手段と、測定されたデータ量から処理に必要なリソース需要を見積もるリソース需要見積手段と、見積もった需要に見合うリソースをリソースプールから確保するリソース予約手段と、確保した各リソースの処理能力に応じて、個々のリソースにおける処理時間がほぼ等しくなるようにジョブの各リソースへの割り当てを最適化する分割割合決定手段と、最適化された割り当てに従ってジョブを複数の子ジョブに分割するジョブ分割手段と、分割された子ジョブを各リソースに投入するリソース割当制御手段と、各リソースで分散処理された子ジョブを結合するジョブ結合手段と、確保したリソースを開放するリソース開放手段と、を備えることを特徴とする。
【０００９】
リソース予約手段は、需要に見合うリソースが確保できるまで、次の手段を実行せずに繰り返し実行されることが望ましい。
【００１０】
また、本発明の並列分散処理システムは、ジョブ依頼元のコンピュータと、リソースプールに含まれる各リソースを構成するコンピュータとが、ネットワークを介して接続されている環境に適用する事ができる。
【発明の効果】
【００１１】
以上のように構成された本発明の並列分算処理プログラム／システムによれば、リソース需要に見合ったリソース群を確保し、確保された各リソースの処理能力に応じてジョブを分割して割り当てるため、ジョブを割り当てた各リソースの処理能力に大きな違いがある場合にも、各リソースが割り当てられたジョブを処理するのに必要な時間はほぼ一定となり、全体としてジョブの処理時間を短縮することができる。特に、大量のデータ処理が必要なジョブが直列で繋がっているようなジョブネット(利盛計算など)を処理する際の処理時間の節約に効果がある。
【００１２】
また、必要量のリソース群の確保／予約を予め完了させた後に、ジョブの分割／実行を行うことで、ジョブの実行前に完了予測時刻を正確に把握できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明にかかる並列分散処理プログラム及び並列分散処理システムの実施形態を図面に基づいて説明する。最初に、図１に基づいて本実施形態の並列分散処理システムが適用されるネットワークシステムの概要を説明する。図１に示されるように、この分散処理システムは、インターネット等のネットワークＮを介して互いに接続されたジョブ依頼元装置(コンピュータ)１０と、複数のリソース(コンピュータ)Ａ，Ｂ，Ｃ，…とから構成される。これらのリソースは、リソースプール２０を構成している。
【００１４】
ジョブ依頼元装置１０は、ＣＰＵ１１，並びにこのＣＰＵ１１に接続されたハードディスク(ＨＤ)１２、メモリ(ＲＡＭ)１３及び通信アダプタ１４を備えている。ＨＤ１２には、図示せぬオペレーティングシステム等のシステムプログラムの他、ジョブを分割して複数のリソースにより処理させるための並列分散処理プログラム１２ａがインストールされ、ジョブを管理するためのジョブＤＢ(データベース)１２ｂが構築されている。ジョブ依頼元装置１０は、与えられたジョブを複数の子ジョブに分割してリソースプール２０内の複数のリソースに送信し、並列分散処理させる。
【００１５】
リソースＡ，Ｂ，Ｃ，…は、ＣＰＵ２１，並びにこのＣＰＵ２１に接続されたＨＤ２２、ＲＡＭ２３及び通信アダプタ２４を備えている。各リソースＡ，Ｂ，Ｃ，…は、ジョブ依頼元装置１０から送られてくる子ジョブを処理してジョブ依頼元装置１０に戻す機能を有する。
【００１６】
次に、図２に示すフローチャートにしたがって、並列分散処理プログラム１２ａの処理内容について説明する。ジョブ依頼元装置１０がジョブの並列分散処理をスタートさせると、最初にジョブのジョブ実行キューへの投入を宣言し、投入されるジョブの識別情報(ジョブＩＤ)を付与する(S001)。ジョブＩＤには、他のジョブと区別するための識別子を格納するフィールドと、このジョブに含まれるデータのレコード数ｎを格納するフィールドと、１レコード処理するために必要な演算量である単位演算量ｕを格納するフィールドと、このジョブが分割された際の子ジョブの識別子(子ジョブＩＤ)を格納するフィールドとを含む。レコード数ｎのフィールドは、ジョブ投入時にはNullが格納されている。また、子ジョブＩＤのフィールドは、分割前にはNullが格納され、分割前であることを示す。識別子及び単位演算量のフィールドには、ジョブに応じて値が設定される。
【００１７】
続いて、ジョブ依頼元装置１０は、ジョブの処理対象データ量(レコード数ｎ)を測定する(S002)。データ量(レコード数ｎ)は、固定長レコードの場合には、
ｎ ＝ ジョブの処理対象データ容量[byte]／レコード長[byte]
により求められる。レコード数のフィールドには、ここで求められたレコード数が書き込まれる。
【００１８】
次に、ジョブ依頼元装置１０は、S001で設定された単位演算量ｕとS002で求められたレコード数ｎとに基づいて、処理に必要なリソース需要を見積もる(S003)。処理を完結するために必要な演算量ｃは、ｃ＝ｕ×ｎで求められる。リソース需要は、この演算量ｃにシステム係数ｓを掛けることにより求められる。システム係数ｓは、演算量を定量化するためにシステム毎に調整可能な任意の値である。演算量ｃにシステム係数ｓを掛けて得られるリソース需要ｄには、便宜上架空の単位RSを付することとする。例えば、あるジョブの処理対象レコード数ｎ=2,500セット、単位演算量ｕ=20ステップとし、システム係数ｓを0.0001とすると、演算量ｃ及びリソース需要ｄは、
ｃ ＝ ｎ×ｕ ＝ 50,000[ステップ]
ｄ ＝ ｃ×ｓ ＝ 5[RS]
となる。
【００１９】
続いて、ジョブ依頼元装置１０は、S003で見積もったリソース需要に見合うリソースをリソースプール２０から確保(予約)する(S004)。リソースプール２０に含まれる各リソースＡ，Ｂ，Ｃ，…には、それぞれリソース能力係数ｘが定義されている。リソース能力係数ｘは、各リソースの処理能力(スループット)を数値化したものであり、単位は上記のリソース需要の単位と同じくRSである。処理能力が高いほど数値が大きくなる。ジョブ依頼元装置１０は、各リソースのリソース能力係数の合計がリソース需要に一致するようにリソースを確保する。例えば、リソースプール２０に含まれる予約可能なリソースをリソースＡ．Ｂ，Ｃ，Ｄとし、リソースＡのリソース能力係数が「２」、リソースＢの係数が「１」、リソースＣの係数が「３」、リソースＤの係数が「４」とし、上記の例のようにリソース需要ｄ＝５[RS]とすると、ジョブ依頼元装置１０は、リソースＡとリソースＣとを確保し、あるいは、リソースＢとリソースＤとを確保する。なお、リソースの予約の際には、リソース能力係数の和が、リソース需要と等しくなる組み合わせを優先的に選択するが、等しくなる組み合わせがない場合には、リソース需要より大きくなる組み合わせの中で最小のものを選択する。例えば、リソース需要が6.5の場合は、リソースＣとリソースＤとを確保し、あるいは、リソースＡ、Ｂ、Ｄを確保する。
【００２０】
続いて、ジョブ依頼元装置１０は、S004のリソース予約が完了したか否かを判断し(S005)、リソースの不足で予約が完了していない場合には、再びS004の処理を実行させる。このようにして、リソース需要に見合うリソースが確保できるまでリソース予約を繰り返し、リソースが確保できた後、次の処理へと進む。
【００２１】
予約が完了すると(S005, Yes)、ジョブ依頼元装置１０は、S004で確保したリソースのリソース能力係数に応じて、個々のリソースにおける処理時間がほぼ等しくなるようにジョブの各リソースへの割り当てを最適化する(分割割合を決定する、S006)。例えば、リソース需要「５」に対してリソースＡとリソースＣとを確保した場合、ジョブの分割数(子ジョブの数)は「２」、データの分割割合はリソースＡ：リソースＣ＝２：３に決定する。上記のように処理対象レコード数ｎ=2,500セットとすると、リソースＡに対して1000セット、リソースＣに対して1500セットが割り当てられる。
【００２２】
続いて、ジョブ依頼元装置１０は、S006で決定された分割数、分割割合に基づいてジョブ及びデータを分割し(S007)、S004で予約した個々のリソースにS006で分割した子ジョブとそのデータとを割り当てて送信する(S008)。子ジョブが割り当てられた各リソースは、それぞれ割り当てられたジョブを並列して実行する(各リソースでの分散処理、S009)。
【００２３】
各リソースには、その処理能力(リソース能力係数)に応じて、処理時間がほぼ等しくなるようにジョブが割り当てられるため、各リソースにおける子ジョブの処理終了時刻はほぼ等しくなり、１つのリソースの処理がボトルネックとなって全体の処理を遅らせるような事態を避けることができる。
【００２４】
各リソースでの処理が終了すると、各リソースは処理結果をジョブ依頼元装置１０に戻してくる。ジョブ依頼元装置１０は、各リソースで分散処理されて戻された子ジョブのジョブを結合し、ベリファイする(S010)。続いて、各リソースで分散処理されて戻された子ジョブの結果データをマージし(S011)、確保したリソースを開放する(S012)。
【００２５】
図３は、図２のフローチャートに示した上記の並列分散処理プログラムの内容を、プログラムの機能に着目した手段として、ジョブやリソースの処理と共に示したチャートである。図３のチャートでは、全体の処理をジョブ投入、ジョブ実行前処理、ジョブ実行処理、ジョブ実行後処理の４段階に分けて示している。以下、各段階に分けて説明する。
【００２６】
ジョブ投入段階では、分割前のジョブがジョブ投入手段１００に投入され、分割前のデータがデータ量測定手段１１０に入力される。ジョブに含まれるジョブＩＤと、データ量測定手段１１０により求められたデータ量とは、リソース需要見積手段１３０に入力され、ここでリソース需要が計算される。計算されたリソース見積結果は、リソース予約手段に送られ、ここでリソース需要に合わせたリソースをリソースプール内のリソースから選択して予約する。
【００２７】
ジョブ実行前処理では、分割割合決定手段１４０が、予約済のリソース群のリソース能力係数に基づいてリソースの分割割合を決定し、ジョブ分割手段１５０及びデータ分割手段１６０は、決定された分割割合に基づいてジョブ及びデータを分割する。
【００２８】
ジョブ実行処理では、リソース割当制御手段１７０が、分割されたジョブ及びデータを予約されている各リソースに送信し、子ジョブ実行制御手段１８０が各リソースでの子ジョブの実行を制御する。
【００２９】
ジョブ実行後処理では、ジョブ結合手段１９０が子ジョブを結合すると共に、データ結合手段２００がデータをマージし、リソース開放手段２１０が確保していたリソースを開放してリソースプールに戻す。正常に終了した場合には、ジョブ結合手段１９０からは終了ステータスが出力され、データ結合手段２００からは処理結果のデータが出力される。
【００３０】
以上説明したように、実施形態の並列分散処理方法及びシステムによれば、データ量に基づいてリソース需要を見積り、このリソース需要に見合うリソースを確保してから実際のデータ分割、処理を実行するようにしているため、利用可能なリソースに対してジョブを最適に分割して割り当てることができ、全体の処理時間を短縮することができる。
【産業上の利用可能性】
【００３１】
本発明の並列分散処理プログラム及びシステムは、例えば、銀行の預金データ処理、店舗の売り上げデータ集計処理等の定型処理(バッチ処理)等に適用することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態にかかる並列分散処理システムを示すブロック図である。
【図２】本発明の実施形態にかかる並列分散処理プログラムの起動から停止までの処理内容を示すフローチャートである。
【図３】本発明の実施形態にかかる並列分散処理プログラムの内容を、プログラムの機能に着目した手段として、ジョブやリソースの処理と共に示したチャートである。
【符号の説明】
【００３３】
１０  ジョブ依頼元装置
１１  ＣＰＵ
１２  ＨＤ
１２ａ  並列分散処理プログラム
１３  ＲＡＭ
１４  通信アダプタ
２０  リソースプール
Ａ，Ｂ，Ｃ，…  リソース
２１  ＣＰＵ
２２  ＨＤ
２３  ＲＡＭ
２４  通信アダプタ
【図１】
2007264794.tif 000003
【図２】
2007264794.tif 000004
【図３】
2007264794.tif 000005