2016-07-08 6 views
1

Ich habe einen Cluster von 3 Knoten, jeder hat 12 Kerne und 30G, 20G und 10G RAM bzw.. Wenn ich meine Anwendung ausführe, setze ich den Executor-Speicher auf 20G, was verhindert, dass der Executor in der 10G-Maschine gestartet wird, da er den Schwellenwert des Slave-Speichers überschreitet, und auch die Ressourcen auf dem 30G-Rechner ausnutzt. Ich habe gesucht, aber keine Möglichkeit gefunden, den Executor-Speicher dynamisch auf die Kapazität des Knotens zu setzen, also wie kann ich den Cluster oder meinen Spark-Job so konfigurieren, dass die Ressourcen des Clusters vollständig genutzt werden?Ausführen von Spark auf heterogenen Cluster im Standalone-Modus

Antwort

1

Die Lösung besteht darin, mehr Executoren mit weniger Speicher zu haben. Sie können den gesamten Speicher verwenden, indem Sie 6- 10G-Executoren haben (1 auf dem 10G-Knoten, 2 auf dem 20G-Knoten, 3 auf dem 30G-Knoten). Oder mit 12-5G Executoren. etc

+0

Aber AFAIK die einzige Möglichkeit, die Anzahl der Executoren im Standalone-Modus zu konfigurieren, ist die 'spark.executor.cores', und dies ist ein fester Wert über alle Knoten, was bedeutet, dass der gleiche Wert dieser Einstellung angewendet wird zu allen Maschinen im Cluster, unabhängig von den Kernen, die sie haben, also wenn ich es auf 3 setze, werde ich mit 12/3 = 4 Executoren auf jeder Maschine enden, immer noch die gleiche Menge an Speicher gemeinsam verwenden. Gibt es eine andere Möglichkeit, die Anzahl der Executoren im Standalone-Modus festzulegen? – elgoog

+1

Ah, ich habe deine Notiz verpasst, dass jeder Knoten 12 Kerne hat. In diesem Fall haben Sie entweder ungenutzten Speicher oder nicht verwendete Kerne. Leider müssen alle Spark-Executoren identisch sein. – David

+0

Ich denke, dass Sie die Anzahl der Kerne als Argument an Spark übergeben können. –

Verwandte Themen