IP Library Granted Patent US 12,197,950
Granted Patent B2
US 12,197,950 · App. 18/210,566 · Granted Jan 14, 2025

Cluster job submission

Inventors: Andrew Johnson (Cleveland, OH); Daniel Snitkovskiy (Renton, WA); Marti Motoyama (San Francisco, CA); Jonathan Bender (Oakland, CA)
Assignee: Stripe, Inc.
G06F9/5005G06F9/455G06F9/45533G06F9/45558G06F9/48G06F9/4806G06F9/4843G06F9/485G06F9/4881G06F9/50G06F9/5027G06F9/5061G06F9/5072G06F9/5077G06Q40/02H04L67/56G06F2009/45562G06F2009/4557G06F2009/45575G06F2209/505G06Q20/023G06Q20/385G06Q20/40
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,197,950
App. No.
18/210,566
Granted
Jan 14, 2025
Kind
B2
Abstract

A method and apparatus for job submission are described. In one embodiment, the jobs are submitted by a job submission service or gateway that schedules large-scale data processing jobs on remote infrastructure. In one embodiment, the method comprises: receiving a request at a proxy service from a client, via a network communication, to submit a job to a cluster; and managing the job externally to the client, including sending a request to an orchestration system to launch an orchestration system job in a container to start the job running on the cluster via a client process run on a job client in the container and provide state information back to the proxy service regarding the orchestration system job.

Claims (75)

1. A method comprising:

receiving, at a proxy service, a request to submit a job to a cluster

sending, by the proxy service, the request to an orchestration system;

causing the orchestration system to launch an orchestration system job in a container on a job client server, wherein the job client server is separate from the cluster and the proxy service, the orchestration system job to start the job on the cluster, the orchestration system job comprising:

a job client; and

a launcher wrapper to launch the job client on the job client server;

storing, in a database under control of the proxy service, a job identifier associated with the job and a cluster identifier associated with the cluster;

receiving state information regarding the orchestration system job sent by the launcher wrapper to the proxy service for storage in the database with the job identifier associated with the job and the cluster identifier associated with the cluster;

receiving, by the proxy service, a kill request to terminate the job; and

terminating, by the proxy service, the job using the job identifier stored in the database without proceeding through the orchestration system.

2. The method defined in claim 1 , wherein the request includes a set of modification hooks, wherein the set of modification hooks are provided via a submit job endpoint for modifying, by the proxy service, the request based on the modification hooks, the modifying comprising at least one of:

a set of arguments associated with the job; or

an execution environment associated with the job.

3. The method defined in claim 2 wherein one of the set of modification hooks is an access control hook, wherein the access control hook:

obtains a name of a user placing the request, a set of inputs, and a set of outputs associated with the job; and

calls a library to confirm that the user has access to a set of data the job will access.

4. The method defined in claim 2 wherein the set of modification hooks comprises a first modification hook and a second modification hook and the second modification hook is applied to an output of the first modification hook.

5. The method of claim 1 , further comprising:

receiving a call back from the launcher wrapper with information indicating the orchestration system job is running;

receiving a heartbeat message from the launcher wrapper indicating the orchestration system job is running; and

receiving one or more logs emitted by the job client.

6. The method defined in claim 1 wherein the job is an HTTP request.

7. The method defined in claim 1 wherein the cluster is a Hadoop cluster.

8. A system comprising:

a network interface to receive a request for a proxy service;

a memory to store instructions;

one or more processors coupled to the memory and the network interface to execute the stored instructions to:

receive, at the proxy service, a request to submit a job to a cluster, the request including a set of modification hooks;

modify, by the proxy service, the request based on the modification hooks, the modifying comprising at least one of:

a set of arguments associated with the job; or

an execution environment associated with the job;

send, by the proxy service, the request to an orchestration system;

cause the orchestration system to launch an orchestration system job in a container on a job client server, wherein the job client server is separate from the cluster and the proxy service, the orchestration system job to start the job on the cluster, the orchestration system job comprising:

a job client; and

a launcher wrapper to launch the job client on the job client server;

store, in a database under control of the proxy service, a job identifier associated with the job and a cluster identifier associated with the cluster;

receive state information regarding the orchestration system job sent by the launcher wrapper to the proxy service for storage in the database with the job identifier associated with the job and the cluster identifier associated with the cluster;

receive, by the proxy service, a kill request to terminate the job; and

terminate, by the proxy service, the job using the job identifier stored in the database without proceeding through the orchestration system.

9. The system defined in claim 8 wherein the one or more processors are configured to:

store, under control of the proxy service, job identification information to identify the job and at least one of status or log information regarding the job produced by the job client in the container; and

enable access to at least one of status or log information regarding the job produced by the job client in the container.

10. The system defined in claim 8 wherein the network interface is operable to:

receive a call back from the launcher wrapper with information indicating the orchestration system job is running;

receive a heartbeat messages from the launcher wrapper indicating the orchestration system job is running; and

receive one or more logs emitted by the job client.

11. The system defined in claim 8 wherein the one or more processors send the request to the orchestration system to launch the job by launching a container that encapsulates the job.

12. The system defined in claim 11 wherein the encapsulated job includes hooks for one or more operations for the cluster to perform.

13. The system defined in claim 8 wherein the request is an HTTP request.

14. The system defined in claim 8 wherein the cluster is a Hadoop cluster.

15. A non-transitory computer readable storage media comprising instructions stored thereupon which, when executed by a system having at least a processor and a memory therein, cause the system to perform operations comprising:

receiving, at a proxy service, a request to submit a job to a cluster, the request including a set of modification hooks;

modifying, by the proxy service, the request based on the modification hooks, the modifying comprising at least one of:

a set of arguments associated with the job; or

an execution environment associated with the job;

sending, by the proxy service, the request to an orchestration system;

causing the orchestration system to launch an orchestration system job in a container on a job client server, wherein the job client server is separate from the cluster and the proxy service, the orchestration system job to start the job on the cluster, the orchestration system job comprising:

a job client; and

a launcher wrapper to launch the job client on the job client server;

storing, in a database under control of the proxy service, a job identifier associated with the job and a cluster identifier associated with the cluster;

receiving state information regarding the orchestration system job sent by the launcher wrapper to the proxy service for storage in the database with the job identifier associated with the job and the cluster identifier associated with the cluster;

receiving, by the proxy service, a kill request to terminate the job; and

terminating, by the proxy service, the job using the job identifier stored in the database without proceeding through the orchestration system.

16. The non-transitory computer readable storage media defined in claim 15 wherein the operations further comprise:

storing, under control of the proxy service, job identification information to identify the job and at least one of status and log information regarding the job produced by the job client in the container; and

enabling access to at least one of status or log information regarding the job produced by the job client in the container.

17. The non-transitory computer readable storage media defined in claim 15 wherein the operations further comprise:

receiving a call back from the launcher wrapper with information indicating the orchestration system job is running;

receiving a heartbeat messages from the launcher wrapper indicating the orchestration system job is running; and

receiving one or more logs emitted by the job client.

18. The non-transitory computer readable storage media defined in claim 15 wherein sending the request to the orchestration system to launch the orchestration system job comprises launching a container that encapsulates the orchestration system job.

19. The non-transitory computer readable storage media defined in claim 15 wherein the set of modification hooks comprises a first modification hook and a second modification hook and the second modification hook is applied to an output of the first modification hook.

20. The non-transitory computer readable storage media defined in claim 15 wherein one of the set of modification hooks is an access control hook, wherein the access control hook:

obtains a name of a user placing the request, a set of inputs, and a set of outputs associated with a job; and

calls a library to confirm that the user has access to a set of data the job will access.

Assignments (1)
CHANGE OF NAME Recorded Jan 30, 2026
From: STRIPE, INC.
To: STRIPE, LLC
Reel/Frame 074572/0345 →
Continuity (2)
Continuation 16917616 · Jun 30, 2020
Related Publication 20230325238A1 · Oct 12, 2023
References Cited (16)
US 11134013B1 · Allen et al. · 2021 [cited by applicant]
US 20090089809A1 · Deshpande et al. · 2009 [cited by applicant]
US 20090204980A1 · Sandoval · 2009 [cited by examiner]
US 20090241117A1 · Dasgupta et al. · 2009 [cited by applicant]
US 20150264122A1 · Shau et al. · 2015 [cited by applicant]
US 20170016084A1 · Chin et al. · 2017 [cited by applicant]
US 20170061143A1 · Rooney et al. · 2017 [cited by applicant]
US 20180181436A1 · Chen · 2018 [cited by applicant]
US 20180219877A1 · Hsu et al. · 2018 [cited by applicant]
US 20180247648A1 · Nadimpalli · 2018 [cited by examiner]
US 20190108049A1 · Singh et al. · 2019 [cited by applicant]
US 20210271489A1 · Singhal · 2021 [cited by applicant]
KR 1020180024367A · 2018 [cited by applicant]
International Search Report and Written Opinion on the Patentability of Application No. PCT/US2021/039240 Mailed Oct. 8, 2021, 11 pages. [cited by applicant]
Intemational Preliminary Report and Written Opinion on the Patentability of Application No. PCT/US2021/039240 Mailed Jan. 12, 2023, 6 pages. [cited by applicant]
Extended European Search Report from European Patent Application No. 21832122.2, dated Jun. 13, 2024, 7 pages. [cited by applicant]