Stiamo provando a far funzionare il nostro cluster di scintilla su filato. Stiamo riscontrando alcuni problemi di prestazioni, in particolare rispetto alla modalità standalone.Problemi di prestazione per la scintilla su YARN
Abbiamo un cluster di 5 nodi con ciascuno con 16 GB di RAM e 8 core ciascuno. Abbiamo configurato la dimensione minima del contenitore di 3 GB e quella massima di 14 GB in yarn-site.xml. Quando si invia il lavoro a filato-cluster, forniamo il numero di executor = 10, memoria dell'esecutore = 14 GB. Secondo la mia comprensione il nostro lavoro dovrebbe essere assegnato 4 contenitori di 14 GB. Ma l'interfaccia utente della scintilla mostra solo 3 contenitori da 7,2 GB ciascuno.
Non siamo in grado di garantire il numero del contenitore e le risorse ad esso assegnate. Ciò causa prestazioni dannose rispetto alla modalità standalone.
È possibile rilasciare qualsiasi puntatore su come ottimizzare le prestazioni del filo?
Questo è il comando che uso per la presentazione del lavoro:
$SPARK_HOME/bin/spark-submit --class "MyApp" --master yarn-cluster --num-executors 10 --executor-memory 14g target/scala-2.10/my-application_2.10-1.0.jar
A seguito della discussione ho cambiato il mio file filo-site.xml e anche il comando scintilla presentare.
Ecco il nuovo codice filo-site.xml:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hm41</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>14336</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2560</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>13312</value>
</property>
E il nuovo comando scintilla presentare è
$SPARK_HOME/bin/spark-submit --class "MyApp" --master yarn-cluster --num-executors 4 --executor-memory 10g --executor-cores 6 target/scala-2.10/my-application_2.10-1.0.jar
Con questo sono in grado di ottenere 6 core su ogni macchina, ma l'utilizzo della memoria di ciascun nodo è ancora intorno a 5G. Ho allegato la schermata di SPARKUI e htop.
Il mio {yarn.nodemanager.resource.memory-mb} è 15 GB, in quanto lasciamo 1 GB per i processi del sistema operativo e consentiamo a nodemangaer di distribuire gli altri 15 GB. Ho modificato la mia chiamata di invio a questo. --master yarn-cluster --num-executors 5 --executor-memory 13g –
Sospetto che insieme a NM stesso si esegua anche DataNode, quindi 15 GB a mio avviso è troppo, non andrei oltre 14GB – 0x0FFF
Can Ho appurato durante/dopo la creazione del contenitore qual è la quantità di RAM assegnata a un container? Ho provato a passare attraverso i registri del gestore delle risorse, ma non sono riuscito a individuare le voci esatte per questo. Il nostro cluster non è una produzione o uno occupato, quindi va bene se possiamo garantire che la scintilla abbia tutta la RAM possibile. @sietse Au Vuol dire che il contenitore di scintilla ottiene la memoria richiesta ma segnala solo quella frazione? perché nella nostra implementazione standalone viene riportata l'intera memoria. –