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 \
--maître k8s://http://<ilum-core-address>:<ilum-core-port> \
--deploy-mode cluster \
--classe org.apache.spark.examples.SparkPi \
--conf spark.driver.memory=4g \
--conf spark.ilum.cluster=faire défaut \
--conf spark.kubernetes.container.image=ilum/spark:4.1.2 \
--conf spark.kubernetes.submission.waitAppCompletion=vrai \
s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.2.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.2/spark-4.1.2-bin-hadoop3.tgz
tar -xzf spark-4.1.2-bin-hadoop3.tgz
cd spark-4.1.2-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.2.jar

Upload it to MinIO (bucket limes-ilum, path ilum/default/): s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.2.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 \
--maître spark://localhost:9888 \
--deploy-mode cluster \
--classe org.apache.spark.examples.SparkPi \
--conf spark.master.rest.enabled=vrai \
--conf spark.ilum.cluster=faire défaut \
--conf spark.app.name=my-spark-job \
s3a://ilum-files/ilum/default/spark-examples_2.13-4.1.2.jar

Parameters:

ParameterDescription
--maîtreIlum Core address via REST (e.g. spark://localhost:9888).
--conf spark.master.rest.enabled=vraiEnables 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.2",
« 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éristiqueNative Spark on K8sIlum (Managed Spark)
SetupManual Docker image build & complex étincelle-soumission args.Automated. Use existing JARs; Ilum handles images.
ConfigurerVerbose (Service Accounts, Volumes, Secrets).Simplified. Minimal args; configs are injected automatically.
StockageManual Hadoop/S3 configuration per job.Integrated. Automatic credential injection for S3/GCS/Azure.
SurveillanceCLI-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.