Je peux me connecter au conducteur très bien en ajoutant ce qui suit:Comment se connecter avec JMX à distance au travailleur Spark sur Dataproc
spark.driver.extraJavaOptions=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9178 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false
Mais faire ...
spark.executor.extraJavaOptions=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9178 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false
... seulement donner un tas d'erreurs sur le pilote ...
Container id: container_1501548048292_0024_01_000003
Exit code: 1
Stack trace: ExitCodeException exitCode=1:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:972)
at org.apache.hadoop.util.Shell.run(Shell.java:869)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1170)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:236)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:305)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:84)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Container exited with a non-zero exit code 1
... et finalement bloque le travail.
Il n'y a pas d'erreur sur les travailleurs, il sort simplement avec:
[org.apache.spark.util.ShutdownHookManager] - Shutdown hook called
Spark v2.2.0
, et le cluster est un simple 1m-2W configuration et mes travaux sont exécutés sans problèmes sans les paramètres de l'exécuteur testamentaire.
Avez-vous vérifié que les ports sont libres? Si ces exécuteurs sont instanciés sur la même machine, les collisions de ports sont problématiques. –
Conflits des ports sur le travailleur semble être la source de l'accident, en effet. Cependant, comment puis-je contrôler cela autrement? Le mettre à '0' me donnera un aléatoire. Est-il possible de passer des arguments différents à différents exécuteurs? – habitats
Je vous recommande de régler la mémoire de l'exécuteur assez grande, une seule pouvant tenir sur chaque machine. Vous devrez peut-être également ajuster les paramètres de votre gestionnaire de ressources. –