IP Library Granted Patent US 11,392,398
Granted Patent B2
US 11,392,398 · App. 17/009,420 · Granted Jul 19, 2022

Parallel processing of data

Inventors: Craig D. Chambers (Seattle, WA); Ashish Raniwala (Bellevue, WA); Frances J. Perry (Seattle, WA); Stephen R. Adams (Seattle, WA); Robert R. Henry (Seattle, WA); Robert Bradshaw (Seattle, WA); Nathan Weizenbaum (Seattle, WA)
Assignee: Google LLC
G06F9/45504G06F8/314G06F8/34G06F8/433G06F9/38G06F9/3851G06F9/3885G06F9/44G06F9/445G06F9/45533G06F9/4843G06F21/577G06F21/62G06F21/6218G06F9/30G06F9/4494G06F16/24532G06F16/24547G06F2221/034
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,392,398
App. No.
17/009,420
Granted
Jul 19, 2022
Kind
B2
Abstract

A data parallel pipeline may specify multiple parallel data objects that contain multiple elements and multiple parallel operations that operate on the parallel data objects. Based on the data parallel pipeline, a dataflow graph of deferred parallel data objects and deferred parallel operations corresponding to the data parallel pipeline may be generated and one or more graph transformations may be applied to the dataflow graph to generate a revised dataflow graph that includes one or more of the deferred parallel data objects and deferred, combined parallel data operations. The deferred, combined parallel operations may be executed to produce materialized parallel data objects corresponding to the deferred parallel data objects.

Claims (36)

1. A computer implemented method, comprising:

obtaining multiple, parallel data objects;

obtaining multiple, parallel data operations for processing the multiple, parallel data objects;

generating at least one generalized mapreduce operation that includes multiple, parallel map operations and multiple, parallel reduce operations;

translating the at least one generalized mapreduce operation into a single mapreduce operation that includes a single map function to implement the multiple, parallel map operations and a single reduce function to implement the multiple, parallel reduce operations; and

executing the single mapreduce operation to produce as output a set of materialized parallel data objects associated with the obtained multiple, parallel data objects.

2. The computer implemented method of claim 1 , wherein generating at least one generalized mapreduce operation comprises constructing an internal directed acyclic dataflow graph that includes unevaluated multiple, parallel data operations and unevaluated multiple, parallel data objects.

3. The computer implemented method of claim 2 , wherein the unevaluated multiple, parallel data objects comprise data structures that include one or more pointers to one or more of the unevaluated multiple, parallel data operations that operate on a given one of the unevaluated multiple, parallel data objects.

4. The computer implemented method of claim 2 , wherein translating the generalized mapreduce operation comprises combining subgraphs of parallel operations in the internal directed acyclic dataflow graph to produce a revised data flow graph.

5. The computer implemented method of claim 4 , wherein executing the single mapreduce operation comprises traversing operations identified in the revised data flow graph in a forward topological order.

6. The computer implemented method of claim 5 , wherein executing the single mapreduce operation comprises traversing operations identified in the revised data flow graph in turn.

7. The computer implemented method of claim 1 , wherein executing the single mapreduce operation comprises instantiating the single mapreduce operation on a plurality of machines in a datacenter.

8. The computer implemented method of claim 7 , wherein executing the single mapreduce operation comprises instantiating multiple reduce worker processes for each reduce operation associated with the single mapreduce operation on one or more of the plurality of machines.

9. The computer implemented method of claim 1 , wherein the set of materialized parallel data objects comprise a set of evaluated data objects.

10. A system, comprising:

one or more computing devices; and

a memory storing instructions that when executed by the one or more computing devices cause the one or more computing devices to:

obtain multiple, parallel data objects;

obtain multiple, parallel data operations for processing the multiple, parallel data objects;

generate at least one generalized mapreduce operation that includes multiple, parallel map operations and multiple, parallel reduce operations;

translate the generalized mapreduce operation into a single mapreduce operation that includes a single map function to implement the multiple, parallel map operations and a single reduce function to implement the multiple, parallel reduce operations; and

execute the single mapreduce operation to produce as output a set of materialized parallel data objects associated with the obtained multiple, parallel data objects.

11. The system of claim 10 , wherein generate at least one generalized mapreduce operation comprises causing the one or more computing devices to construct an internal directed acyclic dataflow graph that includes unevaluated multiple, parallel data operations and unevaluated multiple, parallel data objects.

12. The system of claim 11 , wherein the unevaluated multiple, parallel data objects comprise data structures that include one or more pointers to one or more of the unevaluated multiple, parallel data operations that operate on a given one of unevaluated multiple, parallel data objects.

13. The system of claim 12 , wherein translate the generalized mapreduce operation comprises causing the one or more computing devices to combine subgraphs of parallel operations in the internal directed acyclic dataflow graph to produce a revised data flow graph.

14. The system of claim 13 , wherein execute the single mapreduce operation comprises causing the one or more computing devices to traverse operations identified in the revised data flow graph in a forward topological order.

15. The system of claim 14 , wherein execute the single mapreduce operation comprises causing the one or more computing devices to traverse operations identified in the revised data flow graph in turn.

16. The system of claim 10 , wherein execute the single mapreduce operation comprises causing the one or more computing devices to instantiate the single mapreduce operation on a plurality of machines in a datacenter.

17. The system of claim 16 , wherein execute the single mapreduce operation comprises causing the one or more computing devices to instantiate multiple reduce worker processes for each reduce operation associated with the single mapreduce operation on one or more of the plurality of machines.

18. The system of claim 10 , wherein the set of materialized parallel data objects comprise a set of evaluated data objects.

19. A non-transitory computer medium having stored thereon programming instructions that when executed by one or more computing devices, cause the one or more computing devices to perform a process comprising:

obtaining multiple, parallel data objects;

obtaining multiple, parallel data operations for processing the multiple, parallel data objects;

generating at least one generalized mapreduce operation that includes multiple, parallel map operations and multiple, parallel reduce operations;

translating the generalized mapreduce operation into a single mapreduce operation that includes a single map function to implement the multiple, parallel map operations and a single reduce function to implement the multiple, parallel reduce operations; and

executing the single mapreduce operation to produce as output a set of materialized parallel data objects associated with the obtained multiple, parallel data objects.

Assignments (2)
CHANGE OF NAME Recorded Sep 14, 2020
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 053768/0907 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2020
From: CHAMBERS, CRAIG D.; RANIWALA, ASHISH; PERRY, FRANCES J.; ADAMS, STEPHEN R.; HENRY, ROBERT R.; BRADSHAW, ROBERT; WEIZENBAUM, NATHAN
To: GOOGLE INC.
Reel/Frame 053673/0509 →
Continuity (8)
Continuation 16449987 · Jun 24, 2019
Continuation 16175925 · Oct 31, 2018
Continuation 15483044 · Apr 10, 2017
Continuation 14622556 · Feb 13, 2015
Continuation 14033145 · Sep 20, 2013
Continuation 12794348 · Jun 4, 2010
Provisional Application 61331148 · May 4, 2010
Related Publication 20200401429A1 · Dec 24, 2020