Spark Driver-Executor Collaboration Across Multiple Kubernetes Clusters

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current multi-Kubernetes clusters face challenges in efficiently handling complex computing jobs for big data and intelligent computing, as they lack elasticity and often result in resource wastage, with existing methods unable to effectively schedule and optimize Spark computing across multiple domains.

Innovation Solution

A method and apparatus for executing collaborative jobs across multiple Kubernetes clusters, where a collaboration center specifies a master and slave cluster, creates driver and executor Pods, and establishes a reverse proxy for direct communication, allowing multiple clusters to share computing resources transparently without generating multiple Spark Drivers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a single-cluster resource is used to execute Spark computing jobs, then the system structure is simple and easy to manage, but it cannot handle super-large and complex computing jobs requiring larger scale data centers

Engineering Contradiction:
Improvecapability to handle complex computing jobsVSAvoidsystem structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system segments the computing job into driver and executor components, with the driver running on one Kubernetes cluster and executors running on multiple slave clusters. This segmentation allows the single-driver architecture to scale across multiple clusters while maintaining Spark's unified execution model, resolving the contradiction between handling complex jobs and maintaining system simplicity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a reverse proxy as an intermediary component between the driver and executor Pods across different Kubernetes clusters. The reverse proxy enables communication and resource access between clusters without requiring complex direct connectivity configurations, thus enabling multi-cluster capability while avoiding excessive system complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If multiple Kubernetes clusters are used to increase computing capacity, then the system can handle larger computing jobs, but resource wastage occurs to ensure business response to unexpected requests

Engineering Contradiction:
Improvecomputing capacityVSAvoidresource wastage
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The system dynamically scales the number of executor Pods across slave clusters based on actual job requirements. The driver Pod can dynamically allocate and deallocate executor resources on different clusters according to workload demands, enabling elastic resource utilization that prevents both over-provisioning (wastage) and under-provisioning (inability to handle requests).

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the resource allocation parameters from static cluster configurations to dynamic per-Pod resource requests. By specifying resource requirements at the Pod level and allowing dynamic adjustment, the system optimizes resource utilization across multiple clusters, reducing wastage while ensuring sufficient capacity for unexpected requests.

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If a federated cluster model is adopted for multi-Kubernetes clusters, then resource sharing is enabled, but the Spark scheduling and optimization methods cannot be implemented across domains

Engineering Contradiction:
Improveresource sharing capabilityVSAvoidSpark scheduling and optimization
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The reverse proxy serves as a domain-crossing intermediary that transparently handles communication between Spark components on different Kubernetes clusters. It preserves the standard Spark driver-executor communication protocol, allowing Spark's native scheduling and optimization mechanisms to function across domains without requiring modifications to Spark's core scheduling logic.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The driver Pod is designed with universal functionality to manage executors across multiple different Kubernetes clusters. The driver can dynamically discover, register, and manage executor Pods on various slave clusters using standardized Kubernetes APIs, making Spark's scheduling and optimization methods universally applicable across different cluster domains without cluster-specific customization.

Inventive Principle:
Principle #6Universality (Multi-functionality)

4Productivity

If multiple driver Pods are created in multi-cluster Spark, then each cluster can independently execute jobs, but computing power collaboration becomes inefficient

Engineering Contradiction:
Improvejob execution independenceVSAvoidcomputing power collaboration efficiency
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges the driver functionality across multiple clusters into a single driver Pod that coordinates all executors. Instead of having independent driver Pods on each cluster, one central driver manages all executor Pods across slave clusters, consolidating control and optimization logic while maintaining the ability to execute jobs across multiple clusters efficiently.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS11954525B1Method and apparatus of executing collaborative job for spark faced to multiple K8s clusters
Publication Date: 2024.04.09 ZHEJIANG LAB
  • US11954525B1 patent drawing
  • US11954525B1 patent drawing
  • US11954525B1 patent drawing

AI summary

The present disclosure discloses Spark collaborative computing, job method and apparatus for multiple K8s clusters, and addresses the problem that most of the current multiple K8s clusters adopt the model of federated clusters, and Spark's own method of scheduling and optimization cannot be implemented across domains, by implementing a cross-domain job method, setting the multiple K8s clusters as a master cluster and a slave cluster, with the master cluster being responsible for creating Spark's The master cluster is responsible for creating Spark's Driver container and Pods, and the slave cluster is responsible for creating Spark's Executor container and Pods. After the containers are created, a direct tunnel is established between the master cluster and the slave cluster by aggregating address information and access credentials through the Collaboration Center, and the containers in the slave cluster register with Driver and continuously send heartbeat messages through the tunnel.