Come posso eseguire 2 invii spark contemporaneamente? Ho una semplice scintilla (nessuna configurazione aggiuntiva sul mio pc) con 4 core assegnati.
Se provo a inviare un'app 2 volte, la secondauno ottiene "WARN TaskSchedulerImpl: il lavoro iniziale non ha accettato alcuna risorsa; controllare l'interfaccia utente del cluster per assicurarsi che i lavoratori siano registrati e dispongano di risorse sufficienti"
Codice: a partire dal futuro import print_function
import sys
from operator import add
from pyspark.sql import SparkSession
if __name__ == "__main__":
spark = SparkSession
.builder
.appName("test")
.getOrCreate()
rdd = spark.sparkContext.parallelize(xrange(1000000000), 100)
print(rdd.sample(False, 0.1, 81).count())
spark.stop()
Come provo ad avviarli: ./spark-submit --master spark: // mio indirizzo: 7077 --name "app1" --conf spark.shuffle.service.enabled = true --conf park.shuffle.service.enabled = true /path_to_py_file.py
So di poter preimpostare il numero di core da utilizzare, ma il mio scopo è quello di allocare dinamicamente le risorse. Se è in esecuzione solo 1 attività => consuma il 100%, se sono 4 attività => 25% ciascuna.
Ho provato più opzioni ma senza fortuna.
Ogni suggerimento sarà apprezzato.
risposte:
0 per risposta № 1Sembra che tu stia eseguendo localmente, quindi non esiste un gestore di risorse come Yarn per distribuire le risorse. la tua app probabilmente funziona con
val conf = new SparkConf()
.setMaster(local[*])
Il che dice a Spark di usare tutti i core .. non puoi usare qui un valore dinamico che dipenderà dagli invii futuri.
Quello che stai chiedendo è un gestore delle risorse che distribuirà le risorse in modo uniforme tra le applicazioni ... Non so nulla di tutto ciò che offre esattamente.
una configurazione come l'allocazione dinamica consentirà a un gestore risorse di fornire le risorse dell'app in base alle sue esigenze, ma questo non sarà necessariamente del 50% per 2 app (probabilmente non vincerà).
Per quanto ne sappia, non hai altra scelta che "dire"Spark quanti esecutori usare e quanti core per ciascun esecutore (usando argomenti spark-submit o configurazioni spark-default) in modo che le risorse vengano distribuite uniformemente.