IP Library Granted Patent US 11,748,161
Granted Patent B1
US 11,748,161 · App. 16/917,616 · Granted Sep 5, 2023

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/485G06F9/4806G06F9/4843G06F9/4881G06F9/50G06F9/5027G06F9/5061G06F9/5072G06F9/5077G06Q40/02H04L67/56G06F2009/4557G06F2009/45562G06F2009/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 11,748,161
App. No.
16/917,616
Granted
Sep 5, 2023
Kind
B1
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 first client, via a first network communication, to submit a first job to a cluster; and managing the first job externally to the first client, including sending a request to an orchestration system to launch an orchestration system job in a container to start the first 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 (60)

1. A method comprising:

receiving a request at a proxy service from a first client, via a first network communication, to submit a first job to a cluster; and

managing the first job externally to the first client, including

sending, by the proxy service, a request to an orchestration system to launch an orchestration system job in a container to start a cluster job running on the cluster via a job client running on a job client server separate from the cluster and the proxy service, the container encapsulating the first job that the client requested the proxy service to submit and including the job client and a launcher wrapper that launches the job client on the job client server,

storing, in a database under control of the proxy service, job identification information to identify the first job and a mapping of the job identification information to a cluster identifier associated with the cluster job, and

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 identification information and the mapping of the job identification information to the cluster identifier associated with the cluster;

receiving, by the proxy service, a kill request from the first client to stop execution of the first job; and

signaling, by the proxy service, the cluster job directly without proceeding through the orchestration system using the cluster identifier stored in memory to kill execution of the cluster job.

2. The method defined in claim 1 further comprising:

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

enabling access, to the first client, to status and/or log information regarding the first job produced by the job client in the container.

3. The method defined in claim 1 further comprising:

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

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

receiving one or more logs emitted by the job client.

4. The method defined in claim 1 wherein sending the request to the orchestration system to launch the orchestration system job comprises launching a container that encapsulates the first job.

5. The method defined in claim 4 wherein the encapsulated job includes hooks for one or more operations for the cluster to perform.

6. The method defined in claim 1 wherein the first job is a batch job.

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

8. The method defined in claim 1 wherein the cluster is a Hadoop cluster, and wherein the orchestration system is Kubernetes.

9. The method of claim 1 further comprising:

deleting, by the proxy service, the orchestration system job in response to the kill request.

10. A system comprising:

a network interface to receive a request at a proxy service from a first client, via a first network communication, to submit a first job to a cluster;

a memory to store instructions;

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

manage the first job externally to the first client, by

sending, by the proxy service, a request to an orchestration system to launch an orchestration system job in a container to start a cluster job running on the cluster via a job client running on a job client server separate from the cluster and the proxy service, the container encapsulating the first job that the client requested the proxy service to submit and including the job client and a launcher wrapper that launches the job client on the job client server,

storing, in a database under control of the proxy service, job identification information to identify job the first job and a mapping of the job identification information to a cluster identifier associated with the cluster job,

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 identification information and the mapping of the job identification information to the cluster identifier associated with the cluster,

receiving, by the proxy service, a kill request from the first client to stop execution of the first job, and

signaling, by the proxy service, the cluster job directly without proceeding through the orchestration system using the cluster identifier stored in memory to kill execution of the cluster job.

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

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

enable access, to the first client, to status and/or log information regarding the first job produced by the job client in the container.

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

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

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

receive one or more logs emitted by the job client.

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

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

15. The system defined in claim 10 wherein the request is an HTTP request.

16. One or more non-transitory computer readable storage media having 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 a request at a proxy service from a first client, via a first network communication, to submit a first job to a cluster; and

managing the first job externally to the first client, including

sending, by the proxy service, a request to an orchestration system to launch an orchestration system job in a container to start a cluster job running on the cluster via a job client running on a job client server separate from the cluster and the proxy service, the container encapsulating the first job that the client requested the proxy service to submit and including the job client and a launcher wrapper that launches the job client on the job client server,

storing, in a database under control of the proxy service, job identification information to identify job the first job and a mapping of the job identification information to a cluster identifier associated with the cluster job,

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 identification information and the mapping of the job identification information to the cluster identifier associated with the cluster,

receiving, by the proxy service, a kill request from the first client to stop execution of the first job, and

signaling, by the proxy service, the cluster job directly without proceeding through the orchestration system using the cluster identifier stored in memory to kill execution of the cluster job.

17. The computer readable storage media defined in claim 16 , wherein the method further comprises:

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

enabling access, to the first client, to status and/or log information regarding the first job produced by the job client in the container.

18. The computer readable storage media defined in claim 16 wherein the method further comprises:

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

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

receiving one or more logs emitted by the job client.

19. The computer readable storage media defined in claim 16 wherein sending the request to the orchestration system to launch the orchestration system job comprises launching a container that encapsulates the first job.

20. The computer readable storage media defined in claim 19 wherein the encapsulated job includes hooks for one or more operations for the cluster to perform.

21. The computer readable storage media defined in claim 16 wherein the first job is a batch job, the request is an HTTP request, the cluster is a Hadoop cluster, and the orchestration system is Kubernetes.

Assignments (2)
CHANGE OF NAME Recorded Jan 30, 2026
From: STRIPE, INC.
To: STRIPE, LLC
Reel/Frame 074572/0345 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2024
From: JOHNSON, ANDREW; MOTOYAMA, MARTI; BENDER, JONATHAN; SNITKOVSKIY, DANIEL
To: STRIPE, INC.
Reel/Frame 067094/0561 →