JP6183374B2 - データ処理システム、データ処理方法およびプログラム - Google Patents
データ処理システム、データ処理方法およびプログラム Download PDFInfo
- Publication number
- JP6183374B2 JP6183374B2 JP2014544306A JP2014544306A JP6183374B2 JP 6183374 B2 JP6183374 B2 JP 6183374B2 JP 2014544306 A JP2014544306 A JP 2014544306A JP 2014544306 A JP2014544306 A JP 2014544306A JP 6183374 B2 JP6183374 B2 JP 6183374B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- processing
- sequential
- unit
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、分散処理におけるデータ処理システム、データ処理方法およびプログラムに関する。
コンピュータによるデータ処理において、並列処理技術は一般に良く知られている。特許文献1は、ハッシュ結合に関して工夫をして並列処理を実行する技術を開示する。特許文献1が開示する技術は、テーブルの結合キーの出現頻度に基づいて、ハッシュ結合を複数のタスクに分割し、複数のタスクを複数の計算機に割り当てる。結合キーの出現頻度の偏りにより各タスクの処理量が均一にならない場合、特許文献1が開示する技術は、さらに、処理量が多いタスクをより細かい複数のサブタスクに分割する。特許文献1が開示する技術は、各計算機の処理量が均等になるように、各計算機に、タスクとサブタスクとを割り当てる。
しかしながら、特許文献1が開示する技術は、並列処理の処理時間を最適化するに過ぎない。特許文献1が開示する技術が、並列処理と逐次処理との両方を含むデータ処理に適用された場合、データ処理全体の処理時間を必ずしも最適化しないという課題がある。
本発明は、並列処理と逐次処理とを含むデータ処理の全体の処理時間を最適化するデータ処理システムを提供することを1つの目的とする。
上述した課題を解決する第1の発明は、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割するタスク分割手段と、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当て手段と、を有するデータ処理システムである。
上述した課題を解決する第2の発明は、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する分割ステップと、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当てステップと、を含むデータ処理方法である。
上述した課題を解決する第3の発明は、コンピュータに、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する手順と、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる手順と、を実行させるためのプログラムである。
また、本発明の目的は、上記のプログラムが格納されたコンピュータ読み取り可能な記憶媒体によっても達成される。
本発明によれば、並列処理と逐次処理とを含むデータ処理の全体の処理時間を最適化することができる。
本発明が対象とするデータ処理は、並列処理と逐次処理とを含む。並列処理は、複数の計算機が並列して実行可能な処理である。逐次処理は、並列処理の後処理として実行される。
並列処理では、計算機の数が増えるほど、処理時間は短縮される。他方、逐次処理は、1つの計算機により実行される処理である。計算機の数が増えても、逐次処理の処理時間は短縮されない。このため、複数の計算機が、並列処理と逐次処理との両方を含むデータ処理を実行する場合、逐次処理の処理時間は、データ処理全体の処理時間のボトルネックとなりやすい。
次に、本発明の実施の形態を説明するための、用語の定義およびその関係を以下に示す。「テーブル」とは、データ処理が実行される対象となるデータである。テーブルは、複数のレコードセットを含む。「レコードセット」とは、複数のレコードの集合であり、一つの計算機により逐次処理が実行される単位である。「ジョブ」とは、テーブルに対するデータ処理である。「タスク」とは、レコードセットに対するデータ処理である。ジョブは、その処理対象がテーブルからレコードセットに細分化されることにより、複数のタスクに分割される。
タスクは、並列処理可能タスクと逐次処理タスクに分割され得る。「並列処理可能タスク」とは、レコードセットに対して並列処理を実行する処理である。「逐次処理タスク」とは、レコードセットに対して並列処理の後処理である逐次処理を実行する処理である。
並列処理可能タスクは、その処理対象がレコードセットからより細かいレコードの集合に細分化されることにより、複数の「サブタスク」に分割され得る。つまり、一つのタスクは、複数のサブタスクと一つの逐次処理タスクに分割され得る。
「サブタスクと逐次処理タスクとが対応している」とは、サブタスクと逐次処理タスクとが同一のタスクから分割されたことを意味する。「大きいタスク」とは、実行対象のレコードセットに含まれるレコード数が多いタスクを意味する。タスクの処理時間は、おおむね処理対象であるレコードセットに含まれるレコード数によって決まる。大きいタスクは、処理時間の長いタスクである。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
<第1の実施形態>
図1は、第1の実施形態にかかるデータ処理システム1000のハードウェア構成図である。図1に示すように、データ処理システム1000は、例えばCPU(Central Processing Unit)1、RAM(Random Access Memory)2、ハードディスクドライブ3、通信インタフェース4、入力装置5、出力装置6等を含む。
図1は、第1の実施形態にかかるデータ処理システム1000のハードウェア構成図である。図1に示すように、データ処理システム1000は、例えばCPU(Central Processing Unit)1、RAM(Random Access Memory)2、ハードディスクドライブ3、通信インタフェース4、入力装置5、出力装置6等を含む。
データ処理システム1000の機能は、例えば、CPU1が、プログラムをRAM2に読み出し、実行することによって実現される。データ処理システム1000による情報の送受信は、例えばOS(Operating System)が提供する機能を使ってアプリケーションプログラムが通信インタフェース4を制御することによって実現される。入力装置5は、例えばキーボードやマウスである。出力装置6は、例えばディスプレイである。なお、入力装置5と出力装置6とは、例えばタッチパネルとして一体化されていてもよい。
尚、本実施形態および後述する各実施形態を例として説明される本発明は、係るプログラムが格納されたコンパクトディスク等の不揮発性の記憶媒体8によっても構成される。記憶媒体8が格納するプログラムは、例えばドライブ装置7により読み出される。
データ処理システム1000は、2つ以上の物理的に分離した装置が有線または無線で通信可能に接続されることによって構成されていてもよい。
図2は、第1の実施形態にかかるデータ処理システム1000のブロック図である。図2に示すように、データ処理システム1000は、タスク分割部10と、割り当て部20とを含む。
データ処理システム1000において、タスク分割部10は、複数のタスクの実行要求を受け付ける。そしてタスク分割部10は、受け付けた複数のタスクのそれぞれについて、タスクに含まれる逐次処理タスクの処理時間を算出する。タスク分割部10は、例えば、タスクの処理対象であるレコードセットが含むレコードの数に基づいて、タスクの処理時間を算出する。タスク分割部10は、他の逐次処理タスクと比較して大きい逐次処理タスクの前処理である並列処理可能タスクを、複数のサブタスクに分割する。
割り当て部20は、分割された並列処理可能タスクを含むタスク以外のタスクが実行される前に、複数のサブタスクが実行されるように、複数のサブタスクを、複数の計算機に割り当てる。
図3は、データ処理システム1000により処理されるタスクの概念を説明する図である。図3には3つの長方形が示されている。3つの長方形はそれぞれ、タスクA、タスクBおよびタスクC)を表している。すなわち、図3は、タスクA、タスクBおよびタスクCの3つのタスクを表している。それぞれのタスクは、並列処理可能タスク(横線で塗りつぶした部分)と、逐次処理タスク(白色の部分)とを含む。図3に示す長方形(タスク)の長さは、タスクを単一の計算機で実行した場合における当該タスクの処理時間を表す。処理時間は、おおむねタスクが処理するレコードセットのサイズに比例すると考えてよい。図3に示すように、タスクAの逐次処理タスクは、タスクBやタスクCの逐次処理タスクより大きい。
図4は、図3に示されるタスクAの並列処理可能タスクがサブタスクに分割された様子を説明する図である。図4に示すように、タスク分割部10は、タスクAの並列処理可能タスクを、複数のサブタスク(格子で塗りつぶした部分)に分割する。具体的には、タスク分割部10は、並列処理可能タスクを、ジョブを実行する計算機の数量分のサブタスクに分割する。例えば、ジョブが3台の計算機で実行される場合、タスク分割部10は、タスクAの並列処理可能タスクを、3つのサブタスクに分割する。
図5は、図4に示されるタスクが、3台の計算機に割り当られた様子を説明する図である。図5に示すように、割り当て部20は、タスクAのサブタスク、タスクAの逐次処理タスク、タスクB、タスクCを3台の計算機に割り当てる。割り当て部20は、タスクAのサブタスクが、タスクBやタスクCが実行される前に実行されるように、割り当てる。
図5に示すように、計算機1は、タスクAのサブタスクを実行してからタスクAの逐次処理タスクを実行する。計算機2は、タスクAのサブタスクを実行してから、その実行結果を計算機1に送信し、次いでタスクBを実行する。計算機3は、タスクAのサブタスクを実行してから、その実行結果を計算機1に送信し、次いでタスクCを実行する。
図6は、データ処理システム1000の動作を説明するフローチャートである。図6に示すように、タスク分割部10は、複数のタスクの実行要求を受け付ける(A100)。タスク分割部10は、実行要求を受け付けた各タスクの処理対象であるレコードセットに含まれるレコードの数にもとづいて、各タスクに含まれる逐次処理タスクの処理時間を算出する(A110)。
タスク分割部10は、大きい逐次処理タスクを含むタスクを、並列処理可能タスクと逐次処理タスクに分割し、さらに、並列処理可能タスクを複数のサブタスクに分割する(A120)。割り当て部20は、複数のサブタスクが、大きい逐次処理タスクを含むタスク以外のタスクが実行される前に実行されるように、タスク、サブタスク、逐次処理タスクを複数の計算機に割り当てる(A130)。
以上に説明したように、本実施形態にかかるデータ処理システム1000は、複数の計算機が並列して実行可能な並列処理と、前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理全体の処理時間を、最適化するデータ処理システム、データ処理方法およびプログラムを提供できる。その理由は、データ処理システム1000が、データ処理全体のボトルネックとなりやすい大きい逐次処理タスクができるだけ早く実行されるように、ジョブの実行をスケジューリングするからである。その結果、大きい逐次処理タスクが、他のタスクと重ね合わせて実行されるため、データ処理全体の処理時間が最適化される。
<第2の実施形態>
図7は、第2の実施形態にかかるデータ処理システム1000のブロック図である。図7に示すように、第2の実施形態にかかるデータ処理システム1000は、第1の実施形態にかかるデータ処理システム1000に加えてさらに、ジョブ受付部30とジョブ分割部40とを含む。
図7は、第2の実施形態にかかるデータ処理システム1000のブロック図である。図7に示すように、第2の実施形態にかかるデータ処理システム1000は、第1の実施形態にかかるデータ処理システム1000に加えてさらに、ジョブ受付部30とジョブ分割部40とを含む。
ジョブ受付部30は、ジョブの実行要求を受け付ける。ジョブ分割部40は、ジョブの処理対象であるテーブルを、複数のレコードセットに細分化することにより、ジョブを複数のタスクに分割する。タスク分割部10は、ジョブ分割部40から複数のタスクを受け付け、第1の実施形態と同様に動作する。
図8は、データ処理システム1000の動作を説明するフローチャートである。なお、図8に示された各処理のうち、図6に示された処理と実質的に同一のものには同一の符号が付されている。図8に示すように、ジョブ受付部30は、ジョブの実行要求を受け付ける(B100)。ジョブ分割部40は、実行要求を受け付けたジョブを、複数のタスクに分割する(B110)。以降、A110〜A130の処理が、第1の実施形態と同様にして実行される。
以上に説明したように、本実施形態にかかるデータ処理システム1000は、複数の計算機が並列して実行可能な並列処理と、前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理全体の処理時間を、最適化するデータ処理システム、データ処理方法およびプログラムを提供できる。その理由は、データ処理システム1000が、データ処理全体のボトルネックとなりやすい大きい逐次処理タスクができるだけ早く実行されるように、ジョブの実行をスケジューリングするからである。その結果、大きい逐次処理タスクが、他のタスクと重ね合わせて実行されるため、データ処理全体の処理時間が最適化される。
<第3の実施形態>
第3の実施形態にかかるデータ処理システム1000では、タスク分割部10の動作が、第1または第2の実施形態にかかるタスク分割部10の動作と異なる。タスク分割部10は、最も大きい逐次処理タスクよりも大きいタスクについては、タスクに含まれる並列処理可能タスクを分割する。タスク分割部10は、最も大きい逐次処理タスクよりも小さいタスクについては、タスクに含まれる並列処理可能タスクを分割しない。
第3の実施形態にかかるデータ処理システム1000では、タスク分割部10の動作が、第1または第2の実施形態にかかるタスク分割部10の動作と異なる。タスク分割部10は、最も大きい逐次処理タスクよりも大きいタスクについては、タスクに含まれる並列処理可能タスクを分割する。タスク分割部10は、最も大きい逐次処理タスクよりも小さいタスクについては、タスクに含まれる並列処理可能タスクを分割しない。
以下、3つのタスクに分割され得るジョブを、N台の計算機で処理する場合を例に、第3の実施形態におけるタスク分割部10の動作を説明する。図9、図10および図11は、第3の実施形態におけるタスク分割部10の動作を説明する図である。
図9は、3つのタスク(タスクA、タスクBおよびタスクC)を示している。図9に示すように、最も大きい逐次処理タスクは、タスクAの逐次処理タスクである。タスク分割部10は、タスクA〜Cの処理時間を、タスクAの逐次処理タスクの処理時間と比較する。タスクAおよびタスクBは、タスクAの逐次処理タスクよりも大きい。よって、タスク分割部10は、タスクAの並列処理可能タスクをN個のサブタスクに分割し、タスクBの並列処理可能タスクをN個のサブタスクに分割する。一方、タスクCは、タスクAの逐次処理タスクの処理時間よりも小さい。よって、タスク分割部10は、タスクCの並列処理可能タスクを分割しない。
図10は、図9に示されるタスクAの並列処理可能タスクと、タスクBの並列処理可能タスクが、サブタスクに分割された様子を説明する図である。図10に示すように、タスクAの並列処理可能タスクはN個のサブタスクに分割され、タスクBの並列処理可能タスクもN個のサブタスクに分割される。以降、タスクAの並列処理可能タスクから分割されたサブタスクを「タスクAのサブタスク」と記載する。タスクBの並列処理可能タスクから分割されたサブタスクを「タスクBのサブタスク」と記載する。
図11は、図10に示されるタスクが、N台の計算機に割り当てられた様子を示した図である。図11に示すように、割り当て部21は、タスクAのサブタスク、タスクAの逐次処理タスク、タスクBのサブタスク、タスクBの逐次処理タスクおよびタスクCを、複数の計算機1〜Nに割り当てる。
タスク分割部10がタスクCを分割しない理由は、以下の通りである。図11に示すように、ジョブ全体の処理時間のボトルネックは、タスクAの逐次処理タスクの処理時間である。計算機の数がいくら増えようと、タスクAの逐次処理タスクの処理時間は、短縮されることはない。よって、タスク分割部10が、仮に、タスクAの逐次処理タスクよりも処理時間が短いタスクCを並列化したとしても、ジョブ全体の処理時間は短くならない。
タスク分割部10がタスクCを分割しない理由は、以下の通りである。図11に示すように、ジョブ全体の処理時間のボトルネックは、タスクAの逐次処理タスクの処理時間である。計算機の数がいくら増えようと、タスクAの逐次処理タスクの処理時間は、短縮されることはない。よって、タスク分割部10が、仮に、タスクAの逐次処理タスクよりも処理時間が短いタスクCを並列化したとしても、ジョブ全体の処理時間は短くならない。
第3の実施形態におけるタスク分割部10は、最も大きい逐次処理タスクよりも小さいタスクについては、タスクに含まれる並列処理可能タスクを分割しない。第3の実施形態におけるデータ処理システム1000は、かかる構成を有することにより、不要な並列化を抑止し、不要な並列化によるオーバヘッドの発生を防止することができる。
なお、タスクAおよびタスクBがタスクAの逐次処理タスクよりも大きく、かつ、タスクAがタスクBよりも十分に大きい場合には、タスク分割部10は、タスクBの並列処理可能タスクの分割数を、タスクAの並列処理可能タスクの分割数よりも少なくしてもよい。このとき、割り当て部20は、タスクAの逐次処理タスクを処理する計算機に、タスクBのサブタスクを割り当てないようにスケジュールする。
具体的には、タスクAの一つのサブタスクとタスクAの逐次処理タスクとの合計処理時間が、タスクAの一つのサブタスクとタスクBの一つのサブタスクとタスクBの逐次処理タスクとの合計処理時間よりも長くなるのであれば、タスク分割部10は、タスクBのタスクBの並列処理可能タスクの分割数を、タスクAの並列処理可能タスクの分割数よりも少なくする。
例えば、タスクAの並列処理可能タスクがN個のサブタスクに分割され、タスクBの並列処理可能タスクがN−1個のサブタスクに分割された場合、割り当て部20は、タスクAの逐次処理タスクを処理する計算機(計算機1)には、タスクBのサブタスクを割り当てない。このようにスケジューリングすると、ジョブ全体の処理時間のボトルネックであるタスクAの逐次処理タスクの実行をさらに早めることができ、ジョブ全体の実行時間をさらに短くすることができる。
<第4の実施形態>
第4の実施形態にかかるデータ処理システム1000では、タスク分割部10と割り当て部20の動作が、第1、第2および第3の実施形態とは異なる。タスク分割部10は、タスクAの並列処理可能タスクを複数のサブタスクに分割する際、各サブタスクの処理するレコードの数が異なるように分割する。割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てる。割り当て部20は、それ以外の計算機には、サブタスクを割り当てない場合がある。
第4の実施形態にかかるデータ処理システム1000では、タスク分割部10と割り当て部20の動作が、第1、第2および第3の実施形態とは異なる。タスク分割部10は、タスクAの並列処理可能タスクを複数のサブタスクに分割する際、各サブタスクの処理するレコードの数が異なるように分割する。割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てる。割り当て部20は、それ以外の計算機には、サブタスクを割り当てない場合がある。
図12、図13および図14は、第4の実施形態における、タスク分割部10および割り当て部20の動作を説明する図である。図12〜図14に示すように、本例は、5つのタスクに分割され得るジョブを4台の計算機で処理する場合を扱う。
図12は、5つのタスク(タスクA〜E)を示している。図12に示すように、タスクAの逐次処理タスクは、タスクB〜タスクEの逐次処理タスクより大きい。タスク分割部10は、タスクAの並列処理可能タスクを、複数のサブタスクに分割する。
図13は、タスク分割部10が、図12に示されるタスクAの並列処理可能タスクを、サブタスクの処理するレコードの数が異なるように分割し、割り当て部20が、タスクAの逐次処理タスクが割り当てられる計算機(計算機1)に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てた様子を示す図である。図13に示す例では、タスクAの並列処理可能タスクは3つのサブタスクに分割され、3つのサブタスクは、それぞれ計算機1、計算機2、および計算機3に割り当てられている。図13に示す例では、計算機1に割り当てられたサブタスクは、計算機2および計算機3に割り当てられたサブタスクの2倍の大きさである。
割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機(計算機1)以外の計算機の中から、サブタスクを割り当てない計算機を選択する。図13に示す例では、計算機4にサブタスクが割り当てられていない。よって、計算機4は、サブタスクの実行結果を計算機1に転送する必要がない。割り当て部20は、逐次処理を実行する計算機(計算機1)へのデータ転送コストが高い計算機を、サブタスクを割り当てない計算機として選択することが好ましい。
図14は、本実施形態の効果を説明する図である。ここでは、図12に示されるタスクAの並列処理可能タスクが、サブタスクの処理するレコードの数が互いに等しくなるように分割された場合を想定する。図14に示すように、タスクAの並列処理可能タスクは4つのサブタスクに分割され、4つのサブタスクはそれぞれ計算機1ないし4に割り当てられる。図14に示すように、タスクAのサブタスク、タスクAの逐次処理タスクおよびタスクB〜Eが、4台の計算機(計算機1〜4)に割り当てられる。計算機2、3および4は、タスクAのサブタスクを実行すると、サブタスクの実行結果を計算機1に転送しなければならない。この場合、図13に示すようにタスクスケジュールした場合と比較して、計算機4のデータ通信コストが増大してしまう。
このように、第4の実施形態におけるタスク分割部10は、サブタスクの処理するレコードの数が異なるように、並列処理可能タスクを分割する。第4の実施形態にかかる割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てる。割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機以外の計算機の中から、サブタスクを割り当てない計算機を選択する。第4の実施形態におけるデータ処理システム1000は、かかる構成を有することにより、サブタスクが割り当てられない計算機のデータ転送コストを抑えることができる。
<第5の実施形態>
第5の実施形態にかかるデータ処理システム1000では、タスク分割部10および割り当て部20の動作が、第1、第2、第3および第4の実施形態とは異なる。本実施形態にかかるデータ処理システム1000は、レコードセットに含まれるレコードを所定の順序で処理する逐次処理タスクを扱う。
第5の実施形態にかかるデータ処理システム1000では、タスク分割部10および割り当て部20の動作が、第1、第2、第3および第4の実施形態とは異なる。本実施形態にかかるデータ処理システム1000は、レコードセットに含まれるレコードを所定の順序で処理する逐次処理タスクを扱う。
データ処理システム1000において、タスク分割部10は、タスクの実行命令を受け付ける際に、レコードの処理順序を定める情報を受け付ける。タスク分割部10は、タスクに含まれる逐次処理タスクの処理実行時間を、タスクの処理対象であるレコードセットが含むレコードの数に基づいて算出する。タスク分割部10は、他の逐次処理タスクと比較して大きい逐次処理タスクの前処理である並列処理可能タスクを複数のサブタスクに分割する。タスク分割部10は、レコードの処理順序に従って、レコードセットをより細かいレコードの集合に細分化する。
例えば、200件のレコードを処理対象とするタスクを、4台の計算機により処理する場合、タスク分割部10は、50件のレコードを含む4つの集合にレコードセットを分割する。この場合、タスク分割部10は、最初に処理されるレコードから50番目に処理されるレコードまでを、1つ目のサブタスクが処理するレコードの集合とする。タスク分割部10は、51番目に逐次処理されるレコードから100番目に逐次処理されるレコードまでを、2つ目のサブタスクが処理するレコードの集合とする。タスク分割部10は、101番目に逐次処理されるレコードから150番目に逐次処理されるレコードまでを、3つ目のサブタスクが処理するレコードの集合とする。タスク分割部10は、151番目に逐次処理されるレコードから200番目に逐次処理されるレコードまでを、4つ目のサブタスクが処理するレコードの集合とする。
割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機に、逐次処理タスクが処理する最初のレコードを処理対象に含むサブタスクを割り当てる。
図15は、割り当て部20が、逐次処理タスクが割り当てられる計算機(計算機1)に、逐次処理タスクが処理する最初のレコードを処理対象に含むサブタスクを割り当てた様子を示す図である。図16は、第5の実施形態の効果を説明するための図である。図15および図16において、計算機1に割り当てられたサブタスクは、「最初に処理されるレコードを処理対象に含むサブタスク(図15ないし図18においてαと記載)」である。図15において、計算機2、3および4に割り当てられたサブタスクは、「最初に処理されるレコードを処理対象に含まないサブタスク(図15ないし図18においてβと記載)」である。
図16は、図15に示されるようにスケジュールされた場合において、計算機2によるサブタスクの実行に遅延が発生した様子を示している。図16に示すように、計算機2の遅延は、ジョブ全体の処理時間に何ら影響していない。なぜなら、計算機1が最初のレコードを処理対象に含むサブタスクの実行を完了した時点で、計算機1は、逐次処理タスクの実行を開始できるからである。計算機2は、計算機1が逐次処理タスクを実行している間に、計算機2に割り当てられたサブタスクの実行を完了し、実行結果を計算機1に送信する。この場合、計算機2によるサブタスクの実行の遅延は、ジョブ全体の処理時間に影響を及ぼさない。
図17および図18は、第5実施形態に係る効果を説明するための図である。図17および図18においても、「最初に処理されるレコードを処理対象に含むサブタスク」を図においてαと記載し、「最初に処理されるレコードを処理対象に含まないサブタスク」を図においてβと記載している。図17は、割り当て部20が、最初に処理されるレコードを処理対象に含むサブタスクを、逐次処理タスクが割り当てられた計算機(計算機1)に割り当てなかった場合の様子を示す図である。図17に示すように、最初に処理されるレコードを処理対象に含むサブタスクは、計算機2に割り当てられている。
図18は、図17に示されるようにスケジュールされた場合において、計算機2によるサブタスクの実行に遅延が発生した様子を示している。図18に示すように、計算機2の遅延は、ジョブ全体の処理時間を遅延させている。なぜなら、計算機2によるサブタスクの実行が終了しないと、計算機1は、逐次処理タスクの実行を開始できないからである。
このように、第5の実施形態における割り当て部20は、並列処理可能タスクの後処理である逐次処理タスクが割り当てられる計算機に、逐次処理タスクが処理する最初のレコードを処理対象に含むサブタスクを割り当てる。第5の実施形態におけるデータ処理システム1000は、かかる構成を有することにより、例えば誤差やシステム障害などによるタスクの再実行などの影響で遅延が発生した場合においても、逐次処理タスクの開始時間に影響が及ぶことを防止することができる。
なお、第5の実施形態におけるデータ処理システム1000では、タスク分割部10の代わりに、ジョブ受付部30が、レコードの処理順序を定める情報の入力を受け付けても良い。
<第6の実施形態>
第6の実施形態にかかるデータ処理装置1000は、結合(JOIN)処理と、結合処理の後処理である走査処理と、を含むデータ処理を、テーブルに対して実行する。
第6の実施形態にかかるデータ処理装置1000は、結合(JOIN)処理と、結合処理の後処理である走査処理と、を含むデータ処理を、テーブルに対して実行する。
図19は、第6の実施形態にかかるデータ処理装置1000における、テーブル、レコードセット、レコードの一例を示す図である。図19は、あくまで説明をわかりやすくするための一例に過ぎず、テーブル、レコードセット、レコードを限定的に解釈するためのものではない。
図19に例示するように、レコードは、レコード識別子(ID)、支店名、顧客IDおよび取引時刻を含む。ここで、レコードID、支店名、顧客IDおよび取引時刻は、レコードの属性である。レコードが有する属性は、「逐次処理が実行される単位を決定する属性」を含む。
「逐次処理が実行される単位を決定する属性」の値は、レコードがどのレコードセットに属するかを決定する。例えば、「支店名」という属性が、「逐次処理が実行される単位を決定する属性」である場合、支店名の値が共通するレコードの集合がレコードセットである。
本実施形態にかかる並列処理は、例えば、図19に示される取引テーブルと、図示しないマスタテーブルとを、支店名をキーとして結合する。そして、本実施形態にかかる逐次処理は、例えば、結合後のレコードに対して、同じ支店名を有するレコードセットの中で、レコードを取引時刻順に走査する。
図20は、図19に示されるテーブルに関する統計情報(以下、統計情報と記載)の一例である。図20に示すように、統計情報の一例は、逐次処理が実行される単位を決定する属性(図20に示す例では、支店名)の値ごとのレコード数を示すヒストグラムである。図20に示す統計情報は、あくまで説明をわかりやすくするための一例に過ぎず、統計情報を限定的に解釈するものではない。統計情報は、例えば、レコードの総量や、逐次処理が実行される単位を決定する属性の値ごとのレコード数の偏りなどの情報を含んでいても良い。
また、レコードは、逐次処理が実行される順序を決定する属性を含んでいても良い。例えば、取引時刻が、逐次処理が実行される順序を決定する属性である場合、逐次処理は、レコードセットの中で取引時刻が早い順に実行されるとしてもよい。前述した統計情報は、逐次処理が実行される順序を決定する属性の値ごとの分布などの情報を含んでいても良い。
図21は、第6の実施形態にかかるデータ処理システム1000のブロック図である。なお、図21に示された各構成のうち、図2および図7に示された構成と実質的に同一のものには同一の符号が付されている。図21に示すように、第6の実施形態にかかるデータ処理システム1000は、タスク分割部10、レコード情報収集部110、割り当て部20、ジョブ受け付け部30、ジョブ分割部40、およびデータ格納部300を含む。
ジョブ受付部30は、ジョブの実行要求を受け付ける。ジョブの実行要求は、データ処理の内容を特定する情報と、処理対象であるテーブルを特定する情報とを含む。データ処理の内容を特定する情報は、例えば、ジョブ処理時間のどれくらいの割合が並列実行可能かのパラメータを含む。ジョブ受付部30は、ジョブの実行要求に含まれる、処理対象であるテーブルを特定する情報をレコード情報収集部110に対して出力する。
レコード情報収集部110は、処理対象であるテーブルを特定する情報に基づいて、データ格納部300から、統計情報を取得する。レコード情報収集部110は、データ格納部300に格納されているテーブルを読み込んで、統計情報を算出するとしてもよい。あるいは、レコード情報収集部110は、データ格納部300がテーブルとともに予め格納している統計情報を取得するとしてもよい。レコード情報収集部110は、統計情報をジョブ分割部40に対して出力する。
ジョブ分割部40は、統計情報に基づいて、ジョブ受付部30が受け付けたジョブを、複数のタスクに分割する。例えば、ジョブ受付部30が、図19に示すテーブルを処理対象とするジョブを受け付けた場合を説明する。図19に示すテーブルには、600件のレコードが含まれている。
支店名の値が共通するレコードの集合がレコードセットである場合、ジョブ分割部40は、600件のレコードを含むテーブルを、200件のレコードを含むレコードセット1つ(東京支店)と、100件のレコードを含むレコードセット2つ(札幌支店、仙台支店)と、50件のレコードを含むレコードセット2つ(横浜支店、大阪支店)と、25件のレコードを含むレコードセット4つ(京都支店、神戸支店、広島支店、福岡支店)とに分割する。
タスク分割部10は、分割された複数のタスクの実行要求を受け付ける。そして、タスク分割部10は、データ処理の内容を特定する情報と、統計情報とに基づいて、タスクおよびタスクに含まれる逐次処理タスクの処理時間を算出する。例えば、タスク分割部10は、タスクの処理対象であるレコードセットが含むレコードの数と、ジョブ受付部30が受け付けたデータ処理の内容を特定する情報と、を入力として、タスクの処理時間を算出する。タスク分割部10は、タスクを複数のサブタスクと一つの逐次処理タスクに分割する。
割り当て部20は、サブタスクが、対応する逐次処理タスクや他のタスクが実行されるより前に実行されるように、複数のサブタスクを、複数の計算機に割り当てる。
第6の実施形態におけるデータ処理システム1000は、かかる構成を有することにより、結合処理と結合処理の後処理である走査処理とを含むデータ処理をテーブルに対して実行するジョブの処理時間を、最適化するデータ処理システム、データ処理方法およびプログラムを提供できる。
<第7の実施形態>
第7の実施形態にかかるデータ処理装置1000は、ジョブ分割部41と、タスク分割部11と、割り当て部21の動作が、第6の実施形態と異なる。第7の実施形態にかかるデータ処理装置1000は、デッドラインを考慮しながら、タスクの分割と割り当てを行う。
第7の実施形態にかかるデータ処理装置1000は、ジョブ分割部41と、タスク分割部11と、割り当て部21の動作が、第6の実施形態と異なる。第7の実施形態にかかるデータ処理装置1000は、デッドラインを考慮しながら、タスクの分割と割り当てを行う。
図22は、第7の実施形態にかかるデータ処理システム1000のブロック図である。なお、図22に示された各構成のうち、図21に示された構成と実質的に同一のものには同一の符号が付されている。
ジョブ分割部41は、デッドラインを算出する。デッドラインは、例えば、ジョブの処理時間を計算機の数で平均した時間である。タスク分割部11は、タスクの処理時間がデッドラインを超える場合、タスクを分割する。割り当て部21は、後述するように、デッドラインの位置の調整を行う。
以下、4つのタスクに分割され得るジョブを、4台の計算機で処理する場合を例に、デッドラインを説明する。図23は、4つのタスク(タスクA〜D)を、4台の計算機に割り当てた様子を示した図である。図23に示される点線は、全タスク(A〜D)の処理時間を、計算機の数(4台)で平均した時間(平均処理時間)を示している。ジョブが理想的にスケジューリングされれば、ジョブの実行は、この平均処理時間内で完了する。そこで、ジョブ分割部40Aは、この平均処理時間をデッドラインとして設定する。
タスク分割部10Aは、最も大きいタスクAの処理時間を算出する。タスクAの処理時間は、デッドラインを超える。図23に示すように、このままでは、タスクAの処理時間がジョブ全体の処理時間のボトルネックになる。そこで、タスク分割部10Aは、タスクAを分割する。割り当て部20は、タスクAのサブタスクを、計算機1〜4に割り当てる。
図24は、このように割り当てられたタスクの様子を示した図である。しかし、図24に示されるように、タスク分割部10AがタスクAを分割したとしても、タスクAの処理時間はデッドラインを超えてしまう。図24に示す例では、どのようにタスクを分割してもタスクAの逐次処理タスクがデッドラインを超えてしまうため、ジョブの実行をデッドライン内で完了させるようなスケジューリングはできない。そこで、割り当て部20は、デッドラインの位置を全タスクの平均処理時間(旧デッドライン)から、タスクAの逐次処理サブタスクの完了時間(新デッドライン)に変更する。
2番目に大きいタスクBの処理時間は、旧デッドラインを超えているが、新デッドラインを超えていない。よって、タスク分割部10は、タスクBを分割しない。タスク分割部10が、タスクBを分割したとしても、ジョブ全体の処理時間は新デッドラインよりも早くならないためである。
[動作の説明]図25は、データ処理システム1000の動作を説明するフローチャートである。図25に示すように、ジョブ受付部30は、ジョブの実行要求を受け付ける(C100)。レコード情報収集部110は、ジョブ受付部30が受け付けたジョブの実行要求に含まれる処理対象であるテーブルを特定する情報に基づいて、データ格納部300から、ジョブの処理対象である統計情報を取得する(C110)。
[動作の説明]図25は、データ処理システム1000の動作を説明するフローチャートである。図25に示すように、ジョブ受付部30は、ジョブの実行要求を受け付ける(C100)。レコード情報収集部110は、ジョブ受付部30が受け付けたジョブの実行要求に含まれる処理対象であるテーブルを特定する情報に基づいて、データ格納部300から、ジョブの処理対象である統計情報を取得する(C110)。
次に、ジョブ分割部10は、ジョブの実行要求に含まれるデータ処理の内容を特定する情報と、取得した統計情報等に基づいて、ジョブの処理時間を算出する。そして、ジョブ分割部10は、ジョブの処理時間を計算機の数で平均することにより、デッドラインを算出する(C120)。
ジョブ分割部40は、統計情報に基づいて、ジョブを複数のタスクに分割する。タスク分割部10は、分割したタスクを大きい順に未スケジュールタスクキューに格納する(C130)。そして、タスク分割部10は、未スケジュールタスクキューが空になるまで以下の処理を繰り返す(C140)。
タスク分割部10は、未スケジュールタスクキューからタスクを取り出し、その処理時間を算出する(C150)。タスク分割部10は、算出した処理時間がデッドラインを超えるかどうかを判定する。(C160)。処理時間がデッドラインを超える場合、タスク分割部10は、そのタスクを分割する(C170)。処理時間がデッドラインを越えない場合、データ処理システム1000は、C180の処理に進む。
割り当て部20は、タスク、サブタスクおよび逐次処理タスクを、サブタスクが、他のタスクおよび逐次処理タスクより前に実行されるように、計算機に割り当てる(C180)。
割り当て部20は、スケジュールした結果、逐次処理タスクの処理時間がデッドラインを超えているかを判定する(C190)。逐次処理タスクの処理時間がデッドラインを超えていた場合、割り当て部20は、当該逐次処理タスクが完了する時間を新デッドラインとする(C200)。
第7の実施形態にかかるデータ処理装置1000は、デッドラインを考慮しながら、タスクの分割と割り当てを行う。かかる構成により、第7の実施形態にかかるデータ処理システム1000は、不要な並列化を抑止し、不要な並列化によるオーバヘッドの発生を防止することができる。
<第8の実施形態>
第8の実施形態にかかるデータ処理装置1000では、割り当て部20が出力した結果に基づいて、タスク実行部200がタスクを実行する。
第8の実施形態にかかるデータ処理装置1000では、割り当て部20が出力した結果に基づいて、タスク実行部200がタスクを実行する。
図26は、第8の実施形態にかかるデータ処理システム1000のブロック図である。なお、図26に示された各構成のうち、図21に示された構成と実質的に同一のものには同一の符号が付されている。図26に示すように、第8の実施形態にかかるデータ処理システム1000は、タスク分割部10、レコード情報収集部110、割り当て部20、ジョブ受け付け部30、ジョブ分割部40、タスク実行部200A〜200N、およびデータ格納部300を含む。なお、タスク実行部200A〜200Nは、タスク実行部200と略記することがある。
割り当て部20は、タスク、サブタスク、逐次処理タスクをタスク実行部200に割り当てた結果を、スケジュールデータとして出力する。タスク実行部200は、割り当てられたタスクを実行する。
図27は、図26に示されるタスク実行部200の構成を示すブロック図である。図27に示すように、タスク実行部200は、スケジュールデータ取得部210、タスク処理部220、進捗共有部230、および出力部240を含む。
スケジュールデータ取得部210は、割り当て部20により出力されるスケジュールデータを取得する。スケジュールデータ取得部210は、割り当て部20からスケジュールデータを入力しても良いし、割り当て部20により参照可能な場所に出力されたスケジュールデータを読み込んでも良い。タスク処理部220は、割り当てられたタスクを実行する。
進捗共有部230は、割り当てられたタスクの進捗(例えば、未実行、実行中、実行済み)を、他のタスク実行部200と共有する。進捗共有部230は、他のタスク実行部200と通信することにより、進捗を共有しても良いし、スケジュールデータにタスクの進捗を書き込み、スケジュールデータからタスクの進捗を読み出すことにより、進捗を共有しても良い。出力部240は、割り当てられたタスクの処理結果であるデータを出力する。
図28は、割り当て部20が出力するスケジュールデータの一例を示す図である。図28に示される例は、あくまで説明をわかりやすくするための一例に過ぎず、スケジュールデータを限定的に解釈するためのものではない。
以下、タスク実行部200に割り当てられた、タスク、サブタスクおよび逐次処理タスクを、まとめて「タスク」と略記することがある。
図28に示すスケジュールデータは、図29に示したタスクの割り当ての様子に対応している。図28に示すように、スケジュールデータは、例えば、タスクID、割当先ID、処理対象レコード、優先度、タスク種別および集約先タスクIDを含む。
タスクIDは、あるタスクを他のタスクから識別する識別子である。割り当て先IDは、当該タスクを処理するタスク実行部200を識別する情報である。処理対象レコードは、タスクの処理対象であるレコードを示す情報である。優先度は、タスク実行部200に複数のタスクが割り当てられた場合の、タスクが処理される順番を示す情報である。図28に示される例では、優先度は、小さい値ほど優先度が高いことを表している。タスク種別は、当該タスクが、分割されていないタスクなのか(Normal)、サブタスクなのか(Parallelized)、あるいは逐次処理タスクなのか(Sequential)を示す情報である。集約先タスクIDは、サブタスクに対応する逐次処理タスクのタスクIDである。
処理対象レコードは、例えば、逐次処理が実行される単位を決定する属性(支店名)の値もしくは値域や、逐次処理が実行される順序を決定する属性(取引時刻)の値もしくは値域、またはその組み合わせで指定されていても良い。
サブタスク(Parallelized)の処理対象レコードは、サブタスクに対応するタスクの処理対象であるレコードを、タスク実行部200の数でハッシュ分散することにより決定されてもよい。例えば、サブタスクの処理対象であるレコードは、ハッシュ値の辞書順で、各タスク実行部200に振り分けられても良い。
図30は、タスク実行部200の動作を説明するフローチャートである。図30に示すように、タスク実行部200は、割り当て部20により割り当てられたタスクがなくなるまで以下の処理を繰り返す(D100)。
タスク実行部200は、割り当てられたタスクのうち優先度の高いタスクを一つ取り出す。そしてタスク実行部200は、取り出したタスクが逐次処理タスク(Sequential)であるかを判定する(D110)。取り出したタスクが逐次処理タスク(Sequential)であれば、D150の処理に進む。取り出したタスクが逐次処理タスクでなければ(Normal または Parallelized)、タスク実行部200は、取り出したタスクの処理対象レコードをデータ格納部300より取得し、当該タスクを実行する(D120)。
タスク実行部200は、取り出したタスクがサブタスク(Parallelized)であるかを判定する(D130)。取り出したタスクがサブタスク(Parallelized)であれば、サブタスクを実行後、集約先タスクIDに対応する逐次処理タスクに対して、処理の完了を通知する(D140)。取り出したタスクがサブタスク(Parallelized)でなければ(Normal)、D100の処理に戻り、次に優先度の高いタスクを取り出す。
D110の処理で、タスク実行部200が、逐次処理タスク(Sequential)を取り出した場合、タスク実行部200は、当該逐次処理タスクに対応するサブタスクの実行が完了するまで待ち(D150)、逐次処理タスクを実行できるところまで実行する(D160)。タスク実行部200が、逐次処理タスクの実行を完了したか否かを判定する(D170)。タスク実行部200が、逐次処理タスクの実行を完了した場合、D100の処理に進み、逐次処理タスクの実行を完了していないなら、対応するサブタスクの実行完了を待つ(D150)。
以上に説明したように、第8の実施形態にかかるデータ処理装置1000では、割り当て部20により出力された結果に基づいて、タスク実行部200がタスクを実行する。
<第8の実施形態の変形例>
なお、タスク処理部220は、割り当てられたタスクを実行する際、他のタスク処理部200と、タスクの進捗状況を共有しても良い。図31は、タスクの進捗状況が共有される場合のスケジュールデータの一例を示す図である。図31に示されるように、スケジュールデータは、タスクID毎に、例えば、未実行、実行中、実行完了の三状態を保持する進捗の項目を含む。
なお、タスク処理部220は、割り当てられたタスクを実行する際、他のタスク処理部200と、タスクの進捗状況を共有しても良い。図31は、タスクの進捗状況が共有される場合のスケジュールデータの一例を示す図である。図31に示されるように、スケジュールデータは、タスクID毎に、例えば、未実行、実行中、実行完了の三状態を保持する進捗の項目を含む。
第8の実施形態の変形例にかかるタスク処理部220は、割り当てられたタスクが実行済みであって、他のタスク実行部200に割り当てられたタスクが未実行である場合に、前記未実行のタスクを代わりに実行する。例えば図32に示される例では、タスク実行部200Aが、タスクID「F」に対応するタスクの実行を完了した時点で、他に割り当てられたタスクが無い。そこで、タスク実行部200Aは、タスク実行部200BからタスクID「G」に対応するタスクを代わりに実行しても良い。
第8の実施形態の変形例にかかるデータ処理システム1000は、かかる構成を有することにより、たとえ、実行時にシステム障害やタスクの見積もり誤差のため、タスクの処理時間が増減したとしても、動的にタスクの実行を平準化することができる。さらに、割り当て部20が、処理時間が長いタスクを優先して実行するようにスケジュールすると、タスク処理部220間で、細かいタスクで再分配するので、タスクの実行は、より平準化されやすくなる。
<第9の実施形態>
第9の実施形態にかかるデータ処理システム1000は、分散並列実行基盤の上で実行される。図33は、第9の実施形態にかかるデータ処理システム1000のブロック図である。なお、図33に示された各構成のうち、図21に示された構成と実質的に同一のものには同一の符号が付されている。
第9の実施形態にかかるデータ処理システム1000は、分散並列実行基盤の上で実行される。図33は、第9の実施形態にかかるデータ処理システム1000のブロック図である。なお、図33に示された各構成のうち、図21に示された構成と実質的に同一のものには同一の符号が付されている。
図33に示すように、第9の実施形態にかかるデータ処理システム1000は、スケジューリング部100と、タスク実行部400A〜Nと、データ格納部500A〜Nとを含む。なお、タスク実行部400A〜Nは、タスク実行部400と略記することがある。また、データ格納部500A〜Nは、データ格納部500と略記することがある。
図33に示すように、データ処理システム1000において、スケジュール部100は、タスク分割部10、割り当て部20、ジョブ受付部30、ジョブ分割部40、レコード情報収集部110を含む。
図34は、図33に示されるタスク実行部400の構成を示すブロック図である。図34に示されるように、第9の実施形態にかかるタスク実行部400は、スケジュールデータ取得部410、レコード取得部420、シャッフルキー付与部430、レコード送信部440、レコード受信部450 タスク処理部460、出力部470を含む。
スケジュールデータ取得部410は、スケジュール部100により出力されたスケジュールデータを取得する。レコード取得部420は、スケジュールデータとは無関係に、当該タスク実行部400の近傍にあるデータ格納部500が記憶するレコードを取得する。シャッフルキー付与部430は、レコード取得部420が取得したレコードに、スケジュールデータに基づいたシャッフルキーを付与する。レコード送信部440は、レコードに付与されたシャッフルキーに基づいて、レコードを他のタスク処理部400のレコード受信部450に対して送信する。
レコード受信部450は、他のタスク処理部400から、シャッフルキーが付与されたレコードを受信する。タスク処理部460は、レコードに付与されたシャッフルキーに基づいて、レコードに対してタスクを実行する。出力部470は、処理結果を出力する。
図35は、シャッフルキーの一例を説明する図である。図35に示す例は、あくまで説明をわかりやすくするための一例に過ぎず、シャッフルキーを限定的に解釈するためのものではない。図35に示したシャッフルキーは、図29に示されるスケジュールデータに対応している。
第9の実施形態にかかるデータ処理システム1000では、各タスク実行部400は、分配されたレコードに付与されたシャッフルキーの辞書順でタスクを実行する。そこで、シャッフルキー付与部430は、各タスク実行部400が、スケジューリングされた順番通りに個々のタスクを実行するように、以下のようにシャッフルキーを構成する。
シャッフルキー付与部430は、タスクの種別を示すタグをレコードの先頭に付与する。この時、サブタスクに対するレコードであるほうが、そうでないタスクに対するレコードよりも辞書順で先に並ぶようにタグを決める。図35に示される例では、サブタスクに対するレコードであれば「0」を、分割されていないタスクであれば「1」を付与している。こうすることで、サブタスクがより先に実行されるようになる。
そして、シャッフルキー付与部430は、実行の優先度を表すタグをレコードに付与する。図35に示す例では、優先度の数字が小さいほど優先度が高いように表現してある。この情報は、タスク処理時間が長いものだけ付与してもよい。というのは、タスクの処理時間が短いものは、数が多くなりやすく、その順序はあまり影響を与えないからである。
シャッフルキー付与部430は、タスク識別子を表すタグをレコードに付与する。この時、サブタスクのタスク識別子は「A−1」、「A−2」、「A−3」…「A−N」のようにナンバリングする。例えば「A−1」のサブタスクを割り当てられたタスク実行部400が、対応する逐次処理タスクも担当する、というルールが、予め設定されていても良い。
図35に示される例では、シャッフルキー自身に、割当先のタスク実行部400を識別するタグが付与されている。しかし、シャッフルキーは必ずしもこのように構成されている必要はない。例えば、レコード送信部440が、逐次処理が実行される単位を決定する属性(支店名)の値を参照して、レコードを送信する先のタスク実行部400を判断しても良い。レコード送信部440は、レコードの統計情報等の情報を用いて、レコードを送信する先のタスク実行部400を判断しても良い。
タスク処理部450は、シャッフルキーの辞書順でタスク識別子単位ごとにレコードを処理すればよい。
次に、逐次処理タスクを担当するタスク実行部400が、対応するサブタスクの実行が完了したか否かを判断する方法を説明する。例えば、タスク実行部400が、タスク識別子を名前にもつ中間ファイルの生成有無を確認するという方法がある。他の方法には、例えば、データ処理システム1000に、タスクの進捗状態を管理するマスタサーバを導入するという方法がある。逐次処理タスクを担当するタスク実行部400は、例えば上記のような方法で、他のタスク実行部400で実行されたサブタスクの進捗状況を認識し、計算に必要な中間データを適宜取得して、逐次処理タスクを実行すればよい。
以上に説明したように、第9の実施形態にかかるデータ処理システム1000によれば、分散並列実行基盤の上で動作する、並列処理と逐次処理とを含むデータ処理全体の処理時間を最適化するデータ処理システム、データ処理方法およびプログラムを提供できる。
発明を実施するための形態に記載したテーブルは、請求の範囲に記載したデータセットに相当する。発明を実施するための形態に記載したタスク実行部200またはタスク実行部400は、請求の範囲に記載した計算機に相当する。
この出願は、2012年10月31日に出願された日本出願特願2012−239782を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明の活用例として、企業の基幹システムのバッチ処理の高速化をあげることができる。
1 CPU
2 RAM
3 HDD
4 通信インタフェース
5 入力装置
6 出力装置
10 タスク分割部
20 割り当て部
21 割り当て部
30 ジョブ受付部
31 ジョブ受付部
40 ジョブ分割部
41 ジョブ分割部
100 スケジュール部
110 レコード情報収集部
200A〜N タスク実行部
210 スケジュールデータ取得部
220 タスク処理部
230 進捗共有部
240 出力部
300 データ格納部
400A〜N タスク実行部
410 スケジュールデータ取得部
420 レコード取得部
430 シャッフルキー付与部
440 レコード送信部
450 レコード受信部
460 タスク処理部
470 出力部
500A〜N データ格納部
1000 データ処理システム
2 RAM
3 HDD
4 通信インタフェース
5 入力装置
6 出力装置
10 タスク分割部
20 割り当て部
21 割り当て部
30 ジョブ受付部
31 ジョブ受付部
40 ジョブ分割部
41 ジョブ分割部
100 スケジュール部
110 レコード情報収集部
200A〜N タスク実行部
210 スケジュールデータ取得部
220 タスク処理部
230 進捗共有部
240 出力部
300 データ格納部
400A〜N タスク実行部
410 スケジュールデータ取得部
420 レコード取得部
430 シャッフルキー付与部
440 レコード送信部
450 レコード受信部
460 タスク処理部
470 出力部
500A〜N データ格納部
1000 データ処理システム
Claims (9)
- 複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割するタスク分割手段と、
前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当て手段と、
を有するデータ処理システム。 - 複数のレコードの集合であるデータセットに対して前記データ処理を実行するジョブを受け付けるジョブ受付手段と
前記ジョブの処理対象であるデータセットを複数のレコードセットへと細分化することにより、前記ジョブを複数のタスクへと分割するジョブ分割手段と、
を更に含み、
前記タスク分割手段は、前記分割された複数のタスクを受け付ける
請求項1に記載のデータ処理システム。 - 前記タスク分割手段は、タスクの処理時間が、最も長い逐次処理の処理時間より短い場合、前記タスクに含まれる並列処理を分割しない
請求項1または2に記載データ処理システム。 - 前記タスク分割手段は、サブタスクの処理するレコードの数が異なるように前記並列処理を分割し、前記割り当て手段は、前記並列処理の後処理である逐次処理が割り当てられる計算機に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てる
請求項1から3のいずれか1項に記載のデータ処理システムであって、データ処理システム。 - 前記割り当て手段は、前記並列処理の後処理である逐次処理が割り当てられる計算機に、前記逐次処理が処理する最初のレコードを処理対象に含むサブタスクを割り当てる
請求項1から4のいずれか1項に記載のデータ処理システム。 - 前記割り当て手段は、前記タスク、前記サブタスクおよび前記サブタスクの後処理である逐次処理のそれぞれに、割当先の計算機と優先順位とを対応付けたスケジュールデータを、前記複数の計算機から参照可能な形態で出力し、
前記計算機は、
前記スケジュールデータを取得するスケジュールデータ取得手段と、
割り当てられたタスクを、前記スケジュールデータに含まれる優先順位の高い順に実行するタスク処理手段と、
を備え、
前記タスク処理手段は、前記割り当てられたタスクが実行済みであって、他の計算機に割り当てられたタスクが未実行である場合に、前記未実行のタスクを実行する
請求項1から5のいずれか1項に記載のデータ処理システム。 - 前記割り当て手段は、前記タスク、前記サブタスクおよび前記サブタスクの後処理である逐次処理のそれぞれに、割当先の計算機と処理対象であるレコードとを対応付けたスケジュールデータを、前記複数の計算機から参照可能な形態で出力し、
前記計算機は、
レコードを取得するレコード取得手段と、
前記スケジュールデータを取得するスケジュールデータ取得手段と、
前記取得したスケジュールデータに基づいて、前記取得したレコードを、前記レコードを処理対象とする処理の割当先である計算機に対して送信するレコード送信手段と、
を備える
請求項1から5のいずれか1項に記載のデータ処理システム。 - 複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する分割ステップと、
前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当てステップと、
を含むデータ処理方法。 - コンピュータに、
複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する手順と、
前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる手順と、
を実行させるためのプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012239782 | 2012-10-31 | ||
JP2012239782 | 2012-10-31 | ||
PCT/JP2013/006380 WO2014068950A1 (ja) | 2012-10-31 | 2013-10-29 | データ処理システム、データ処理方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2014068950A1 JPWO2014068950A1 (ja) | 2016-09-08 |
JP6183374B2 true JP6183374B2 (ja) | 2017-08-23 |
Family
ID=50626899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014544306A Active JP6183374B2 (ja) | 2012-10-31 | 2013-10-29 | データ処理システム、データ処理方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US9430285B2 (ja) |
JP (1) | JP6183374B2 (ja) |
WO (1) | WO2014068950A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690626B2 (en) * | 2014-06-27 | 2017-06-27 | Vmware, Inc. | Processing workloads in single-threaded environments |
US20160164696A1 (en) * | 2014-12-08 | 2016-06-09 | Ebay Inc. | Modular internet of things |
CN104991821B (zh) * | 2015-06-29 | 2019-12-06 | 北京奇虎科技有限公司 | 批量处理监控任务的方法及装置 |
US10296380B1 (en) * | 2016-09-19 | 2019-05-21 | Amazon Technologies, Inc. | Distributed computing with adaptive parallelization |
US10534645B2 (en) * | 2016-11-23 | 2020-01-14 | Wipro Limited | Method and system for executing processes in a virtual storage area network |
US10387207B2 (en) * | 2016-12-06 | 2019-08-20 | International Business Machines Corporation | Data processing |
CN108255820B (zh) * | 2016-12-28 | 2022-03-04 | 阿里巴巴集团控股有限公司 | 分布式系统中数据入库的方法、装置以及电子设备 |
CN108255586B (zh) * | 2016-12-29 | 2022-04-22 | 北京国双科技有限公司 | 功能服务的排序方法及装置 |
CN108549583B (zh) * | 2018-04-17 | 2021-05-07 | 致云科技有限公司 | 大数据处理方法、装置、服务器及可读存储介质 |
JP7385989B2 (ja) * | 2018-12-12 | 2023-11-24 | 日立Astemo株式会社 | 演算制御装置 |
CN110569118A (zh) * | 2019-08-29 | 2019-12-13 | 贝壳技术有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN112415862B (zh) * | 2020-11-20 | 2021-09-10 | 长江存储科技有限责任公司 | 一种数据处理系统及方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5121494A (en) | 1989-10-05 | 1992-06-09 | Ibm Corporation | Joining two database relations on a common field in a parallel relational database field |
US6691101B2 (en) * | 2001-06-21 | 2004-02-10 | Sybase, Inc. | Database system providing optimization of group by operator over a union all |
JP2003256193A (ja) * | 2002-02-28 | 2003-09-10 | Nec Corp | 並列ソート装置及び並列ソート方法並びにプログラム |
US7644050B2 (en) * | 2004-12-02 | 2010-01-05 | International Business Machines Corporation | Method and apparatus for annotation-based behavior extensions |
JP4908363B2 (ja) | 2007-09-25 | 2012-04-04 | 株式会社東芝 | 情報処理装置、並列処理最適化方法およびプログラム |
US8402469B2 (en) * | 2008-04-08 | 2013-03-19 | Infosys Limited | Allocating resources for parallel execution of query plans |
US8185901B2 (en) * | 2008-04-24 | 2012-05-22 | International Business Machines Corporation | Parsing an application to find serial and parallel data segments to minimize migration overhead between serial and parallel compute nodes |
US7797445B2 (en) * | 2008-06-26 | 2010-09-14 | International Business Machines Corporation | Dynamic network link selection for transmitting a message between compute nodes of a parallel computer |
US8489633B2 (en) * | 2009-03-06 | 2013-07-16 | Hewlett-Packard Development Company, L.P. | Correlated query process (CQP) and peer-to-peer (P2P) execution |
JP5408442B2 (ja) * | 2010-01-21 | 2014-02-05 | 株式会社日立製作所 | 並列分散処理方法、及び、計算機システム |
JP5521644B2 (ja) | 2010-02-26 | 2014-06-18 | 日本電気株式会社 | ハイブリッド並列処理システム、方法、及びプログラム |
JP2011197803A (ja) * | 2010-03-17 | 2011-10-06 | Ricoh Co Ltd | プログラム実行制御方法 |
US9495427B2 (en) * | 2010-06-04 | 2016-11-15 | Yale University | Processing of data using a database system in communication with a data processing framework |
WO2012023175A1 (ja) | 2010-08-17 | 2012-02-23 | 富士通株式会社 | 並列処理制御プログラム、情報処理装置、および並列処理制御方法 |
US8260803B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
US8260826B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
KR101710910B1 (ko) * | 2010-09-27 | 2017-03-13 | 삼성전자 주식회사 | 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치 |
KR20120072252A (ko) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 분산 데이터 스트림 처리 시스템에서 연속 처리 태스크를 병렬 처리하기 위한 장치 및 그 방법 |
US9239864B2 (en) * | 2012-04-17 | 2016-01-19 | Cisco Technology, Inc. | Distributing and processing streams over one or more networks |
US9235446B2 (en) * | 2012-06-22 | 2016-01-12 | Microsoft Technology Licensing, Llc | Parallel computing execution plan optimization |
US10198248B2 (en) * | 2012-07-11 | 2019-02-05 | Intel Corporation | Parallel processing of a single data buffer |
-
2013
- 2013-10-29 JP JP2014544306A patent/JP6183374B2/ja active Active
- 2013-10-29 WO PCT/JP2013/006380 patent/WO2014068950A1/ja active Application Filing
- 2013-10-29 US US14/438,745 patent/US9430285B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9430285B2 (en) | 2016-08-30 |
JPWO2014068950A1 (ja) | 2016-09-08 |
WO2014068950A1 (ja) | 2014-05-08 |
US20150254105A1 (en) | 2015-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6183374B2 (ja) | データ処理システム、データ処理方法およびプログラム | |
Bao et al. | Performance modeling and workflow scheduling of microservice-based applications in clouds | |
US8924978B2 (en) | Sequential cooperation between map and reduce phases to improve data locality | |
Kress et al. | A worker constrained flexible job shop scheduling problem with sequence-dependent setup times | |
Liu et al. | Task scheduling with precedence and placement constraints for resource utilization improvement in multi-user MEC environment | |
US9218210B2 (en) | Distributed processing system | |
KR20140080434A (ko) | 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법 | |
KR101471749B1 (ko) | 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법 | |
US11074103B2 (en) | Scheduling method and scheduling device | |
US20130219395A1 (en) | Batch scheduler management of tasks | |
Yun et al. | An integrated approach to workflow mapping and task scheduling for delay minimization in distributed environments | |
US20170262310A1 (en) | Method for executing and managing distributed processing, and control apparatus | |
Jahani et al. | Optimizing on-demand gpus in the cloud for deep learning applications training | |
JP5867238B2 (ja) | オートスケーリング方法,オートスケーリングプログラムおよびコンピュータノード | |
Choi et al. | VM auto-scaling methods for high throughput computing on hybrid infrastructure | |
Gouasmi et al. | Cost-efficient distributed MapReduce job scheduling across cloud federation | |
Awada et al. | Air-to-air collaborative learning: A multi-task orchestration in federated aerial computing | |
Kundu et al. | HIOS: Hierarchical Inter-Operator Scheduler for Real-Time Inference of DAG-Structured Deep Learning Models on Multiple GPUs | |
US11550625B2 (en) | Utilizing machine learning to concurrently optimize computing resources and licenses in a high-performance computing environment | |
Ferikoglou | Resource aware GPU scheduling in Kubernetes infrastructure | |
Kraemer et al. | Reducing the number of response time service level objective violations by a cloud‐HPC convergence scheduler | |
Filippini et al. | Hierarchical Scheduling in on-demand GPU-as-a-Service Systems | |
Nzanywayingoma et al. | Task scheduling and virtual resource optimising in Hadoop YARN-based cloud computing environment | |
KR101448861B1 (ko) | 동기적 메시지 기반 대량 병렬처리 시스템 | |
JP6753521B2 (ja) | 計算資源管理装置、計算資源管理方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160915 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170627 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170710 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6183374 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |