System and method for limiting the impact of stragglers in large-scale parallel data processing
First Claim
1. A method of performing a large-scale data processing job, comprising:
- executing a plurality of processes on a plurality of interconnected processors, the plurality of processes including a master process for coordinating a data processing job for processing a set of input data, and plurality of map processes and a plurality of reduce processes;
in the master process, assigning input data blocks of a set of input data to respective map processes of the plurality of map processes and assigning partitions of intermediate data to respective reduce processes of the plurality of reduce processes;
in each of the plurality of map processes;
executing an application-independent map program to retrieve a sequence of input data blocks assigned thereto by the master process and to apply an application-specific map function to each input data block in the sequence to produce the intermediate data; and
storing the intermediate data in memory of the interconnected processors; and
in each of the plurality of reduce processes;
receiving a respective partition of the intermediate data from the memory of the interconnected processors; and
applying an application-specific reduce function to the respective partition of the intermediate data to produce output values; and
in a respective reduce process;
receiving multiple distinct partitions of the intermediate data andprocessing the multiple partitions one at a time in succession; and
identifying the respective reduce process as a reduce process that is delaying the data processing job while continuing to process intermediate data and, in response, reassigning at least one of the multiple partitions, which has not yet been processed, to a second reduce process, including copying the intermediate data in the reassigned partition to the other reduce process.
2 Assignments
0 Petitions
Accused Products
Abstract
A large-scale data processing system and method including a plurality of processes, wherein a master process assigns input data blocks to respective map processes and partitions of intermediate data are assigned to respective reduce processes. In each of the plurality of map processes an application-independent map program retrieves a sequence of input data blocks assigned thereto by the master process and applies an application-specific map function to each input data block in the sequence to produce the intermediate data and stores the intermediate data in high speed memory of the interconnected processors. Each of the plurality of reduce processes receives a respective partition of the intermediate data from the high speed memory of the interconnected processors while the map processes continue to process input data blocks an application-specific reduce function is applied to the respective partition of the intermediate data to produce output values.
98 Citations
26 Claims
-
1. A method of performing a large-scale data processing job, comprising:
-
executing a plurality of processes on a plurality of interconnected processors, the plurality of processes including a master process for coordinating a data processing job for processing a set of input data, and plurality of map processes and a plurality of reduce processes; in the master process, assigning input data blocks of a set of input data to respective map processes of the plurality of map processes and assigning partitions of intermediate data to respective reduce processes of the plurality of reduce processes; in each of the plurality of map processes; executing an application-independent map program to retrieve a sequence of input data blocks assigned thereto by the master process and to apply an application-specific map function to each input data block in the sequence to produce the intermediate data; and storing the intermediate data in memory of the interconnected processors; and in each of the plurality of reduce processes; receiving a respective partition of the intermediate data from the memory of the interconnected processors; and applying an application-specific reduce function to the respective partition of the intermediate data to produce output values; and in a respective reduce process; receiving multiple distinct partitions of the intermediate data and processing the multiple partitions one at a time in succession; and identifying the respective reduce process as a reduce process that is delaying the data processing job while continuing to process intermediate data and, in response, reassigning at least one of the multiple partitions, which has not yet been processed, to a second reduce process, including copying the intermediate data in the reassigned partition to the other reduce process. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 24)
-
-
16. A system for large-scale processing of data, comprising:
-
memory; one or more processors; and one or more modules stored in the memory and executed by the one or more processors, the one or more modules including instructions to; execute a plurality of processes on a plurality of interconnected processors, the plurality of processes including a master process for coordinating a data processing job for processing a set of input data, and plurality of map processes and a plurality of reduce processes; in the master process, assign input data blocks of a set of input data to respective map processes of the plurality of map processes and assigning partitions of intermediate data to respective reduce processes of the plurality of reduce processes; in each of the plurality of map processes; execute an application-independent map program to retrieve a sequence of input data blocks assigned thereto by the master process and to apply an application-specific map function to each input data block in the sequence to produce the intermediate data; and store the intermediate data in memory of the interconnected processors; and in each of the plurality of reduce processes; receive a respective partition of the intermediate data from the memory of the interconnected processors; and apply an application-specific reduce function to the respective partition of the intermediate data to produce output values; and in a respective reduce process; receive multiple distinct partitions of the intermediate data and process the multiple partitions one at a time in succession; and identify the respective reduce process as a reduce process that is delaying the data processing job while continuing to process intermediate data and, in response, reassign at least one of the multiple partitions, which has not yet been processed, to a second reduce process, including copying the intermediate data in the reassigned partition to the other reduce process. - View Dependent Claims (17, 18, 19, 25)
-
-
20. A non-transitory computer readable storage medium storing one or more programs for execution by one or more processors of a client device, the one or more programs comprising instructions to:
-
execute a plurality of processes on a plurality of interconnected processors, the plurality of processes including a master process for coordinating a data processing job for processing a set of input data, and plurality of map processes and a plurality of reduce processes; in the master process, assign input data blocks of a set of input data to respective map processes of the plurality of map processes and assigning partitions of intermediate data to respective reduce processes of the plurality of reduce processes; in each of the plurality of map processes; execute an application-independent map program to retrieve a sequence of input data blocks assigned thereto by the master process and to apply an application-specific map function to each input data block in the sequence to produce the intermediate data; and store the intermediate data in memory of the interconnected processors; and in each of the plurality of reduce processes; receive a respective partition of the intermediate data from the memory of the interconnected processors; and apply an application-specific reduce function to the respective partition of the intermediate data to produce output values; and in a respective reduce process; receive multiple distinct partitions of the intermediate data and process the multiple partitions one at a time in succession; and identify the respective reduce process as a reduce process that is delaying the data processing job while continuing to process intermediate data and, in response, reassign at least one of the multiple partitions, which has not yet been processed, to a second reduce process, including copying the intermediate data in the reassigned partition to the other reduce process. - View Dependent Claims (21, 22, 23, 26)
-
Specification