WO2014068950A1 - データ処理システム、データ処理方法およびプログラム - Google Patents

データ処理システム、データ処理方法およびプログラム Download PDF

Info

Publication number
WO2014068950A1
WO2014068950A1 PCT/JP2013/006380 JP2013006380W WO2014068950A1 WO 2014068950 A1 WO2014068950 A1 WO 2014068950A1 JP 2013006380 W JP2013006380 W JP 2013006380W WO 2014068950 A1 WO2014068950 A1 WO 2014068950A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
processing
parallel
unit
sequential
Prior art date
Application number
PCT/JP2013/006380
Other languages
English (en)
French (fr)
Inventor
祥治 西村
Original Assignee
日本電気株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2014544306A priority Critical patent/JP6183374B2/ja
Priority to US14/438,745 priority patent/US9430285B2/en
Publication of WO2014068950A1 publication Critical patent/WO2014068950A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Definitions

  • the present invention relates to a data processing system, a data processing method, and a program in distributed processing.
  • Patent Document 1 discloses a technique for executing parallel processing by devising hash join.
  • the technique disclosed in Patent Document 1 divides a hash join into a plurality of tasks based on the appearance frequency of the join key of the table, and assigns the plurality of tasks to a plurality of computers.
  • the technique disclosed in Patent Document 1 further divides a task with a large processing amount into a plurality of subtasks.
  • the technique disclosed in Patent Document 1 assigns a task and a subtask to each computer so that the processing amount of each computer becomes equal.
  • Patent Document 1 only optimizes the processing time of parallel processing.
  • the technique disclosed in Patent Document 1 is applied to data processing including both parallel processing and sequential processing, there is a problem that the processing time of the entire data processing is not necessarily optimized.
  • An object of the present invention is to provide a data processing system that optimizes the overall processing time of data processing including parallel processing and sequential processing.
  • data processing including parallel processing that can be executed in parallel by a plurality of computers and sequential processing that is post-processing of the parallel processing and executed by one computer, Accepts a plurality of tasks to be executed for a record set that is a set of a plurality of records, and before sequential processing that is expected to take more time than other sequential processing among sequential processing included in the task
  • a task set that divides the parallel processing into a plurality of subtasks by subdividing the record set that is the processing target of the parallel processing, and tasks other than tasks including the parallel processing are executed Assigning the plurality of subtasks to the plurality of computers so that the plurality of subtasks are executed before being performed. It is over data processing system.
  • data processing including parallel processing that can be executed in parallel by a plurality of computers and sequential processing that is post-processing of the parallel processing and executed by one computer, Accepts a plurality of tasks to be executed for a record set that is a set of a plurality of records, and before sequential processing that is expected to take more time than other sequential processing among sequential processing included in the task
  • parallel processing which is a process, by dividing the record set that is the processing target of the parallel processing, a division step that divides the parallel processing into a plurality of subtasks, and tasks other than the task including the parallel processing are executed. Assigning the plurality of subtasks to the plurality of computers so that the plurality of subtasks are executed before It is over data processing method.
  • a computer includes data including parallel processing that can be executed in parallel by a plurality of computers and sequential processing that is post-processing of the parallel processing and executed by one computer.
  • a sequential task that receives a plurality of tasks for executing a process on a record set that is a set of a plurality of records, and is expected to take more time than other sequential processes among the sequential processes included in the task.
  • For parallel processing which is preprocessing of processing, a procedure for dividing the parallel processing into a plurality of subtasks by subdividing a record set to be processed by the parallel processing, and tasks other than tasks including the parallel processing
  • the object of the present invention is also achieved by a computer-readable storage medium storing the above program.
  • Data processing targeted by the present invention includes parallel processing and sequential processing.
  • Parallel processing is processing that a plurality of computers can execute in parallel.
  • Sequential processing is executed as post-processing of parallel processing.
  • the processing time decreases as the number of computers increases.
  • the sequential processing is processing executed by one computer. Even if the number of computers increases, the processing time of sequential processing is not shortened. For this reason, when a plurality of computers execute data processing including both parallel processing and sequential processing, the processing time of the sequential processing tends to become a bottleneck of the processing time of the entire data processing.
  • a “table” is data that is subject to data processing.
  • the table includes a plurality of record sets.
  • a “record set” is a set of a plurality of records, and is a unit in which sequential processing is executed by one computer.
  • a “job” is data processing for a table.
  • a “task” is data processing for a record set. A job is divided into a plurality of tasks by subdividing the processing target from a table into a record set.
  • Tasks can be divided into parallel processable tasks and sequential processing tasks.
  • a task capable of parallel processing is processing for executing parallel processing on a record set.
  • a “sequential processing task” is a process of executing sequential processing, which is post-processing of parallel processing, on a record set.
  • a task that can be processed in parallel can be divided into a plurality of “subtasks” by subdividing a processing target from a record set into a set of finer records. That is, one task can be divided into a plurality of subtasks and one sequential processing task.
  • the subtask and the sequential processing task correspond means that the subtask and the sequential processing task are divided from the same task.
  • “Large task” means a task having a large number of records included in the record set to be executed. The task processing time is generally determined by the number of records included in the record set to be processed. A large task is a task with a long processing time.
  • FIG. 1 is a hardware configuration diagram of a data processing system 1000 according to the first embodiment.
  • the data processing system 1000 includes, for example, a CPU (Central Processing Unit) 1, a RAM (Random Access Memory) 2, a hard disk drive 3, a communication interface 4, an input device 5, an output device 6, and the like.
  • a CPU Central Processing Unit
  • RAM Random Access Memory
  • the functions of the data processing system 1000 are realized, for example, by the CPU 1 reading a program into the RAM 2 and executing it. Transmission / reception of information by the data processing system 1000 is realized by an application program controlling the communication interface 4 using a function provided by an OS (Operating System), for example.
  • the input device 5 is, for example, a keyboard or a mouse.
  • the output device 6 is a display, for example. The input device 5 and the output device 6 may be integrated as a touch panel, for example.
  • the present invention which will be described by taking this embodiment and each embodiment described later as an example, is also configured by a non-volatile storage medium 8 such as a compact disk in which such a program is stored.
  • the program stored in the storage medium 8 is read by the drive device 7, for example.
  • the data processing system 1000 may be configured by connecting two or more physically separated devices so that they can communicate with each other in a wired or wireless manner.
  • FIG. 2 is a block diagram of the data processing system 1000 according to the first embodiment. As shown in FIG. 2, the data processing system 1000 includes a task dividing unit 10 and an assigning unit 20.
  • the task division unit 10 accepts execution requests for a plurality of tasks. Then, the task division unit 10 calculates the processing time of the sequential processing task included in the task for each of the plurality of received tasks. For example, the task division unit 10 calculates the task processing time based on the number of records included in the record set that is the task processing target.
  • the task dividing unit 10 divides a parallel processable task, which is a preprocessing of a sequential processing task larger than other sequential processing tasks, into a plurality of subtasks.
  • the assignment unit 20 assigns a plurality of subtasks to a plurality of computers so that a plurality of subtasks are executed before a task other than the task including the divided parallel processable tasks is executed.
  • FIG. 3 is a diagram for explaining the concept of tasks processed by the data processing system 1000.
  • three rectangles are shown.
  • the three rectangles represent task A, task B and task C), respectively. That is, FIG. 3 shows three tasks, task A, task B, and task C.
  • Each task includes a task that can be processed in parallel (portion filled with a horizontal line) and a sequential processing task (white portion).
  • the length of the rectangle (task) shown in FIG. 3 represents the processing time of the task when the task is executed by a single computer. It can be considered that the processing time is roughly proportional to the size of the record set processed by the task.
  • the sequential processing task of task A is larger than the sequential processing task of task B and task C.
  • FIG. 4 is a diagram illustrating a state in which the parallel processable task of task A shown in FIG. 3 is divided into subtasks.
  • the task dividing unit 10 divides the task A that can be processed in parallel into a plurality of subtasks (portions filled with a grid). Specifically, the task division unit 10 divides a parallel processable task into subtasks corresponding to the number of computers that execute the job. For example, when the job is executed by three computers, the task dividing unit 10 divides the task A that can be processed in parallel into three subtasks.
  • FIG. 5 is a diagram for explaining how the task shown in FIG. 4 is assigned to three computers.
  • the assigning unit 20 assigns the subtask of task A, the sequential processing task of task A, task B, and task C to three computers.
  • the assigning unit 20 assigns the subtask of the task A so that it is executed before the task B or the task C is executed.
  • the computer 1 executes the subtask of task A and then executes the sequential processing task of task A.
  • the computer 2 executes the subtask of the task A, transmits the execution result to the computer 1, and then executes the task B.
  • the computer 3 executes the subtask of the task A, transmits the execution result to the computer 1, and then executes the task C.
  • FIG. 6 is a flowchart for explaining the operation of the data processing system 1000.
  • the task division unit 10 accepts an execution request for a plurality of tasks (A100).
  • the task division unit 10 calculates the processing time of the sequential processing task included in each task based on the number of records included in the record set that is the processing target of each task that has received the execution request (A110).
  • the task division unit 10 divides a task including a large sequential process task into a parallel processable task and a sequential process task, and further divides the parallel processable task into a plurality of subtasks (A120).
  • the assigning unit 20 assigns the task, the subtask, and the sequential processing task to the plurality of computers so that the plurality of subtasks are executed before the task other than the task including the large sequential processing task is executed (A130).
  • the data processing system 1000 includes a parallel process that can be executed in parallel by a plurality of computers, and a sequential process that is a post-process of the parallel process and executed by one computer.
  • a data processing system, a data processing method, and a program for optimizing the processing time of the entire data processing including the above can be provided.
  • the reason is that the data processing system 1000 schedules job execution so that a large sequential processing task that tends to be a bottleneck of the entire data processing is executed as soon as possible. As a result, a large sequential processing task is executed in superposition with other tasks, so that the processing time of the entire data processing is optimized.
  • FIG. 7 is a block diagram of a data processing system 1000 according to the second embodiment. As shown in FIG. 7, the data processing system 1000 according to the second embodiment further includes a job receiving unit 30 and a job dividing unit 40 in addition to the data processing system 1000 according to the first embodiment.
  • the job receiving unit 30 receives a job execution request.
  • the job dividing unit 40 divides a job into a plurality of tasks by subdividing a table to be processed by the job into a plurality of record sets.
  • the task dividing unit 10 receives a plurality of tasks from the job dividing unit 40 and operates in the same manner as in the first embodiment.
  • FIG. 8 is a flowchart for explaining the operation of the data processing system 1000.
  • the job receiving unit 30 receives a job execution request (B100).
  • the job dividing unit 40 divides the job that has received the execution request into a plurality of tasks (B110). Thereafter, the processing of A110 to A130 is executed in the same manner as in the first embodiment.
  • the data processing system 1000 includes a parallel process that can be executed in parallel by a plurality of computers, and a sequential process that is a post-process of the parallel process and executed by one computer.
  • the operation of the task dividing unit 10 is different from the operation of the task dividing unit 10 according to the first or second embodiment.
  • the task division unit 10 divides a parallel processable task included in the task.
  • the task dividing unit 10 does not divide a parallel processable task included in a task for a task smaller than the largest sequential processing task.
  • FIG. 10 and FIG. 11 are diagrams for explaining the operation of the task dividing unit 10 in the third embodiment.
  • FIG. 9 shows three tasks (task A, task B, and task C).
  • the largest sequential processing task is the sequential processing task of task A.
  • the task division unit 10 compares the processing times of tasks A to C with the processing time of the sequential processing task of task A.
  • Task A and task B are larger than the task A sequential processing task. Therefore, the task division unit 10 divides the task A that can be processed in parallel into N subtasks, and divides the task B that can be processed in parallel into N subtasks.
  • task C is shorter than the processing time of the sequential processing task of task A. Therefore, the task dividing unit 10 does not divide the task C that can be processed in parallel.
  • FIG. 10 is a diagram for explaining a situation in which the parallel processable task of task A and the parallel processable task of task B shown in FIG. 9 are divided into subtasks.
  • the task A that can be processed in parallel is divided into N subtasks
  • the task B that can be processed in parallel is also divided into N subtasks.
  • the subtask divided from the tasks that can be processed in parallel by task A will be referred to as “task A subtask”.
  • a subtask that is divided from the tasks that can be processed in parallel by task B is referred to as “subtask of task B”.
  • FIG. 11 is a diagram illustrating a state in which the task illustrated in FIG. 10 is assigned to N computers.
  • the assignment unit 21 assigns the subtask of task A, the sequential processing task of task A, the subtask of task B, the sequential processing task of task B, and task C to a plurality of computers 1 to N.
  • the reason why the task dividing unit 10 does not divide the task C is as follows. As shown in FIG. 11, the bottleneck of the processing time of the entire job is the processing time of the sequential processing task of task A. No matter how much the number of computers increases, the processing time of the task A sequential processing task is not shortened. Therefore, even if the task dividing unit 10 parallelizes task C, which has a shorter processing time than the sequential processing task of task A, the processing time of the entire job is not shortened.
  • the task division unit 10 in the third embodiment does not divide a parallel processable task included in a task for a task smaller than the largest sequential processing task. Since the data processing system 1000 according to the third embodiment has such a configuration, unnecessary parallelization can be suppressed and overhead caused by unnecessary parallelization can be prevented.
  • task dividing unit 10 determines the number of tasks B that can be processed in parallel. May be less than the number of tasks A that can be processed in parallel.
  • the allocation unit 20 schedules the subtask of task B not to be allocated to the computer that processes the sequential processing task of task A.
  • the total processing time of one subtask of task A and the sequential processing task of task A is the total processing time of one subtask of task A, one subtask of task B, and the sequential processing task of task B If it becomes longer than that, the task dividing unit 10 reduces the number of tasks B that can be processed in parallel for task B to be smaller than the number of tasks that can be processed in parallel for task A.
  • the allocating unit 20 assigns the sequential processing task of task A to The subtask of task B is not assigned to the computer to be processed (computer 1).
  • the execution of the sequential processing task of task A which is a bottleneck of the processing time of the entire job, can be further advanced, and the execution time of the entire job can be further shortened.
  • the operations of the task dividing unit 10 and the assigning unit 20 are different from those in the first, second, and third embodiments.
  • the task division unit 10 divides the task A that can be processed in parallel into a plurality of subtasks
  • the task division unit 10 divides the tasks so that the number of records processed by each subtask is different.
  • the assignment unit 20 assigns a subtask that processes more records than other subtasks to a computer to which a sequential processing task that is a post-processing of a parallel processable task is assigned.
  • the assignment unit 20 may not assign subtasks to other computers.
  • FIGS. 12 to 14 are diagrams for explaining the operations of the task dividing unit 10 and the assigning unit 20 in the fourth embodiment. As shown in FIGS. 12 to 14, this example deals with a case where a job that can be divided into five tasks is processed by four computers.
  • FIG. 12 shows five tasks (tasks A to E). As shown in FIG. 12, the sequential processing task of task A is larger than the sequential processing tasks of task B to task E.
  • the task dividing unit 10 divides the task A that can be processed in parallel into a plurality of subtasks.
  • the task dividing unit 10 divides the task A parallel processable task shown in FIG. 12 so that the number of records processed by the subtasks is different, and the allocating unit 20 determines that the task A sequential processing task is It is a figure which shows a mode that the subtask which processes more records than the other subtask was allocated to the computer (computer 1) to be allocated.
  • the task A that can be processed in parallel is divided into three subtasks, and the three subtasks are assigned to the computer 1, the computer 2, and the computer 3, respectively.
  • the subtask assigned to the computer 1 is twice the size of the subtask assigned to the computer 2 and the computer 3.
  • the assignment unit 20 selects a computer to which no subtask is assigned from among computers other than the computer (computer 1) to which a sequential processing task that is a post-processing of a parallel processable task is assigned. In the example shown in FIG. 13, no subtask is assigned to the computer 4. Therefore, the computer 4 does not need to transfer the execution result of the subtask to the computer 1.
  • the assignment unit 20 preferably selects a computer having a high data transfer cost to a computer (computer 1) that executes sequential processing as a computer to which no subtask is assigned.
  • FIG. 14 is a diagram for explaining the effect of the present embodiment.
  • the tasks capable of parallel processing of task A shown in FIG. 12 are divided so that the number of records processed by the subtasks is equal to each other.
  • the task capable of parallel processing of task A is divided into four subtasks, and the four subtasks are assigned to the computers 1 to 4, respectively.
  • the subtask of task A, the sequential processing task of task A, and tasks B to E are assigned to four computers (computers 1 to 4).
  • the computers 2, 3, and 4 execute the subtask of task A, the execution results of the subtask must be transferred to the computer 1.
  • the data communication cost of the computer 4 increases as compared with the case where the task schedule is performed as shown in FIG.
  • the task dividing unit 10 divides a parallel processable task so that the number of records processed by the subtasks is different.
  • the assignment unit 20 according to the fourth embodiment assigns a subtask that processes more records than other subtasks to a computer to which a sequential processing task that is a post-processing of a parallel processable task is assigned.
  • the assignment unit 20 selects a computer to which no subtask is assigned from among computers other than the computer to which the sequential processing task, which is the post-processing of a parallel processable task, is assigned.
  • the data processing system 1000 according to the fourth embodiment can reduce the data transfer cost of a computer to which no subtask is assigned.
  • the operations of the task dividing unit 10 and the assigning unit 20 are different from those in the first, second, third, and fourth embodiments.
  • the data processing system 1000 according to the present embodiment handles a sequential processing task that processes records included in a record set in a predetermined order.
  • the task division unit 10 accepts information for determining the processing order of records when accepting a task execution instruction.
  • the task division unit 10 calculates the processing execution time of the sequential processing task included in the task based on the number of records included in the record set that is the task processing target.
  • the task dividing unit 10 divides a parallel processable task, which is a preprocess of a sequential processing task larger than other sequential processing tasks, into a plurality of subtasks.
  • the task division unit 10 subdivides the record set into a set of finer records according to the record processing order.
  • the task dividing unit 10 divides the record set into four sets including 50 records.
  • the task division unit 10 sets a record set processed by the first subtask from the first record to the 50th record.
  • the task division unit 10 sets the records from the 51st sequentially processed record to the 100th sequentially processed record as a set of records processed by the second subtask.
  • the task division unit 10 sets the records from the 101st sequential processing to the 150th sequential processing as a set of records processed by the third subtask.
  • the task division unit 10 sets the records from the 151st sequentially processed record to the 200th sequentially processed record as a set of records processed by the fourth subtask.
  • the assigning unit 20 assigns a subtask that includes a first record to be processed by the sequential processing task to a computer to which a sequential processing task that is a post-processing of a parallel processable task is assigned.
  • FIG. 15 is a diagram illustrating a state in which the assignment unit 20 assigns a subtask including a first record to be processed by the sequential processing task to a computer (computer 1) to which the sequential processing task is assigned.
  • FIG. 16 is a diagram for explaining the effect of the fifth embodiment. 15 and 16, the subtask assigned to the computer 1 is “a subtask including the first record to be processed as a processing target (denoted as ⁇ in FIGS. 15 to 18)”. In FIG. 15, the subtask assigned to the computers 2, 3, and 4 is “a subtask that does not include the first record to be processed (described as ⁇ in FIGS. 15 to 18)”.
  • FIG. 16 shows a state in which a delay occurs in the execution of the subtask by the computer 2 when scheduled as shown in FIG.
  • the delay of the computer 2 has no influence on the processing time of the entire job. This is because, when the computer 1 completes the execution of the subtask including the first record as the processing target, the computer 1 can start executing the sequential processing task.
  • the computer 2 completes the execution of the subtask assigned to the computer 2 while the computer 1 executes the sequential processing task, and transmits the execution result to the computer 1. In this case, the delay in execution of the subtask by the computer 2 does not affect the processing time of the entire job.
  • FIG. 17 and 18 are diagrams for explaining the effects according to the fifth embodiment. 17 and 18, “subtask including the first processed record as a processing target” is described as ⁇ in the figure, and “subtask not including the first processed record as a processing target” as ⁇ in the figure. It is described.
  • FIG. 17 is a diagram illustrating a state in which the assignment unit 20 does not assign the subtask including the first record to be processed to the processing target (computer 1) to which the sequential processing task is assigned. As shown in FIG. 17, the subtask including the record to be processed first as the processing target is assigned to the computer 2.
  • FIG. 18 shows a state in which a delay occurs in the execution of the subtask by the computer 2 when scheduled as shown in FIG. As shown in FIG. 18, the delay of the computer 2 delays the processing time of the entire job. This is because the computer 1 cannot start executing the sequential processing task unless the execution of the subtask by the computer 2 is completed.
  • the assignment unit 20 assigns a subtask including, as a processing target, the first record to be processed by the sequential processing task to a computer to which a sequential processing task that is a post-processing of a parallel processable task is assigned. . Since the data processing system 1000 according to the fifth embodiment has such a configuration, even when a delay occurs due to re-execution of a task due to an error or a system failure, the data processing system 1000 affects the start time of the sequential processing task. Can be prevented.
  • the job receiving unit 30 may receive input of information that determines the processing order of records instead of the task dividing unit 10.
  • the data processing apparatus 1000 performs data processing including join (JOIN) processing and scan processing, which is post-processing of the join processing, on the table.
  • join join
  • scan processing which is post-processing of the join processing
  • FIG. 19 is a diagram illustrating an example of a table, a record set, and a record in the data processing apparatus 1000 according to the sixth embodiment.
  • FIG. 19 is merely an example for making the explanation easy to understand, and is not for limited interpretation of the table, the record set, and the record.
  • the record includes a record identifier (ID), a branch name, a customer ID, and a transaction time.
  • ID a record identifier
  • branch name a branch name
  • customer ID a transaction time
  • transaction time a transaction time of a transaction.
  • the attributes of the record include “attributes that determine units in which sequential processing is performed”.
  • the value of “attribute that determines the unit in which sequential processing is executed” determines which record set the record belongs to. For example, when the attribute “branch name” is “an attribute that determines a unit in which sequential processing is executed”, a set of records having the same branch name value is a record set.
  • a transaction table shown in FIG. 19 and a master table are combined using a branch name as a key.
  • the sequential processing concerning this embodiment scans a record in order of transaction time in the record set which has the same branch name with respect to the record after a coupling
  • FIG. 20 is an example of statistical information about the table shown in FIG. 19 (hereinafter referred to as statistical information).
  • an example of statistical information is a histogram indicating the number of records for each value of an attribute (in the example illustrated in FIG. 20, a branch name) that determines a unit in which sequential processing is performed.
  • the statistical information shown in FIG. 20 is merely an example for making the explanation easy to understand, and does not interpret the statistical information in a limited manner.
  • the statistical information may include, for example, information such as a total amount of records and a deviation in the number of records for each attribute value that determines a unit in which sequential processing is executed.
  • the record may include an attribute that determines the order in which the sequential processing is executed.
  • the transaction time is an attribute that determines the order in which the sequential processing is executed
  • the sequential processing may be executed in the order of early transaction time in the record set.
  • the statistical information described above may include information such as a distribution for each attribute value that determines the order in which sequential processing is performed.
  • FIG. 21 is a block diagram of a data processing system 1000 according to the sixth embodiment. 21 that are substantially the same as those shown in FIGS. 2 and 7 are denoted by the same reference numerals.
  • the data processing system 1000 according to the sixth embodiment includes a task dividing unit 10, a record information collecting unit 110, an assigning unit 20, a job receiving unit 30, a job dividing unit 40, and a data storage unit 300. including.
  • the job receiving unit 30 receives a job execution request.
  • the job execution request includes information for specifying the contents of data processing and information for specifying a table to be processed.
  • the information specifying the content of the data processing includes, for example, a parameter indicating how much of the job processing time can be executed in parallel.
  • the job reception unit 30 outputs to the record information collection unit 110 information specifying a table to be processed, which is included in the job execution request.
  • the record information collection unit 110 acquires statistical information from the data storage unit 300 based on information specifying a table to be processed.
  • the record information collection unit 110 may read the table stored in the data storage unit 300 and calculate statistical information. Alternatively, the record information collection unit 110 may acquire statistical information that the data storage unit 300 stores in advance together with the table.
  • the record information collection unit 110 outputs statistical information to the job division unit 40.
  • the job dividing unit 40 divides the job received by the job receiving unit 30 into a plurality of tasks based on the statistical information. For example, a case will be described in which the job receiving unit 30 receives a job whose processing target is the table shown in FIG.
  • the table shown in FIG. 19 includes 600 records.
  • the job dividing unit 40 creates a table including 600 records, one record set including 200 records (Tokyo branch), and 100 records. Records sets including 2 records sets (Sapporo branch, Sendai branch), 2 record sets including 50 records (Yokohama branch, Osaka branch), and 4 record sets including 25 records (Kyoto branch, (Kobe branch, Hiroshima branch, Fukuoka branch).
  • the task dividing unit 10 receives an execution request for a plurality of divided tasks. Then, the task dividing unit 10 calculates the processing time of the task and the sequential processing task included in the task based on the information specifying the content of the data processing and the statistical information. For example, the task dividing unit 10 calculates the task processing time by using the number of records included in the record set to be processed by the task and the information specifying the data processing content received by the job receiving unit 30 as input. To do. The task dividing unit 10 divides the task into a plurality of subtasks and one sequential processing task.
  • the assigning unit 20 assigns a plurality of subtasks to a plurality of computers so that the subtask is executed before the corresponding sequential processing task or other task is executed.
  • the data processing system 1000 optimizes the processing time of a job for executing data processing including a join process and a scan process that is a post process of the join process on the table.
  • Data processing system, data processing method and program can be provided.
  • the data processing apparatus 1000 according to the seventh embodiment is different from the sixth embodiment in the operations of the job dividing unit 41, the task dividing unit 11, and the assigning unit 21.
  • the data processing apparatus 1000 according to the seventh embodiment divides and assigns tasks while considering deadlines.
  • FIG. 22 is a block diagram of a data processing system 1000 according to the seventh embodiment. 22 that are substantially the same as those shown in FIG. 21 are denoted by the same reference numerals.
  • the job dividing unit 41 calculates a deadline.
  • the deadline is, for example, a time obtained by averaging job processing times by the number of computers.
  • the task dividing unit 11 divides the task when the processing time of the task exceeds the deadline.
  • the allocation unit 21 adjusts the position of the deadline as will be described later.
  • FIG. 23 is a diagram showing a state in which four tasks (tasks A to D) are assigned to four computers.
  • a dotted line shown in FIG. 23 indicates a time (average processing time) obtained by averaging the processing times of all tasks (A to D) by the number of computers (four). If the job is ideally scheduled, execution of the job is completed within this average processing time. Therefore, the job dividing unit 40A sets this average processing time as a deadline.
  • the task division unit 10A calculates the processing time of the largest task A.
  • the processing time of task A exceeds the deadline. As shown in FIG. 23, the processing time of task A becomes a bottleneck of the processing time of the entire job as it is. Therefore, the task dividing unit 10A divides the task A.
  • the assigning unit 20 assigns the subtask of task A to the computers 1 to 4.
  • FIG. 24 is a diagram showing the state of tasks assigned in this way.
  • the processing time of the task A exceeds the deadline.
  • the allocating unit 20 changes the position of the deadline from the average processing time of all tasks (old deadline) to the completion time (new deadline) of the sequential processing subtask of task A.
  • FIG. 25 is a flowchart for explaining the operation of the data processing system 1000.
  • the job receiving unit 30 receives a job execution request (C100).
  • the record information collection unit 110 obtains statistical information that is the processing target of the job from the data storage unit 300 based on the information that identifies the table that is the processing target included in the job execution request received by the job reception unit 30 (C110).
  • the job dividing unit 10 calculates the job processing time based on the information specifying the data processing content included in the job execution request, the acquired statistical information, and the like.
  • the job dividing unit 10 calculates the deadline by averaging the job processing time by the number of computers (C120).
  • the job dividing unit 40 divides the job into a plurality of tasks based on the statistical information.
  • the task dividing unit 10 stores the divided tasks in the unscheduled task queue in descending order (C130). Then, the task dividing unit 10 repeats the following processing until the unscheduled task queue becomes empty (C140).
  • the task division unit 10 extracts a task from the unscheduled task queue and calculates its processing time (C150). The task division unit 10 determines whether or not the calculated processing time exceeds the deadline. (C160). When the processing time exceeds the deadline, the task dividing unit 10 divides the task (C170). If the processing time does not exceed the deadline, the data processing system 1000 proceeds to the process of C180.
  • the assigning unit 20 assigns tasks, subtasks, and sequential processing tasks to computers so that the subtasks are executed before other tasks and sequential processing tasks (C180).
  • the allocation unit 20 determines whether the processing time of the sequential processing task exceeds the deadline as a result of the scheduling (C190). When the processing time of the sequential processing task exceeds the deadline, the allocation unit 20 sets the time for completing the sequential processing task as a new deadline (C200).
  • the data processing apparatus 1000 according to the seventh embodiment divides and assigns tasks while considering deadlines. With this configuration, the data processing system 1000 according to the seventh embodiment can suppress unnecessary parallelism and prevent overhead due to unnecessary parallelization.
  • the task execution unit 200 executes a task based on the result output by the assignment unit 20.
  • FIG. 26 is a block diagram of a data processing system 1000 according to the eighth embodiment. Of the components shown in FIG. 26, those substantially the same as those shown in FIG. 21 are denoted by the same reference numerals. As shown in FIG. 26, the data processing system 1000 according to the eighth embodiment includes a task division unit 10, a record information collection unit 110, an allocation unit 20, a job reception unit 30, a job division unit 40, and task execution units 200A to 200A. 200N and the data storage unit 300 are included. The task execution units 200A to 200N may be abbreviated as the task execution unit 200.
  • the assignment unit 20 outputs the result of assigning the task, subtask, and sequential processing task to the task execution unit 200 as schedule data.
  • the task execution unit 200 executes the assigned task.
  • FIG. 27 is a block diagram showing a configuration of the task execution unit 200 shown in FIG. As illustrated in FIG. 27, the task execution unit 200 includes a schedule data acquisition unit 210, a task processing unit 220, a progress sharing unit 230, and an output unit 240.
  • the schedule data acquisition unit 210 acquires schedule data output by the allocation unit 20.
  • the schedule data acquisition unit 210 may input the schedule data from the allocation unit 20 or may read the schedule data output to a place that can be referred to by the allocation unit 20.
  • the task processing unit 220 executes the assigned task.
  • the progress sharing unit 230 shares the progress of the assigned task (for example, not executed, being executed, or executed) with the other task executing unit 200.
  • the progress sharing unit 230 may share the progress by communicating with another task execution unit 200, or share the progress by writing the task progress to the schedule data and reading the task progress from the schedule data. You may do it.
  • the output unit 240 outputs data that is the processing result of the assigned task.
  • FIG. 28 is a diagram illustrating an example of schedule data output by the assignment unit 20.
  • the example shown in FIG. 28 is merely an example for making the explanation easy to understand, and is not for limited interpretation of the schedule data.
  • tasks, subtasks, and sequential processing tasks assigned to the task execution unit 200 may be collectively abbreviated as “tasks”.
  • the schedule data shown in FIG. 28 corresponds to the task assignment state shown in FIG. As illustrated in FIG. 28, the schedule data includes, for example, a task ID, an assignment destination ID, a processing target record, a priority, a task type, and an aggregation destination task ID.
  • the task ID is an identifier that identifies a task from other tasks.
  • the assignment destination ID is information for identifying the task execution unit 200 that processes the task.
  • the process target record is information indicating a record that is a task process target.
  • the priority is information indicating the order in which tasks are processed when a plurality of tasks are assigned to the task execution unit 200. In the example shown in FIG. 28, the priority indicates that the smaller the value, the higher the priority.
  • the task type is information indicating whether the task is an undivided task (Normal), a subtask (Parallelized), or a sequential processing task (Sequential).
  • the aggregation destination task ID is the task ID of the sequential processing task corresponding to the subtask.
  • the processing target record is, for example, an attribute (branch name) value or range that determines a unit in which sequential processing is executed, an attribute (transaction time) value or range that determines the order in which sequential processing is executed, or its It may be specified in combination.
  • the processing target record of the subtask may be determined by hash-distributing records that are processing targets of the task corresponding to the subtask by the number of task execution units 200. For example, a record that is a processing target of a subtask may be distributed to each task execution unit 200 in a dictionary order of hash values.
  • FIG. 30 is a flowchart for explaining the operation of the task execution unit 200. As shown in FIG. 30, the task execution unit 200 repeats the following processing until there is no task assigned by the assignment unit 20 (D100).
  • the task execution unit 200 extracts one task having a high priority from among the assigned tasks. Then, the task execution unit 200 determines whether the extracted task is a sequential processing task (Sequential) (D110). If the extracted task is a sequential processing task (Sequential), the process proceeds to D150. If the extracted task is not a sequential processing task (Normal or Parallelized), the task execution unit 200 acquires the processing target record of the extracted task from the data storage unit 300, and executes the task (D120).
  • the task execution unit 200 determines whether the extracted task is a subtask (Parallelized) (D130). If the extracted task is a subtask (Parallelized), after the subtask is executed, the completion of processing is notified to the sequential processing task corresponding to the aggregation destination task ID (D140). If the extracted task is not a subtask (Parallelized) (Normal), the process returns to D100, and the task with the next highest priority is extracted.
  • D130 determines whether the extracted task is a subtask (Parallelized) (D130). If the extracted task is a subtask (Parallelized), after the subtask is executed, the completion of processing is notified to the sequential processing task corresponding to the aggregation destination task ID (D140). If the extracted task is not a subtask (Parallelized) (Normal), the process returns to D100, and the task with the next highest priority is extracted.
  • the task execution unit 200 When the task execution unit 200 extracts a sequential processing task (Sequential) in the processing of D110, the task execution unit 200 waits until the execution of the subtask corresponding to the sequential processing task is completed (D150), and the sequential processing task Is executed until it can be executed (D160). The task execution unit 200 determines whether or not the execution of the sequential processing task has been completed (D170). If the task execution unit 200 completes the execution of the sequential processing task, the process proceeds to D100. If the execution of the sequential processing task has not been completed, the task execution unit 200 waits for the execution of the corresponding subtask (D150).
  • D150 sequential processing task
  • the task execution unit 200 executes a task based on the result output by the assignment unit 20.
  • FIG. 31 is a diagram illustrating an example of schedule data when task progress is shared. As illustrated in FIG. 31, the schedule data includes, for each task ID, for example, progress items that hold three states of non-execution, execution, and execution completion.
  • the task processing unit 220 executes the unexecuted task when the assigned task has been executed and the task assigned to the other task execution unit 200 has not been executed. Run the task instead. For example, in the example shown in FIG. 32, when the task execution unit 200A completes the execution of the task corresponding to the task ID “F”, there is no other assigned task. Therefore, the task execution unit 200A may execute the task corresponding to the task ID “G” from the task execution unit 200B instead.
  • the data processing system 1000 has such a configuration, so that even if the processing time of a task increases or decreases due to a system failure or a task estimation error during execution, the data processing system 1000 dynamically Task execution can be leveled. Furthermore, if the allocation unit 20 schedules a task with a long processing time to be preferentially executed, the task is redistributed with fine tasks among the task processing units 220, so that the task execution is more easily leveled.
  • FIG. 33 is a block diagram of a data processing system 1000 according to the ninth embodiment. Note that, among the components shown in FIG. 33, those substantially the same as those shown in FIG.
  • the data processing system 1000 includes a scheduling unit 100, task execution units 400A to N, and data storage units 500A to N.
  • task execution units 400A to 400N may be abbreviated as task execution unit 400.
  • data storage units 500A to 500N may be abbreviated as the data storage unit 500.
  • the schedule unit 100 includes a task division unit 10, an allocation unit 20, a job reception unit 30, a job division unit 40, and a record information collection unit 110.
  • FIG. 34 is a block diagram showing a configuration of the task execution unit 400 shown in FIG.
  • the task execution unit 400 according to the ninth embodiment includes a schedule data acquisition unit 410, a record acquisition unit 420, a shuffle key assignment unit 430, a record transmission unit 440, a record reception unit 450, a task processing unit. 460 and an output unit 470.
  • the schedule data acquisition unit 410 acquires the schedule data output by the schedule unit 100.
  • the record acquisition unit 420 acquires a record stored in the data storage unit 500 in the vicinity of the task execution unit 400 regardless of the schedule data.
  • the shuffle key assignment unit 430 assigns a shuffle key based on the schedule data to the record acquired by the record acquisition unit 420.
  • the record transmission unit 440 transmits the record to the record reception unit 450 of the other task processing unit 400 based on the shuffle key assigned to the record.
  • the record receiving unit 450 receives the record to which the shuffle key is assigned from the other task processing unit 400.
  • the task processing unit 460 executes a task on the record based on the shuffle key assigned to the record.
  • the output unit 470 outputs the processing result.
  • FIG. 35 is a diagram illustrating an example of the shuffle key.
  • the example shown in FIG. 35 is merely an example for making the explanation easy to understand, and is not intended to interpret the shuffle key in a limited manner.
  • the shuffle key shown in FIG. 35 corresponds to the schedule data shown in FIG.
  • each task execution unit 400 executes tasks in the dictionary order of the shuffle keys assigned to the distributed records. Therefore, the shuffle key assigning unit 430 configures the shuffle keys as follows so that each task execution unit 400 executes each task in the scheduled order.
  • the shuffle key assigning unit 430 assigns a tag indicating the task type to the beginning of the record. At this time, the tags are determined so that the records for the subtasks are arranged in the dictionary order before the records for the other tasks. In the example shown in FIG. 35, “0” is assigned to a record for a subtask, and “1” is assigned to an undivided task. By doing this, the subtask is executed earlier.
  • the shuffle key assigning unit 430 assigns a tag representing the execution priority to the record.
  • the priority is expressed such that the smaller the priority number, the higher the priority. This information may be given only when the task processing time is long. This is because a task with a short processing time tends to have a large number and its order does not affect much.
  • the shuffle key assigning unit 430 assigns a tag representing the task identifier to the record.
  • the task identifiers of the subtasks are numbered as “A-1”, “A-2”, “A-3”... “AN”.
  • a rule may be set in advance that the task execution unit 400 to which the subtask “A-1” is assigned is also responsible for the corresponding sequential processing task.
  • the record transmission unit 440 may determine the task execution unit 400 to which the record is transmitted by referring to the value of the attribute (branch name) that determines the unit in which the sequential processing is executed.
  • the record transmission unit 440 may determine the task execution unit 400 to which the record is transmitted, using information such as statistical information of the record.
  • the task processing unit 450 may process the records for each task identifier in the order of the shuffle key dictionary.
  • the task execution unit 400 in charge of the sequential processing task determines whether or not the execution of the corresponding subtask has been completed. For example, there is a method in which the task execution unit 400 checks whether an intermediate file having a task identifier as a name is generated. As another method, for example, there is a method of introducing a master server that manages the progress status of a task into the data processing system 1000. The task execution unit 400 in charge of the sequential processing task recognizes the progress status of the subtask executed by the other task execution unit 400, for example, by the method as described above, and appropriately acquires intermediate data necessary for the calculation, A sequential processing task may be executed.
  • the processing time of the entire data processing including parallel processing and sequential processing that operates on the distributed parallel execution platform is optimized.
  • a data processing system, a data processing method, and a program can be provided.
  • the table described in the mode for carrying out the invention corresponds to the data set described in the claims.
  • the task execution unit 200 or the task execution unit 400 described in the mode for carrying out the invention corresponds to the computer described in the claims.

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)

Abstract

並列処理と逐次処理とを含むデータ処理の全体の処理時間を最適化するデータ処理システム等が開示される。 係るデータ処理システムは、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割するタスク分割手段と、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当て手段と、を有する。

Description

データ処理システム、データ処理方法およびプログラム
 本発明は、分散処理におけるデータ処理システム、データ処理方法およびプログラムに関する。
 コンピュータによるデータ処理において、並列処理技術は一般に良く知られている。特許文献1は、ハッシュ結合に関して工夫をして並列処理を実行する技術を開示する。特許文献1が開示する技術は、テーブルの結合キーの出現頻度に基づいて、ハッシュ結合を複数のタスクに分割し、複数のタスクを複数の計算機に割り当てる。結合キーの出現頻度の偏りにより各タスクの処理量が均一にならない場合、特許文献1が開示する技術は、さらに、処理量が多いタスクをより細かい複数のサブタスクに分割する。特許文献1が開示する技術は、各計算機の処理量が均等になるように、各計算機に、タスクとサブタスクとを割り当てる。
特公平7-111718号公報
 しかしながら、特許文献1が開示する技術は、並列処理の処理時間を最適化するに過ぎない。特許文献1が開示する技術が、並列処理と逐次処理との両方を含むデータ処理に適用された場合、データ処理全体の処理時間を必ずしも最適化しないという課題がある。
 本発明は、並列処理と逐次処理とを含むデータ処理の全体の処理時間を最適化するデータ処理システムを提供することを1つの目的とする。
 上述した課題を解決する第1の発明は、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割するタスク分割手段と、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当て手段と、を有するデータ処理システムである。
 上述した課題を解決する第2の発明は、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する分割ステップと、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当てステップと、を含むデータ処理方法である。
 上述した課題を解決する第3の発明は、コンピュータに、複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する手順と、前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる手順と、を実行させるためのプログラムである。
 また、本発明の目的は、上記のプログラムが格納されたコンピュータ読み取り可能な記憶媒体によっても達成される。
 本発明によれば、並列処理と逐次処理とを含むデータ処理の全体の処理時間を最適化することができる。
本発明のデータ処理システム1000のハードウェア構成図である。 本発明の第1の実施形態におけるデータ処理システム1000のブロック図である。 本発明におけるタスクの概念を説明する図である。 本発明におけるサブタスクの概念を説明する図である。 本発明におけるタスク割り当ての概念を説明する図である。 本発明におけるデータ処理システム1000の動作を説明するフローチャート図である。 本発明の第2の実施形態におけるデータ処理システム1000のブロック図である。 本発明の第2の実施形態におけるデータ処理システム1000の動作を説明するフローチャート図である。 本発明の第3の実施形態におけるタスク分割部10の動作を説明する図である。 本発明の第3の実施形態におけるタスク分割部10の動作を説明する図である。 本発明の第3の実施形態におけるタスク分割部10の動作を説明する図である。 本発明の第4の実施形態におけるタスク分割部10および割り当て部20の動作を説明する図である。 本発明の第4の実施形態におけるタスク分割部10および割り当て部20の動作を説明する図である。 本発明の第4の実施形態の効果を説明するための図である。 本発明の第5の実施形態における割り当て部20の動作を説明する図である。 本発明の第5の実施形態の効果を説明するための図である。 本発明の第5の実施形態の効果を説明するための図である。 本発明の第5の実施形態の効果を説明するための図である。 本発明のテーブル、レコードセット、レコードの具体例を説明する図である。 本発明の統計情報の具体例を説明する図である。 本発明の第6の実施形態におけるデータ処理システム1000のブロック図である。 本発明の第6の実施形態におけるデータ処理システム1000のブロック図である。 本発明の第7の実施形態におけるデッドラインを説明する図である。 本発明の第7の実施形態におけるデッドラインを説明する図である。 本発明の第7の実施形態におけるデータ処理システム1000の動作を説明するフローチャート図である。 本発明の第8の実施形態におけるデータ処理システム1000のブロック図である。 本発明の第8の実施形態におけるタスク実行部200のブロック図である。 本発明の第8の実施形態におけるスケジュールデータの具体例を説明する図である。 本発明の第8の実施形態におけるスケジュールデータの具体例を説明する図である。 本発明の第8の実施形態におけるタスク実行部200の動作を説明するフローチャート図である。 本発明の第8の実施形態におけるスケジュールデータの具体例を説明する図である。 本発明の第8の実施形態の変形例におけるタスク実行部200の動作を説明する図である。 本発明の第9の実施形態におけるデータ処理システム1000のブロック図である。 本発明の第9の実施形態におけるタスク実行部400のブロック図である。 本発明の第9の実施形態におけるシャッフルキーの具体例を説明する図である。
 本発明が対象とするデータ処理は、並列処理と逐次処理とを含む。並列処理は、複数の計算機が並列して実行可能な処理である。逐次処理は、並列処理の後処理として実行される。
 並列処理では、計算機の数が増えるほど、処理時間は短縮される。他方、逐次処理は、1つの計算機により実行される処理である。計算機の数が増えても、逐次処理の処理時間は短縮されない。このため、複数の計算機が、並列処理と逐次処理との両方を含むデータ処理を実行する場合、逐次処理の処理時間は、データ処理全体の処理時間のボトルネックとなりやすい。
 次に、本発明の実施の形態を説明するための、用語の定義およびその関係を以下に示す。「テーブル」とは、データ処理が実行される対象となるデータである。テーブルは、複数のレコードセットを含む。「レコードセット」とは、複数のレコードの集合であり、一つの計算機により逐次処理が実行される単位である。「ジョブ」とは、テーブルに対するデータ処理である。「タスク」とは、レコードセットに対するデータ処理である。ジョブは、その処理対象がテーブルからレコードセットに細分化されることにより、複数のタスクに分割される。
 タスクは、並列処理可能タスクと逐次処理タスクに分割され得る。「並列処理可能タスク」とは、レコードセットに対して並列処理を実行する処理である。「逐次処理タスク」とは、レコードセットに対して並列処理の後処理である逐次処理を実行する処理である。
 並列処理可能タスクは、その処理対象がレコードセットからより細かいレコードの集合に細分化されることにより、複数の「サブタスク」に分割され得る。つまり、一つのタスクは、複数のサブタスクと一つの逐次処理タスクに分割され得る。
 「サブタスクと逐次処理タスクとが対応している」とは、サブタスクと逐次処理タスクとが同一のタスクから分割されたことを意味する。「大きいタスク」とは、実行対象のレコードセットに含まれるレコード数が多いタスクを意味する。タスクの処理時間は、おおむね処理対象であるレコードセットに含まれるレコード数によって決まる。大きいタスクは、処理時間の長いタスクである。

次に、本発明の実施の形態について図面を参照して詳細に説明する。
 <第1の実施形態>
 図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とを含む。
 ジョブ受付部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つのタスクに分割され得るジョブを、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を並列化したとしても、ジョブ全体の処理時間は短くならない。
 第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は、それ以外の計算機には、サブタスクを割り当てない場合がある。
 図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は、レコードセットに含まれるレコードを所定の順序で処理する逐次処理タスクを扱う。
 データ処理システム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)処理と、結合処理の後処理である走査処理と、を含むデータ処理を、テーブルに対して実行する。
 図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は、デッドラインを考慮しながら、タスクの分割と割り当てを行う。
 図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)。
 次に、ジョブ分割部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がタスクを実行する。
 図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毎に、例えば、未実行、実行中、実行完了の三状態を保持する進捗の項目を含む。
 第8の実施形態の変形例にかかるタスク処理部220は、割り当てられたタスクが実行済みであって、他のタスク実行部200に割り当てられたタスクが未実行である場合に、前記未実行のタスクを代わりに実行する。例えば図32に示される例では、タスク実行部200Aが、タスクID「F」に対応するタスクの実行を完了した時点で、他に割り当てられたタスクが無い。そこで、タスク実行部200Aは、タスク実行部200BからタスクID「G」に対応するタスクを代わりに実行しても良い。
 第8の実施形態の変形例にかかるデータ処理システム1000は、かかる構成を有することにより、たとえ、実行時にシステム障害やタスクの見積もり誤差のため、タスクの処理時間が増減したとしても、動的にタスクの実行を平準化することができる。さらに、割り当て部20が、処理時間が長いタスクを優先して実行するようにスケジュールすると、タスク処理部220間で、細かいタスクで再分配するので、タスクの実行は、より平準化されやすくなる。
 <第9の実施形態>
 第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 データ処理システム

Claims (9)

  1.  複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割するタスク分割手段と、
     前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当て手段と、
     を有するデータ処理システム。
  2.  複数のレコードの集合であるデータセットに対して前記データ処理を実行するジョブを受け付けるジョブ受付手段と
     前記ジョブの処理対象であるデータセットを複数のレコードセットへと細分化することにより、前記ジョブを複数のタスクへと分割するジョブ分割手段と、
     を更に含み、
     前記タスク分割手段は、前記分割された複数のタスクを受け付ける
     請求項1に記載のデータ処理システム。
  3.  前記タスク分割手段は、タスクの処理時間が、最も長い逐次処理の処理時間より短い場合、前記タスクに含まれる並列処理を分割しない
     請求項1または2に記載データ処理システム。
  4.  前記タスク分割手段は、サブタスクの処理するレコードの数が異なるように前記並列処理を分割し、前記割り当て手段は、前記並列処理の後処理である逐次処理が割り当てられる計算機に、他のサブタスクよりも多くのレコードを処理するサブタスクを割り当てる
     請求項1から3のいずれか1項に記載のデータ処理システムであって、データ処理システム。
  5.  前記割り当て手段は、前記並列処理の後処理である逐次処理が割り当てられる計算機に、前記逐次処理が処理する最初のレコードを処理対象に含むサブタスクを割り当てる
     請求項1から4のいずれか1項に記載のデータ処理システム。
  6.  前記割り当て手段は、前記タスク、前記サブタスクおよび前記サブタスクの後処理である逐次処理のそれぞれに、割当先の計算機と優先順位とを対応付けたスケジュールデータを、前記複数の計算機から参照可能な形態で出力し、
     前記計算機は、
     前記スケジュールデータを取得するスケジュールデータ取得手段と、
     割り当てられたタスクを、前記スケジュールデータに含まれる優先順位の高い順に実行するタスク処理手段と、
     を備え、
     前記タスク処理手段は、前記割り当てられたタスクが実行済みであって、他の計算機に割り当てられたタスクが未実行である場合に、前記未実行のタスクを実行する
     請求項1から5のいずれか1項に記載のデータ処理システム。
  7.  前記割り当て手段は、前記タスク、前記サブタスクおよび前記サブタスクの後処理である逐次処理のそれぞれに、割当先の計算機と処理対象であるレコードとを対応付けたスケジュールデータを、前記複数の計算機から参照可能な形態で出力し、
     前記計算機は、
    レコードを取得するレコード取得手段と、
    前記スケジュールデータを取得するスケジュールデータ取得手段と、
     前記取得したスケジュールデータに基づいて、前記取得したレコードを、前記レコードを処理対象とする処理の割当先である計算機に対して送信するレコード送信手段と、
    を備える
     請求項1から5のいずれか1項に記載のデータ処理システム。
  8.  複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する分割ステップと、
     前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる割り当てステップと、
     を含むデータ処理方法。
  9. コンピュータに、
     複数の計算機が並列して実行可能な並列処理と前記並列処理の後処理であって1つの計算機により実行される逐次処理とを含むデータ処理を、複数のレコードの集合であるレコードセットに対して実行する複数のタスクを受け付け、前記タスクに含まれる逐次処理のうち、他の逐次処理と比較して処理に時間がかかると見込まれる逐次処理の前処理である並列処理について、前記並列処理の処理対象であるレコードセットを細分化することにより、前記並列処理を複数のサブタスクに分割する手順と、
     前記並列処理を含むタスク以外のタスクが実行される前に、前記複数のサブタスクが実行されるように、前記複数のサブタスクを、前記複数の計算機に割り当てる手順と、
     を実行させるためのプログラム。
PCT/JP2013/006380 2012-10-31 2013-10-29 データ処理システム、データ処理方法およびプログラム WO2014068950A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014544306A JP6183374B2 (ja) 2012-10-31 2013-10-29 データ処理システム、データ処理方法およびプログラム
US14/438,745 US9430285B2 (en) 2012-10-31 2013-10-29 Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012-239782 2012-10-31
JP2012239782 2012-10-31

Publications (1)

Publication Number Publication Date
WO2014068950A1 true WO2014068950A1 (ja) 2014-05-08

Family

ID=50626899

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/006380 WO2014068950A1 (ja) 2012-10-31 2013-10-29 データ処理システム、データ処理方法およびプログラム

Country Status (3)

Country Link
US (1) US9430285B2 (ja)
JP (1) JP6183374B2 (ja)
WO (1) WO2014068950A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549583A (zh) * 2018-04-17 2018-09-18 成都致云科技有限公司 大数据处理方法、装置、服务器及可读存储介质
CN104991821B (zh) * 2015-06-29 2019-12-06 北京奇虎科技有限公司 批量处理监控任务的方法及装置
JP2020095441A (ja) * 2018-12-12 2020-06-18 日立オートモティブシステムズ株式会社 演算制御装置
CN112415862A (zh) * 2020-11-20 2021-02-26 长江存储科技有限责任公司 一种数据处理系统及方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
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 北京国双科技有限公司 功能服务的排序方法及装置
CN110569118A (zh) * 2019-08-29 2019-12-13 贝壳技术有限公司 任务调度方法、装置、电子设备及存储介质
CN113064661A (zh) * 2019-12-31 2021-07-02 深圳云天励飞技术有限公司 批量任务的内存处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2011180725A (ja) * 2010-02-26 2011-09-15 Nec Corp ハイブリッド並列処理システム、方法、及びプログラム
WO2012023175A1 (ja) * 2010-08-17 2012-02-23 富士通株式会社 並列処理制御プログラム、情報処理装置、および並列処理制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
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
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 株式会社日立製作所 並列分散処理方法、及び、計算機システム
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
US8260826B2 (en) * 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. Data processing system and method
US8260803B2 (en) * 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for data stream processing
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2011180725A (ja) * 2010-02-26 2011-09-15 Nec Corp ハイブリッド並列処理システム、方法、及びプログラム
WO2012023175A1 (ja) * 2010-08-17 2012-02-23 富士通株式会社 並列処理制御プログラム、情報処理装置、および並列処理制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991821B (zh) * 2015-06-29 2019-12-06 北京奇虎科技有限公司 批量处理监控任务的方法及装置
CN108549583A (zh) * 2018-04-17 2018-09-18 成都致云科技有限公司 大数据处理方法、装置、服务器及可读存储介质
CN108549583B (zh) * 2018-04-17 2021-05-07 致云科技有限公司 大数据处理方法、装置、服务器及可读存储介质
JP2020095441A (ja) * 2018-12-12 2020-06-18 日立オートモティブシステムズ株式会社 演算制御装置
WO2020121840A1 (ja) * 2018-12-12 2020-06-18 日立オートモティブシステムズ株式会社 演算制御装置
JP7385989B2 (ja) 2018-12-12 2023-11-24 日立Astemo株式会社 演算制御装置
CN112415862A (zh) * 2020-11-20 2021-02-26 长江存储科技有限责任公司 一种数据处理系统及方法

Also Published As

Publication number Publication date
JPWO2014068950A1 (ja) 2016-09-08
US20150254105A1 (en) 2015-09-10
US9430285B2 (en) 2016-08-30
JP6183374B2 (ja) 2017-08-23

Similar Documents

Publication Publication Date Title
JP6183374B2 (ja) データ処理システム、データ処理方法およびプログラム
Kress et al. A worker constrained flexible job shop scheduling problem with sequence-dependent setup times
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
US8924978B2 (en) Sequential cooperation between map and reduce phases to improve data locality
Liu et al. Task scheduling with precedence and placement constraints for resource utilization improvement in multi-user MEC environment
US8990820B2 (en) Runtime task with inherited dependencies for batch processing
US9218210B2 (en) Distributed processing system
KR20140080434A (ko) 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법
KR101471749B1 (ko) 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
KR20130114497A (ko) 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
US9104491B2 (en) Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources
US11074103B2 (en) Scheduling method and scheduling device
Yun et al. An integrated approach to workflow mapping and task scheduling for delay minimization in distributed environments
US20170371713A1 (en) Intelligent resource management system
Kundu et al. HIOS: Hierarchical Inter-Operator Scheduler for Real-Time Inference of DAG-Structured Deep Learning Models on Multiple GPUs
Awada et al. Air-to-air collaborative learning: A multi-task orchestration in federated aerial computing
Choi et al. VM auto-scaling methods for high throughput computing on hybrid infrastructure
Filippini et al. Hierarchical Scheduling in on-demand GPU-as-a-Service Systems
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
KR101448861B1 (ko) 동기적 메시지 기반 대량 병렬처리 시스템
CN113220436A (zh) 一种分布式环境下的通用批量作业执行方法及装置
JP6753521B2 (ja) 計算資源管理装置、計算資源管理方法、及びプログラム
Zhang et al. Cost-efficient and latency-aware workflow scheduling policy for container-based systems
Lezzi et al. COMPSs in the VENUS-C Platform: enabling e-Science applications on the Cloud

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13851911

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014544306

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14438745

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13851911

Country of ref document: EP

Kind code of ref document: A1