Aller au contenu principal

Run Spark Submit (spark-submit) on Kubernetes

Une tâche Spark simple dans Ilum fonctionne comme une tâche soumise via la norme étincelle-soumission , mais avec des améliorations supplémentaires pour faciliter l’utilisation, la configuration et l’intégration avec des outils externes.

Vous pouvez utiliser le fichier JAR avec des exemples Spark à partir de votre installation Spark locale ou de tout JAR personnalisé dont vous disposez.

Vous trouverez ci-dessous un guide étape par étape pour configurer et exécuter un travail Spark simple à l’aide de étincelle-soumission on Ilum. This guide demonstrates the core configuration needed and shows how to monitor your job’s progress within the Ilum platform. For a complete overview of Ilum's architecture, check the Architecture Overview.


Quick Start (TL;DR)

How do I run a Spark job on Kubernetes with étincelle-soumission ?

To run a Spark job on Ilum (Kubernetes), ensure Java 17 and Spark are installed, upload your JAR, and run:

Quick Start: Spark Submit on K8s
./bin/spark-submit \ 
--master k8s ://http ://<ilum-core-address> :<ilum-core-port> \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
--conf spark.driver.memory=4g \
--conf spark.ilum.cluster=par défaut \
--conf spark.kubernetes.container.image=ilum/spark:4.1.1 \
--conf spark.kubernetes.submission.waitAppCompletion=true \
s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.1.jar

Note: Replace <ilum-core-address> with your actual Ilum Core endpoint.

Step-by-Step Guide

1. Prerequisites

  • Assurez-vous que Java 17 est installé et correctement configuré dans votre JAVA_HOME .
  • Download and extract the appropriate version of Apache Spark:
Download Spark 4
wget https://archive.apache.org/dist/spark/spark-4.1.1/spark-4.1.1-bin-hadoop3.tgz
tar -xzf spark-4.1.1-bin-hadoop3.tgz
cd spark-4.1.1-bin-hadoop3

2. Connect to Ilum

If Ilum is deployed on Kubernetes, forward the service port to your local machine to make Ilum accessible at localhost :9888 .

Forward Core
kubectl port-forward svc/ilum-core 9888:9888 
Production Tip

Si vous communiquez à partir du même cluster Kubernetes, vous pouvez utiliser des adresses de service basées sur le DNS Kubernetes (par exemple, http://ilum-core.namespace.svc.cluster.local ) or expose services using Ingress.

3. Submit Your Spark Job

Choose the submission method that best fits your workflow:

This method is suitable for quick local testing.

1. Upload your JAR File

For demonstration, we assume the JAR is uploaded manually to MinIO.

Locate the example JAR: examples/jars/spark-examples_2.13-4.1.1.jar

Upload it to MinIO (bucket limes-ilum , path ilum/default/): s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.1.jar

2. Submit via REST

Limitation

spark.ilum.pyExigences is not supported in this mode, as REST does not support PySpark submissions.

Run the following command:

REST Submit (Spark 4)
./bin/spark-submit \ 
--master spark://localhost:9888 \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
--conf spark.master.rest.enabled=vrai \
--conf spark.ilum.cluster=par défaut \
--conf spark.app.name=my-spark-job \
s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.1.jar

Parameters:

ParameterDescription
--maître Ilum Core address via REST (e.g. spark://localhost:9888).
--conf spark.master.rest.enabled=vrai Enables REST submission.
s3a ://... JAR file path in MinIO.
Expected Output
Exécution de Spark à l’aide du protocole de soumission d’application REST. 
25/03/12 12:58:01 INFO RestSubmissionClient : Soumission d’une demande de lancement d’une application en spark://localhost:9888.
25/03/12 12:58:03 INFO RestSubmissionClient : Soumission créée avec succès sous le nom de 20250312-1158-qdnioef2rny. État de soumission du sondage...
25/03/12 12:58:03 INFO RestSubmissionClient : Soumission d’une demande pour le statut de la soumission 20250312-1158-qdnioef2rny en spark://localhost:9888.
25/03/12 12:58:03 INFO RestSubmissionClient : État du pilote 20250312-1158-qdnioef2rny est maintenant SOUMIS.
25/03/12 12:58:03 INFO RestSubmissionClient : Le pilote s’exécute sur l’ILUM de travail à l’adresse ILUM_UI_ADDRESS/workloads/details/job/20250312-1158-qdnioef2rny.
25/03/12 12:58:03 INFO RestSubmissionClient : Le serveur a répondu avec CreateSubmissionRéponse :
{
« action » : « CreateSubmissionResponse »,
"serverSparkVersion" : "4.1.1",
« submissionId » : « 20250312-1158-qdnioef2rny »,
« Succès » : Vrai
}
25/03/12 12:58:03 INFO ShutdownHookManager : Hook d’arrêt appelé
25/03/12 12:58:03 INFO ShutdownHookManager : Suppression du répertoire /tmp/spark-fa2603be-488a-4e2a-9b7f-5e49825d379b

4. Monitor and Troubleshoot

Using the Ilum UI:

  • Surveiller l’avancement du travail : Track executors, memory usage, and job stages.
  • Review Results: Access logs and the integrated Spark History Server.
  • Troubleshoot: Diagnose failures by checking detailed executor logs.

For more details on monitoring metrics, see the Monitoring Guide.


Comparison: Classic spark-submit vs Ilum Approach

Running Spark directly on Kubernetes requires significant administrative effort. Ilum simplifies this by automating infrastructure management.

Traditional Approach (Native Spark on K8s) vs Ilum

Caractéristique Native Spark on K8sIlum (Managed Spark)
SetupManual Docker image build & complex étincelle-soumission args.Automated. Use existing JARs; Ilum handles images.
Configurer Verbose (Service Accounts, Volumes, Secrets).Simplified. Minimal args; configs are injected automatically.
Stockage Manual Hadoop/S3 configuration per job.Integrated. Automatic credential injection for S3/GCS/Azure.
Surveillance CLI-based (kubectl logs), ephemeral.Centralized UI. Persistent logs, metrics, and history.
Observabilité Basic Spark UI (if exposed).Avancé . Traçabilité des données , detailed resource metrics.

Key Benefits of Ilum:

  1. Automatic Image Selection: Ilum selects a compatible Spark Docker image matching the cluster version.
  2. Advanced Observability: Ilum provides deep lineage observability and advanced monitoring capabilities.
  3. Simplified Configuration: Reduce étincelle-soumission parameters by 3x-4x.
  4. Integrated Storage Access: Credentials for all configured storages are automatically injected.
  5. Instant Monitoring: Logs and metrics (CPU/RAM) appear in the Ilum UI immediately.

For a developer, this means less time fighting with infrastructure and error-prone configurations, and more time delivering business logic.

For advanced customization, refer to the official Spark documentation.