IP Library Granted Patent US 10,218,808
Granted Patent B2
US 10,218,808 · App. 14/886,841 · Granted Feb 26, 2019

Scripting distributed, parallel programs

Inventors: Stephen Milton (Lyons, CO); Duncan McCall (Greenwich, CT)
Assignee: PlaceIQ, Inc.
H04L67/2833G06F9/5083G06F17/30241G06F17/30371G06F17/30424G06F17/30489G06F17/30507H04L69/22H04L67/18
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 10,218,808
App. No.
14/886,841
Granted
Feb 26, 2019
Kind
B2
Abstract

Provided is a process having steps including obtaining a specification of a data analysis to be performed in parallel on a computing cluster; parsing the specification of the data analysis; determining which data is implicated in each portion of the data analysis to be assigned to a plurality of computing nodes of the computing cluster; determining that a portion of the implicated data is not already present in memory of at least some of the plurality of computing nodes of the computing cluster; distributing the portion of the implicated data according to an index that positions related values of the data on the same computing nodes of the computing cluster; determining which computing nodes of the computing cluster have data relevant to which rules in the data analysis and send relevant rules to the corresponding computing nodes; executing the rules on the computing nodes; and aggregating results of executing the rules.

Claims (50)

1. A method, comprising:

obtaining a specification of a data analysis to be performed in parallel on a computing cluster comprising a plurality of computing nodes;

parsing the specification of the data analysis to identify rules applicable to the data analysis;

based on the parsed specification of the data analysis, determining which data is implicated in each portion of the data analysis to be assigned to the plurality of computing nodes of the computing cluster;

determining that a portion of the implicated data is not already present in memory of at least some of the plurality of computing nodes of the computing cluster;

in response to the determination, distributing the portion of the implicated data according to an index that positions related values of the data on the same computing nodes of the computing cluster, wherein distributing the portion of the implicated data comprises calculating index values for tile records based on geographic location such that tile records for adjacent geographic locations are grouped together on the same computing nodes;

translating the parsed specification of the data analysis into mapper rules and reducer rules, at least one of which includes one or more parameters specific to data on a given computing node among the plurality of computing nodes of the computing cluster;

determining which computing nodes of the computing cluster have data relevant to which rules of the mapper rules and the reducer rules and sending the mapper rules and the reducer rules to the corresponding computing nodes for execution in MapReduce routines;

executing the mapper rules and the reducer rules on the corresponding computing nodes; and

aggregating results of executing one or more of the mapper rules and the reducer rules.

2. The method of claim 1 , wherein one or more tile records have an associated time value, the method comprising:

determining that a second portion of the implicated data is not already present in memory of at least some of the plurality of computing nodes of the computing cluster; and

in response to the determination, distributing the second portion of the implicated data according to an index that positions related values of the data on the same computing nodes of the computing cluster, wherein distributing the second portion of the implicated data comprises calculating index values for time-tile records based on time such that consecutive time-tile records are grouped together on the same computing nodes.

3. The method of claim 1 , wherein one or more of the tile records are time-tile records, each of the time-tile records having an associated time value, the calculating index values for the time-tile records further based on time such that consecutive time-tile records for adjacent geographic locations are grouped together on the same computing nodes.

4. The method of claim 1 , wherein:

the specification of the data analysis is expressed as a script; and

parsing includes parsing the script at run time to form a tree data structure.

5. The method of claim 4 , wherein translating the parsed specification of the data analysis comprises translating the tree data structure into mapper rules of a map function and reducer rules of a reduce function.

6. The method of claim 1 , wherein the result of executing the mapper rules and the reducer rules on the corresponding computing nodes is not stored on non-volatile memory of the corresponding computing nodes before aggregating the results.

7. The method of claim 1 , wherein the result of executing the mapper rules and the reducer rules on the corresponding computing nodes is stored on non-volatile memory of the corresponding computing nodes before aggregating the results.

8. The method of claim 1 , comprising:

determining that a given computing node among the plurality of computing nodes is taking longer than a threshold duration of time to execute at least some of received rules and, in response, distributing at least some of the received rules formerly distributed to the given computing node to another computing node among the plurality of computing nodes.

9. The method of claim 1 , wherein distributing the portion of the implicated data comprises distributing at least some of the data among a distributed system of immutable files stored on multiple computing nodes among the plurality of nodes.

10. The method of claim 1 , wherein a given tile record has one or more key-value pairs and a respective key of a key-value pair indicates that the given tile record and one or more other tile records are near one another in geographic location or time if they have similar keys in an index of key-value pairs.

11. A system, comprising:

one or more processors; and

machine readable media storing instructions that when executed by at least some of the processors effectuate operations comprising:

obtaining a specification of a data analysis to be performed in parallel on a computing cluster comprising a plurality of computing nodes;

parsing the specification of the data analysis to identify rules applicable to the data analysis;

based on the parsed specification of the data analysis, determining which data is implicated in each portion of the data analysis to be assigned to the plurality of computing nodes of the computing cluster;

determining that a portion of the implicated data is not already present in memory of at least some of the plurality of computing nodes of the computing cluster;

in response to the determination, distributing the portion of the implicated data according to an index that positions related values of the data on the same computing nodes of the computing cluster, wherein distributing the portion of the implicated data comprises calculating index values for tile records based on geographic location such that tile records for adjacent geographic locations are grouped together on the same computing nodes;

translating the parsed specification of the data analysis into mapper rules and reducer rules, at least one of which includes one or more parameters specific to data on a given computing node among the plurality of computing nodes of the computing cluster;

determining which computing nodes of the computing cluster have data relevant to which rules of the mapper rules and the reducer rules and sending the mapper rules and the reducer rules to the corresponding computing nodes for execution in MapReduce routines;

executing the mapper rules and the reducer rules on the corresponding computing nodes; and

aggregating results of executing one or more of the mapper rules and the reducer rules.

12. The system of claim 11 , wherein one or more tile records have an associated time value, the method comprising:

determining that a second portion of the implicated data is not already present in memory of at least some of the plurality of computing nodes of the computing cluster; and

in response to the determination, distributing the second portion of the implicated data according to an index that positions related values of the data on the same computing nodes of the computing cluster, wherein distributing the second portion of the implicated data comprises calculating index values for time-tile records based on time such that consecutive time-tile records are grouped together on the same computing nodes.

13. The system of claim 11 , wherein one or more of the tile records are time-tile records, each of the time-tile records having an associated time value, the calculating index values for the time-tile records further based on time such that consecutive time-tile records for adjacent geographic locations are grouped together on the same computing nodes.

14. The system of claim 11 , wherein:

the specification of the data analysis is expressed as a script; and

parsing includes parsing the script at run time to form a tree data structure.

15. The system of claim 14 , wherein translating the parsed specification of the data analysis comprises translating the tree data structure into mapper rules of a map function and reducer rules of a reduce function.

16. The system of claim 11 , wherein the result of executing the mapper rules and the reducer rules on the corresponding computing nodes is not stored on non-volatile memory of the corresponding computing nodes before aggregating the results.

17. The system of claim 11 , wherein the result of executing the mapper rules and the reducer rules on the corresponding computing nodes is stored on non-volatile memory of the corresponding computing nodes before aggregating the results.

18. The system of claim 11 , the operations comprising:

determining that a given computing node among the plurality of computing nodes is taking longer than a threshold duration of time to execute at least some of received rules and, in response, distributing at least some of the received rules formerly distributed to the given computing node to another computing node among the plurality of computing nodes.

19. The system of claim 11 , wherein distributing the portion of the implicated data comprises distributing at least some of the data among a distributed system of immutable files stored on multiple computing nodes among the plurality of nodes.

20. The system of claim 11 , wherein a given tile record has one or more key-value pairs and a respective key of a key-value pair indicates that the given tile record and one or more other tile records are near one another in geographic location or time if they have similar keys in an index of key-value pairs.

Assignments (5)
FIRST LIEN GRANT OF SECURITY INTEREST IN PATENTS Recorded Feb 15, 2022
From: PLACEIQ, INC.
To: JPMORGAN CHASE BANK, N.A AS COLLATERAL AGENT
Reel/Frame 059110/0504 →
SECOND LIEN GRANT OF SECURITY INTEREST IN PATENTS Recorded Feb 15, 2022
From: PLACEIQ, INC.
To: BARLCAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 059110/0787 →
NOTICE OF RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY (REEL/FRAME 054517/0223) Recorded Feb 11, 2022
From: SILICON VALLEY BANK
To: PLACEIQ, INC.
Reel/Frame 059032/0990 →
SECURITY INTEREST Recorded Dec 2, 2020
From: PLACEIQ, INC.
To: SILICON VALLEY BANK
Reel/Frame 054517/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2016
From: MILTON, STEPHEN; MCCALL, DUNCAN
To: PLACEIQ, INC.
Reel/Frame 039538/0979 →
Continuity (2)
Provisional Application 62066100 · Oct 20, 2014
Related Publication 20160112531A1 · Apr 21, 2016