Ich arbeite auf Apache Spark auf Amazon Elastic Map Reduce (EMR). Momentan laufe ich auf emr-4.1.0, welches Amazon Hadoop 2.6.0 und Spark 1.5.0 beinhaltet.Warum weist Yarn on EMR nicht alle Knoten Spark-Jobs zu?
Wenn ich den Job starte, hat YARN alle Worker-Knoten korrekt dem Funke-Job zugewiesen (natürlich mit einem für den Treiber).
Ich habe die magische Eigenschaft "maximizeResourceAllocation" auf "true" gesetzt und die Spark-Eigenschaft "spark.dynamicAllocation.enabled" ebenfalls auf "true" gesetzt.
Wenn ich jedoch die Größe des emr-Clusters durch Hinzufügen von Knoten zum CORE-Pool von Arbeitscomputern ändere, fügt YARN nur einige der neuen Knoten zum Spark-Job hinzu.
Zum Beispiel hatte ich heute Morgen einen Job, der 26 Knoten (m3.2xlarge, wenn das wichtig ist) - 1 für den Treiber, 25 Executoren. Ich wollte den Job beschleunigen, also habe ich versucht, weitere 8 Knoten hinzuzufügen. YARN hat alle neuen Knoten aufgenommen, aber nur eine davon dem Spark-Job zugewiesen. Spark hat den neuen Knoten erfolgreich aufgenommen und benutzt ihn als Executor, aber meine Frage ist, warum YARN die anderen 7 Knoten einfach im Leerlauf lässt.
Es ist ärgerlich für offensichtliche Gründe - ich muss für die Ressourcen bezahlen, auch wenn sie nicht verwendet werden, und mein Job hat sich überhaupt nicht beschleunigt!
Jeder weiß, wie YARN entscheidet, wenn Knoten zu laufenden Funkenjobs hinzugefügt werden? Welche Variablen spielen eine Rolle? Erinnerung? V-Kerne? Etwas?
Vielen Dank im Voraus!
Ja, willkommen in der nervenden Welt von YARN! Haben Sie in der capacity-scheduler.xml die Datei gam.scheduler.capacity.resource-calculator = org.apache.hadoop.yarn.util.resource.DominantResourceCalculator eingestellt? –
Ich habe nicht! Ich kann es versuchen (wahrscheinlich erst nächste Woche), aber ich fange an zu vermuten, dass Spark selbst nicht mehr Knoten anfordern wird, als zu dem Zeitpunkt, als es gestartet wird - aber ich könnte falsch liegen! – retnuH
Viel Glück :) Ich persönlich denke, dass YARN - nicht Spark - ist das Problem. Ich hatte nie Probleme mit Ressourcen, die nicht genutzt wurden, wenn ich Spark im Standalone-Modus (vor EMR 4.x) laufen ließ. Seit dem Upgrade auf EMR 4.x (und damit YARN) hatte ich jedoch eine Million Probleme - einschließlich der Unterauslastung von Kernen ... –