Ich habe das SparkPi-Beispiel auf einem Cluster mit 8 Knoten bereitgestellt. Es scheint, dass die mit dem Beispiel verbundenen Aufgaben nicht auf allen Knoten im Cluster bereitgestellt werden, obwohl der Cluster nicht ausgelastet ist (keine anderen Jobs werden ausgeführt).Force YARN zum Bereitstellen von Spark-Tasks für alle Slaves
Hier ist, wie ich das SparkPi Beispiel bin ab:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --executor-cores 1 --num-executors 7 $SPARK_HOME/lib/spark-examples-1.6.1-hadoop2.6.0.jar 100000
Allerdings, wenn ich bei dem Blick Knoten genutzt wird, ist es das, was ich sehe:
ich das Gefühl habe, das ist weil ich die CapacityScheduler
im Ressourcenmanager verwende. Hier ist meine yarn-site.xml
Datei:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master.cluster</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master.cluster:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master.cluster:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master.cluster:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master.cluster:8033</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master.cluster:8033</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/usr/local/hadoop/etc/hadoop, /usr/local/hadoop/share/hadoop/common/*, /usr/local/hadoop/share/hadoop/common/lib/*, /usr/local/hadoop/share/hadoop/hdfs/*, /usr/local/hadoop/share/hadoop/hdfs/lib/*, /usr/local/hadoop/share/hadoop/mapreduce/*, /usr/local/hadoop/share/hadoop/mapreduce/lib/*, /usr/local/hadoop/share/hadoop/yarn/*, /usr/local/hadoop/share/hadoop/yarn/lib/*</value>
</property>
<property>
<description>
Number of seconds after an application finishes before the nodemanager's
DeletionService will delete the application's localized file directory
and log directory.
To diagnose Yarn application problems, set this property's value large
enough (for example, to 600 = 10 minutes) to permit examination of these
directories. After changing the property's value, you must restart the
nodemanager in order for it to have an effect.
The roots of Yarn applications' work directories is configurable with
the yarn.nodemanager.local-dirs property (see below), and the roots
of the Yarn applications' log directories is configurable with the
yarn.nodemanager.log-dirs property (see also below).
</description>
<name>yarn.nodemanager.delete.debug-delay-sec</name>
<value>600</value>
</property>
</configuration>
Wie kann ich GARN optimieren, so dass sie Aufgaben über alle Knoten entfaltet?
Ich benutze den Cluster für neurales Netzwerktraining und es ist kein produktionsbezogenes System. In diesem Fall, je mehr ich den Cluster drücken kann, desto besser. Hilft das mit dem Kontext? Ansonsten stimme völlig zu. – crockpotveggies
Cram so viel wie möglich Aufgaben unter einem Executor.Ich kenne die zugrunde liegende Softwarearchitektur eines neuronalen Netzwerks nicht, aber ich bin mir sicher, dass es Ihnen bei der Performance helfen wird. Wenn es ein traditioneller Funke-Job wäre, würde ich Ihnen sagen, dass Ihre Art und Shuffle Faze sehr schnell sein wird. – YoYo