/ / Invio simultaneo di più app spark (allocazione dinamica delle risorse) - apache-spark

Invio di più app scintilla nello stesso tempo (allocazione dinamica delle risorse) - apache-spark

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 № 1

Sembra 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.