IP Library Granted Patent US 12,436,786
Granted Patent B2
US 12,436,786 · App. 18/748,889 · Granted Oct 7, 2025

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 Inc.
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 12,436,786
App. No.
18/748,889
Granted
Oct 7, 2025
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 (30)

1. A method comprising:

receiving an untrusted application that includes a data parallel pipeline, wherein the data parallel pipeline specifies multiple parallel data objects and multiple parallel data operations;

instantiating a first secured processing environment in a native processing environment and on one or more processing modules;

executing the untrusted application to generate a dataflow graph of deferred parallel data objects and deferred parallel operations corresponding to the data parallel pipeline;

communicating information representing the data-flow graph outside of the first secured processing environment;

applying, in the native processing environment, one or more graph transformations to the information representing 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 that are associated with the untrusted application; and

executing the deferred, combined parallel operations to produce materialized parallel data objects corresponding to the deferred parallel data objects.

2. The method of claim 1 , wherein applying one or more graph transformations comprise combining chains of parallel operations together into a smaller number of combined operations.

3. The method of claim 1 , wherein the first secured processing environment comprises a first virtual machine.

4. The method of claim 1 , wherein the deferred, combined parallel data operations includes at least one generalized mapreduce operation, the generalized mapreduce operation including multiple, parallel map operations and multiple, parallel reduce operations and being translatable to 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, the single map function and the single reduce function including one or more untrusted functions associated with the untrusted application.

5. The method of claim 1 , wherein executing the untrusted application in the first secured processing environment comprises executing the untrusted application within a virtual machine in the first secured processing environment.

6. The method of claim 1 , wherein communicating information representing the data flow graph outside of the first secured processing environment comprises communicating information representing the data flow graph outside of the first secured processing environment using a remote procedure call.

7. The method of claim 1 , wherein a first deferred parallel data object of the deferred parallel data objects holds a pointer to a first deferred parallel operation that computes the first deferred parallel data object.

8. The method of claim 1 , wherein a first deferred parallel operation of the deferred parallel operations holds references to a first parallel data object that is an argument of at least one deferred parallel operation of the deferred parallel operations.

9. A system comprising:

one or more processing devices; and

one or more storage devices, the storage devices storing instructions that, when executed by the one or more processing devices, cause the one or more processing devices to:

receive an untrusted application that includes a data parallel pipeline, wherein the data parallel pipeline specifies multiple parallel data objects and multiple parallel data operations,

instantiate a first secured processing environment in a native processing environment and on one or more processing modules,

execute the untrusted application to generate a dataflow graph of deferred parallel data objects and deferred parallel operations corresponding to the data parallel pipeline,

communicate information representing the dataflow graph outside of the first secured processing environment,

apply, in the native processing environment, one or more graph transformations to the information representing 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 that are associated with the untrusted application, and

execute the deferred, combined parallel operations to produce materialized parallel data objects corresponding to the deferred parallel data objects.

10. The system of claim 9 , wherein to apply one or more graph transformations comprise the instructions causing the one or processing devices to combine chains of parallel operations together into a smaller number of combined operations.

11. The system of claim 9 , wherein the first secured processing environment comprises a first virtual machine.

12. The system of claim 9 , wherein the deferred, combined parallel data operations includes at least one generalized mapreduce operation, the generalized mapreduce operation including multiple, parallel map operations and multiple, parallel reduce operations and being translatable to 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, the single map function and the single reduce function including one or more untrusted functions associated with the untrusted application.

13. The system of claim 9 , wherein to execute the deferred, combined parallel operations comprises executing the untrusted application within a virtual machine in the first secured processing environment.

14. The system of claim 9 , wherein to communicate information representing the data flow graph outside of the first secured processing environment comprises communicating information representing the data flow graph outside of the first secured processing environment using a remote procedure call.

15. The system of claim 9 , wherein a first deferred parallel data object of the deferred parallel data objects holds a pointer to a first deferred parallel operation that computes the first deferred parallel data object.

16. The system of claim 9 , wherein a first deferred parallel operation of the deferred parallel operations hold references to a first parallel data object that is an argument of at least one deferred parallel operation of the deferred parallel operations.

Assignments (2)
CHANGE OF NAME Recorded Jun 24, 2024
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 067822/0736 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2024
From: CHAMBERS, CRAIG D.; RANIWALA, ASHISH; PERRY, FRANCES J.; ADAMS, STEPHEN R.; HENRY, ROBERT R.; BRADSHAW, ROBERT; WEIZENBAUM, NATHAN
To: GOOGLE INC.
Reel/Frame 067793/0601 →
Continuity (11)
Continuation 18229450 · Aug 2, 2023
Continuation 17834256 · Jun 7, 2022
Continuation 17009420 · Sep 1, 2020
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
Division 12794348 · Jun 4, 2010
Provisional Application 61331148 · May 4, 2010
Related Publication 20240338235A1 · Oct 10, 2024
References Cited (116)
US 6128642A · Doraswamy · 2000 [cited by applicant]
US 7164422B1 · Wholey, III et al. · 2007 [cited by applicant]
US 7650331B1 · Dean et al. · 2010 [cited by applicant]
US 7716630B2 · Wholey et al. · 2010 [cited by applicant]
US 7844959B2 · Isard · 2010 [cited by applicant]
US 7917463B2 · Dagum et al. · 2011 [cited by applicant]
US 7921416B2 · Fontoura et al. · 2011 [cited by applicant]
US 8190610B2 · Dasdan et al. · 2012 [cited by applicant]
US 8209664B2 · Yu et al. · 2012 [cited by applicant]
US 8225277B2 · Biggerstaff · 2012 [cited by applicant]
US 8239847B2 · Yu et al. · 2012 [cited by applicant]
US 8266412B2 · Glew · 2012 [cited by applicant]
US 8296743B2 · Linderman et al. · 2012 [cited by applicant]
US 8321454B2 · Berlyant et al. · 2012 [cited by applicant]
US 8381015B2 · Kaminski · 2013 [cited by applicant]
US 8429630B2 · Nickolov et al. · 2013 [cited by applicant]
US 8429631B2 · Schumacher et al. · 2013 [cited by applicant]
US 8478967B2 · Bordelon · 2013 [cited by applicant]
US 8510284B2 · Nice · 2013 [cited by applicant]
US 8528000B2 · Schumacher et al. · 2013 [cited by applicant]
US 8555265B2 · Chambers et al. · 2013 [cited by applicant]
US 8583757B2 · Takaoka · 2013 [cited by applicant]
US 8612510B2 · Dean et al. · 2013 [cited by applicant]
US 8683471B2 · Brent · 2014 [cited by examiner]
US 8751639B2 · Griffiths · 2014 [cited by applicant]
US 8887156B2 · Chambers · 2014 [cited by applicant]
US 8959499B2 · Chambers et al. · 2015 [cited by applicant]
US 9081928B2 · Van Eijndhoven · 2015 [cited by examiner]
US 9104475B2 · Sule · 2015 [cited by examiner]
US 9268815B2 · Chen et al. · 2016 [cited by applicant]
US 9450873B2 · Greenberg · 2016 [cited by applicant]
US 9454571B2 · Grosse et al. · 2016 [cited by applicant]
US 9477502B2 · Chambers et al. · 2016 [cited by applicant]
US 9514147B2 · Ackerman · 2016 [cited by applicant]
US 9542462B1 · Stokely · 2017 [cited by examiner]
US 9626202B2 · Chambers et al. · 2017 [cited by applicant]
US 9678770B2 · Chambers et al. · 2017 [cited by applicant]
US 9733914B2 · Yi · 2017 [cited by applicant]
US 9898313B2 · Chambers et al. · 2018 [cited by applicant]
US 10133592B2 · Chambers et al. · 2018 [cited by applicant]
US 20050097561A1 · Schumacher et al. · 2005 [cited by applicant]
US 20070038659A1 · Datar · 2007 [cited by applicant]
US 20070083730A1 · Vorbach et al. · 2007 [cited by applicant]
US 20080005794A1 · Inoue et al. · 2008 [cited by applicant]
US 20080098375A1 · Isard · 2008 [cited by applicant]
US 20080209044A1 · Forrester · 2008 [cited by applicant]
US 20080250227A1 · Linderman et al. · 2008 [cited by applicant]
US 20090119541A1 · Inoue et al. · 2009 [cited by applicant]
US 20090204723A1 · Tonsing et al. · 2009 [cited by applicant]
US 20090217020A1 · Yourst · 2009 [cited by applicant]
US 20090225082A1 · Hargrove et al. · 2009 [cited by applicant]
US 20090282477A1 · Chen · 2009 [cited by applicant]
US 20100005080A1 · Pike et al. · 2010 [cited by applicant]
US 20100017761A1 · Higuchi et al. · 2010 [cited by applicant]
US 20100083185A1 · Sakai · 2010 [cited by applicant]
US 20100162230A1 · Chen · 2010 [cited by applicant]
US 20100175049A1 · Ramsey et al. · 2010 [cited by applicant]
US 20100241828A1 · Yu · 2010 [cited by applicant]
US 20100281078A1 · Wang et al. · 2010 [cited by applicant]
US 20100318963A1 · Kajiya · 2010 [cited by applicant]
US 20180203906A1 · Barsness · 2018 [cited by applicant]
US 20190065224A1 · Chambers · 2019 [cited by applicant]
CN 101443733A · 2009 [cited by applicant]
CN 101568900A · 2009 [cited by applicant]
Zhang et al., SJMR: Parallelizing spatial join with MapReduce on clusters, 8 pages (Year: 2009). [cited by applicant]
R. Lammel, Google's MapReduce Programming Model—Revisited, 45 pages (Year: 2008). [cited by applicant]
McCreadie RM, Macdonald C, Ounis I. On single-pass indexing with MapReduce. InProceedings of the 32nd international ACM SIGIR conference on Research and development in information retrieval Jul. 19, 2009 (pp. 742-743). [cited by applicant]
Zhao et al., MapReduce The Programming Model and Practice, 71 pages, Jun. 19, 2009. [cited by applicant]
Mccreadie et al., On single-pass indexing with MapReduce, 2 pages (Year: 2009). [cited by applicant]
Lasser, Cliff, et al., “The Essential Lisp Manual, Release 1, Revision 3,” Thinking Machines Technical Report 86.15, Thinking Machines Corporation, Apr. 1986, 59 pages. [cited by applicant]
Chaiken et al., SCOPE: Easy and efficient parallel processing of massive data sets. PVLDB, 1(2), 2008. [cited by applicant]
Chambers, C., Raniwala, A., Perry, F., Adams, S., Henry, R.R., Bradshaw, R., and Weizenbaum, N. FlumeJava: easy, efficient data-parallel pipelines. In Proceedings of PLDI. 2010, 363-375. [cited by applicant]
Chang et al., Bigtable: A distributed storage system for structured data. In OSDI, 2006. [cited by applicant]
Chen, Qiming et al., “Efficiently Support MapReduce-like Computation Models Inside Parallel DBMS,” IDEAS 2009, Sep. 16-18, 2009, 11 pages. [cited by applicant]
Citation containing publication date for: Roy el a!. “Airavat: Security and Privacy for MapReduce.” [online] In Proc. of 7th USENIX Symposium on Networked Systems Design and Implementation (NSDI). San Jose. CA. Apr. 201… [cited by applicant]
Dean and Ghemawat. MapReduce. Simplified data processing on large clusters. In OSDI, 2004. [cited by applicant]
Dean and Ghemawat. MapReduce: Simplified data processing on large clusters. Communication of the ACM, 51. No. 1, 2008. [cited by applicant]
Dean, Experiences with MapReduce an abstraction for large-scale computation. In PACT, 2006. [cited by applicant]
Meijer, Erik, et al., “LINQ: Reconciling objects, relations and XML in the .NET framework,” SIGMOD 2006, Jun. 27-29, 2006, 1 page. [cited by applicant]
Gates et al. “Building a HighLevel Dataflow System on top of MapReduce: The Pig Experience.” [online] VLDB ?09, Aug. 24-28, 2009. [retrieved on Jul. 25, 2011] Retrieved from the Internet<URL:http://cloud.pubs.dbs.uni-le… [cited by applicant]
Extended European Search Report in European Application No. EP11778249, dated Oct. 27, 2016, 13 pages. [cited by applicant]
Ghemawat et al. The Google file system. In SOSP, 2003. [cited by applicant]
H.-c, Yang, A. et al., Map-reduce-merge: simplified relational data processing on large clusters. In SIGMOD Conference , 2007. [cited by applicant]
Hsu et al. “Efficient simulation of critical synchronous dataflow graphs,” 2007, 28 pages. [cited by applicant]
Hu, Zhenjiang, “Calculational Parallel Programming (Parallel Programming with Homomorphism and MapReduce),” National Institute of Informatics, Sep. 27, 2010, 1 page. [cited by applicant]
Isard et al. Distributed Data-Parallel Computing Using a High-Level [online]. SIGMOD'09, Jun. 29-Jul. 2, 2009. Providence, Rhode Island, USA. [retrieved on Jul. 25, 2011] Retrieved from the Internet <URL:http://research… [cited by applicant]
Isard et al., Dryad: Distributed data-parallel programs from sequential building blocks. In EuroSys, 2007. [cited by applicant]
J.R. Rose and G.L. Steele Jr., C. An Extended C language. In C++ Workshop, 1987. [cited by applicant]
Johnson, “Background work with the deferred library,” Google Cloud Platform, Oct. 2009, 11 pages. [cited by applicant]
Kalkusch et al. “Extending the scene graph with a dataflow visualization systems,” 2006, 9 pages. [cited by applicant]
Larus, C. A large-grain, object-oriented, data-parallel programming language. UW Technical Report #1126, In LCPC, 1992. [cited by applicant]
Liu et al. “Automatic Optimisation of MapReduce Designs by Geometric Programming” [online] 2009. [retrieved on Jul. 23, 2011] Retrieved from the Internet <URL:http://cas.ee.ic.ac.uklpeople/gac1/pubs/QiangFPT09.pdf>. [cited by applicant]
Isard et al., Distributed data-parallel computing using a high-level programming language, 8 pages, 2009. [cited by applicant]
Muthuvelu et al., A dynamic job grouping-based scheduling for deploying applications with fine-grained tasks on global grids, 8 pages, 2005. [cited by applicant]
Office Action issued in Canadian Application No. 2798266, dated Sep. 25, 2017, 4 pages. [cited by applicant]
Office Action issued in Chinese Application No. 201180032739.5 dated Aug. 28, 2014, 24 pages (with English translation). [cited by applicant]
Office Action issued in Chinese Application No. 201510772809.0, dated Mar. 15, 2018, 15 pages (with English Translation). [cited by applicant]
Olsten et al., Pig Latin: A not-so-foreign language for data processing. In SIGMOD Conference, 2008. [cited by applicant]
Pike et al., Interpreting the data: Parallel analysis with Sawzall. Scientific Programming, 13(4):277-298, 2005. [cited by applicant]
R.H. Halstead Jr. New ideas in parallel Lip: Language design implementation, and programming tools. In Workshop on Parallel Lisp, 1989. [cited by applicant]
R.S. Nikhail andArvind. Implicit Parallel Programming in pH. Academic Press, 2001. [cited by applicant]
Ramesh et al., Project Hoover: auto-scaling streaming map-reduce applications, Sep. 2012, 6 pages. [cited by applicant]
Roy et al. “Airavat: Security and Privacy for MapReduce.” [online] In Proc. of 7th USENIX Symposium on Networked Systems Design and Implementation (NSDI). San Jose. CA. Apr. 2010 [retrieved on Jul. 24, 2011] Retrieved f… [cited by applicant]
Thomas et al., Utilization of map-reduce for parallelization of resource scheduling using MPI: PRS, Feb. 2011, 6 pages. [cited by applicant]
Written Opinion of the International Searching Authority and International Search Report for PCT/US2011/035159 dated Aug. 9, 2011. [cited by applicant]
Yu et al., DryadLINQ: A system for general-purpose distributed data-parallel computing using a high-level language. In OSDI, 2008. [cited by applicant]
Canadian Office Action issued in Canadian Application No. 2,798,266, dated Feb. 6, 2017. [cited by applicant]
Pig. http://hadoop.apache.org/pig. as of Nov. 2, 2009, retrieved from the Internet, URL: http://web.archive.org/web/20091102135550/http://hadoop.apache.org/pig/[M-ar. 27, 2012]. [cited by applicant]
Cascading. http://www.cascading.org as of Nov. 9, 2009, retrieved from the Internet, URL: http://web.archive.org/web/20091115135536/http://www.cascading.org/[Mar. 27, 2012 11:30:56 AM]. [cited by applicant]
Hadoop. http://hadoop.apache.org. as of Nov. 24, 2009, retrieved from the Internet, URL: http://web.archive.org/web/20091124215304/http://hadoop.apache.org/[Mar. 27, 2012 11:48:26 AM]. [cited by applicant]
Office Action in Korean application No. 10-2012-7031681, dated May 23, 2017, 11 pages (English translation) No new art. [cited by applicant]
Office Action in Korean Application No. 10-2012-7031681, dated Nov. 22, 2017, 2 pages (English Translation). [cited by applicant]
Notice of Allowance issued in Korean Application No. 10-2017-7020753, dated Mar. 29, 2018, 4 pages (with English Translation). [cited by applicant]
Office Action in Korean Application No. 10-2017-7020753, dated Nov. 22, 2017, 2 pages (English Translation). [cited by applicant]
Office Action in Korean Application No. 10-2017-7020753, dated Mar. 29, 2018, 4 pages. [cited by applicant]
Office Action issued in Korean Application No. 10-2018-7018715, dated Jul. 16, 2018, 4 pages (with English Translation). [cited by applicant]