Run Apache Spark Jobs via Ilum UI
Running an Apache Spark job on Kubernetes with Ilum operates just like one submitted via scintilla-invio, ma con ulteriori miglioramenti per facilitare l'uso, la configurazione e l'integrazione con strumenti esterni.
You can use the jar file with spark examples from one of these links:
- Spark 4 (default)
- Spark 3
Spark 4 / Scala 2.13: spark-examples_2.13-4.1.1.jar
Spark 3 / Scala 2.12: spark-examples_2.12-3.5.8.jar
Interactive Spark Job Submission Guide
Ecco una guida passo passo per configurare un semplice lavoro Spark utilizzando Ilum. Questa guida illustra la configurazione, l'esecuzione e il monitoraggio di un processo di base denominato MiniReadWriteTest all'interno della piattaforma Ilum.
Step-by-Step Tutorial: Running Your First Spark Job
-
Vai alla sezione Lavori: Quest'area consente di gestire tutte le attività di elaborazione dei dati.
-
Crea un nuovo lavoro:
- Click on the ‘New Job +’ button to start the setup process.
-
Compila i dettagli del lavoro:
-
Scheda Generale:
- Nome: Entrare
MiniReadWriteTest - Job Type: Select
Spark Job - Classe: Entrare
org.apache.spark.examples.MiniReadWriteTest - Language: Select
Scala
- Nome: Entrare
-
Configuration Tab:
- Arguments: Entrare
/opt/spark/examples/src/main/resources/kv1.txt
This path specifies a local file to be distributed to executors, a test file available in every Spark environment.
- Arguments: Entrare
-
Scheda Risorse:
- Jars: Upload the JAR file:
-
- Spark 4 (default)
- Spark 3
Spark 4 / Scala 2.13: spark-examples_2.13-4.1.1.jar
Spark 3 / Scala 2.12: spark-examples_2.12-3.5.8.jar
- Memory Tab:
- Leave all settings at their default values for this example.
-
Invio e monitoraggio del processo:
- Inviare il processo.
- Passare alla sezione dei registri per esaminare i registri di ciascun esecutore.
- You should see log output showing the job execution, including:
- Spark initialization messages (
SparkContext: Running Spark version 3.5.8) - File reading and word count operations (
Performing local word count from /opt/spark/examples/src/main/resources/kv1.txt) - Task execution across executors (
Starting task 0.0 in stage 0.0) - Final success message (
Success! Local Word Count 500 and D Word Count 500 agree.)
- Spark initialization messages (
-
Esaminare l'esecuzione del processo:
- Una volta avviato il processo, controllare lo stato nella sezione di panoramica del processo.
- Monitorare l'utilizzo della memoria e altre metriche delle prestazioni nella sezione degli esecutori.
- Osserva l'avanzamento del tuo lavoro in ogni fase della sequenza temporale.
-
Completamento e revisione:
- Al termine, i dettagli e i risultati del processo vengono registrati nel server della cronologia Spark.
- Visita la sezione del server della cronologia per visualizzare il processo completato e rivedere le fasi di esecuzione dettagliate.
-
Passaggio finale:
- Felicitazioni! Il processo MiniReadWriteTest è stato configurato ed eseguito correttamente in Ilum. Per ulteriori informazioni o supporto, contattare [email protected].
To submit jobs programmatically instead of using the UI, see the Run Spark Job via REST API guide.
Congratulations! You have successfully set up and run your MiniReadWriteTest job in Ilum. For further information or support, contact [email protected].
Seguendo questi passaggi, sarai in grado di configurare, eseguire e monitorare in modo efficiente un lavoro Spark di base all'interno della piattaforma Ilum, acquisendo familiarità con le sue funzionalità e preparandoti per attività di elaborazione dati più complesse.
Ecco una spiegazione consolidata di come Ilum facilita l'invio di lavori Spark, unendo le funzionalità tradizionali di scintilla-invio con le funzionalità di gestione avanzate di Ilum:
Caricamento di un processo di esempio
Ilum fornisce un processo di esempio per aiutare i nuovi utenti a iniziare rapidamente.
Esempio di caricamento dei lavori è abilitato per impostazione predefinita. Tuttavia, è possibile disabilitarlo utilizzando --set ilum-core.examples.job=false.
Why Ilum is a Better Alternative to spark-submit
-
Compatibilità universale: Ilum consente l'invio di qualsiasi processo Spark, in modo simile all'utilizzo
scintilla-invio. Supporta vari linguaggi di programmazione utilizzati con Spark, tra cui Scala, Python e R, soddisfacendo tutte le operazioni tipiche di Spark come l'elaborazione batch, i processi di streaming o le query interattive. -
Esecuzione semplificata dei comandi: Mentre
scintilla-invioSpesso si tratta di input complessi della riga di comando per le dipendenze della libreria, i parametri di lavoro e le configurazioni del cluster, Ilum li astrae in un'interfaccia utente intuitiva. Questo approccio riduce al minimo i rischi di errore e semplifica le operazioni, in particolare per coloro che hanno meno familiarità con le complessità della riga di comando. -
Distribuzione diretta del codice: Gli utenti possono caricare i propri file JAR, script Python o notebook direttamente in Ilum, in modo simile a specificare le risorse in un
scintilla-inviocomando. Ilum migliora questo aspetto consentendo di configurare queste risorse per esecuzioni pianificate o attivate da eventi, fornendo una maggiore flessibilità operativa. -
Gestione automatizzata dell'ambiente: A differenza della configurazione manuale richiesta con
scintilla-invio, Ilum garantisce che tutte le dipendenze e le configurazioni siano gestite automaticamente. In questo modo si garantisce che l'ambiente di esecuzione sia preparato in modo coerente per l'esecuzione del processo, sia in cluster locali, cloud o configurazioni ibride. -
Monitoraggio e strumenti integrati: Ilum è dotato di integrazione integrata per gli strumenti di monitoraggio e registrazione, che nel
scintilla-invioIl flusso di lavoro richiederebbe una configurazione aggiuntiva. Questa integrazione fornisce agli utenti soluzioni pronte all'uso per monitorare le prestazioni dei lavori, gestire i log e connettersi con altri servizi dati senza problemi.
Esperienza di invio dei lavori migliorata
Ilum non solo corrisponde alle capacità di scintilla-invio ma li estende riducendo il sovraccarico associato alla configurazione del processo e all'impostazione dell'ambiente. Offre una piattaforma onnicomprensiva che semplifica l'implementazione, la gestione e la scalabilità dei processi Spark, rendendola una soluzione ideale per le organizzazioni che mirano a migliorare i flussi di lavoro di elaborazione dei dati senza compromettere la potenza e la flessibilità di Apache Spark.
Job Configuration Reference
- Generale
- Configurazione
- Risorse
- Memoria
| Parameter | Descrizione |
|---|---|
Nome | A unique identifier for the job. This name is used in the dashboard and logs to track the job's execution and history. |
Job Type | The category of the job to be created. Select Spark Job for standard batch processing or Spark Connect Job for client-server Spark applications. |
Grappolo | The target cluster where the job will be executed. Choose a cluster that has the necessary resources and data access for your job. |
Classe | The fully qualified class name of the application (e.g., org.apache.spark.examples.SparkPi) or the filename for Python scripts. This tells Spark which code to execute as the entry point. |
Lingua | The programming language used for the job. Select Scala o Pitone to match your application code. |
Max Retries | The maximum number of times Ilum will attempt to restart the job if it fails. Setting this helps ensure job completion in case of transient errors. |
| Parameter | Descrizione |
|---|---|
Parametri | Key-value pairs for configuring Spark properties (e.g., spark.executor.instances). These settings allow you to fine-tune the Spark environment for this specific job. |
Arguments | Command-line arguments passed directly to the job's main method. Use these to provide dynamic inputs or configuration flags to your application logic. |
Tag | Custom labels used to categorize and filter jobs in the UI. Tags are helpful for organizing jobs by project, team, or purpose (e.g., production, etl). |
| Parameter | Descrizione |
|---|---|
Vasi | Additional JAR files to be included in the classpath of the driver and executors. These are necessary if your job relies on external libraries not present in the base image. |
Files | Auxiliary files to be placed in the working directory of each executor. These are often used for configuration files or small datasets required by the job. |
PyFiles | Python dependencies such as .zip, .eggo .Py files. These are added to the PYTHONPATH to ensure Python jobs have access to required modules. |
Fabbisogno | A list of additional Python packages to install on the nodes before execution. This ensures the runtime environment matches your development environment. |
Spark Packages | Maven coordinates for Spark JAR packages to be downloaded and included. This is a convenient way to include libraries from Maven Central without manually uploading JARs. |
| Parameter | Descrizione |
|---|---|
Executors | The number of executor instances to launch for this job. Increasing this number allows for greater parallelism and faster processing of large datasets. |
Core del driver | The number of CPU cores allocated to the driver process. More cores can help the driver manage task scheduling and result collection more efficiently. |
Core dell'esecutore | The number of CPU cores allocated to each executor. This determines the number of concurrent tasks each executor can handle. |
Memoria del driver | The amount of RAM allocated to the driver (e.g., 2g). Sufficient memory is required for the driver to maintain application state and handle large results. |
Memoria dell'esecutore | The amount of RAM allocated to each executor (e.g., 4g). This directly affects how much data can be cached and processed in memory on each node. |
Allocazione dinamica | Enables automatic scaling of the number of executors based on the current workload. This helps optimize resource usage by requesting more executors when needed and releasing them when idle. |
Esecutori iniziali | The initial number of executors to start with when dynamic allocation is enabled. This provides a baseline capacity when the job starts. |
Minimal number of executors | The lower bound for the number of executors when dynamic allocation is enabled. The job will never scale below this number. |
Maximal number of executors | The upper bound for the number of executors when dynamic allocation is enabled. This prevents the job from consuming too many cluster resources. |