web-dev-qa-db-fra.com

erreur de soumission "Service 'Driver' ne peut pas lier sur le port" erreur

J'ai utilisé la commande suivante pour exécuter l'exemple d'étincelle Java de wordcount: -

time spark-submit --deploy-mode cluster --master spark://192.168.0.7:6066 --class org.Apache.spark.examples.JavaWordCount /home/pi/Desktop/example/new/target/javaword.jar /books_50.txt 

Lorsque je l'exécute, voici le résultat: -

Running Spark using the REST application submission protocol.
16/07/18 03:55:41 INFO rest.RestSubmissionClient: Submitting a request to launch an application in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submission successfully created as driver-20160718035543-0000. Polling submission state...
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submitting a request for the status of submission driver-20160718035543-0000 in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: State of driver driver-20160718035543-0000 is now RUNNING.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Driver is running on worker worker-20160718041005-192.168.0.12-42405 at 192.168.0.12:42405.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Server responded with CreateSubmissionResponse:
{
  "action" : "CreateSubmissionResponse",
  "message" : "Driver successfully submitted as driver-20160718035543-0000",
  "serverSparkVersion" : "1.6.2",
  "submissionId" : "driver-20160718035543-0000",
  "success" : true
}

J'ai vérifié le journal du travailleur en question (192.168.0.12) et il a déclaré: -

Launch Command: "/usr/lib/jvm/jdk-8-Oracle-arm32-vfp-hflt/jre/bin/Java" "-cp" "/opt/spark/conf/:/opt/spark/lib/spark-Assembly-1.6.2-hadoop2.6.0.jar:/opt/spark/lib/datanucleus-api-jdo-3.2.6.jar:/opt/spark/lib/datanucleus-core-3.2.10.jar:/opt/spark/lib/datanucleus-rdbms-3.2.9.jar" "-Xms1024M" "-Xmx1024M" "-Dspark.driver.supervise=false" "-Dspark.app.name=org.Apache.spark.examples.JavaWordCount" "-Dspark.submit.deployMode=cluster" "-Dspark.jars=file:/home/pi/Desktop/example/new/target/javaword.jar" "-Dspark.master=spark://192.168.0.7:7077" "-Dspark.executor.memory=10M" "org.Apache.spark.deploy.worker.DriverWrapper" "spark://[email protected]:42405" "/opt/spark/work/driver-20160718035543-0000/javaword.jar" "org.Apache.spark.examples.JavaWordCount" "/books_50.txt"
========================================

log4j:WARN No appenders could be found for logger (org.Apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
16/07/18 04:10:58 INFO SecurityManager: Changing view acls to: pi
16/07/18 04:10:58 INFO SecurityManager: Changing modify acls to: pi
16/07/18 04:10:58 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(pi); users with modify permissions: Set(pi)
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
Exception in thread "main" Java.net.BindException: Cannot assign requested address: Service 'Driver' failed after 16 retries! Consider explicitly setting the appropriate port for the service 'Driver' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.
    at Sun.nio.ch.Net.bind0(Native Method)
    at Sun.nio.ch.Net.bind(Net.Java:433)
    at Sun.nio.ch.Net.bind(Net.Java:425)
    at Sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.Java:223)
    at Sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.Java:74)
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.Java:125)
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.Java:485)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.Java:1089)
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.Java:430)
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.Java:415)
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.Java:903)
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.Java:198)
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.Java:348)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.Java:357)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.Java:357)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.Java:111)
    at Java.lang.Thread.run(Thread.Java:745)

Mon fichier spark-env.sh (pour le maître) contient: -

export SPARK_MASTER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

Mon fichier spark-env.sh (for worker) contient: -

export SPARK_WORKER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

S'il vous plaît aider ... !!

6
itsamineral

J'avais le même problème lorsque j'essayais d'exécuter le shell et j'ai pu le faire en définissant la variable d'environnement SPARK_LOCAL_IP. Vous pouvez l'affecter à partir de la ligne de commande lors de l'exécution du shell:

SPARK_LOCAL_IP=127.0.0.1 ./bin/spark-Shell

Pour une solution plus permanente, créez un fichier spark-env.sh dans le répertoire conf de votre racine Spark. Ajoutez la ligne suivante:

SPARK_LOCAL_IP=127.0.0.1

Donnez les autorisations d'exécution au script en utilisant chmod +x ./conf/spark-env.sh, ce qui définira cette variable d'environnement par défaut.

12
Simon Guest

J'utilise Maven/SBT pour gérer les dépendances et le noyau Spark est contenu dans un fichier jar. 

Vous pouvez remplacer SPARK_LOCAL_IP au moment de l'exécution en définissant le paramètre "spark.driver.bindAddress" (ici dans Scala):

val config = new SparkConf()
config.setMaster("local[*]")
config.setAppName("Test App")
config.set("spark.driver.bindAddress", "127.0.0.1")
val sc = new SparkContext(config)
7
David Steinmetz

J'ai aussi eu ce problème.

La raison (pour moi) était que l'adresse IP de mon système local n'était pas accessible à partir de mon système local. Je sais que cette déclaration n'a aucun sens, mais veuillez lire ce qui suit.

Mon nom de système (uname -s) indique que mon système s'appelle "sparkmaster". Dans mon fichier/etc/hosts, j'ai attribué une adresse IP fixe au système sparkmaster sous le nom "192.168.1.70". Il y avait des adresses IP fixes fixes supplémentaires pour sparknode01 et sparknode02 à ... 1,71 et ... 1,72, respectivement.

En raison de certains autres problèmes que j'ai rencontrés, j'ai dû modifier tous mes adaptateurs réseau en DHCP. Cela signifiait qu'ils obtenaient des adresses telles que 192.168.90.123. Les adresses DHCP ne faisaient pas partie du même réseau que la plage ... 1,70 et aucune route n'était configurée.

Lorsque spark commence, il semble vouloir essayer de se connecter à l'hôte nommé dans uname (c'est-à-dire sparkmaster dans mon cas). Il s’agissait de l’IP 192.168.1.70 - mais il n’y avait aucun moyen de s'y connecter car cette adresse était dans un réseau inaccessible.

Ma solution a été de remplacer l’un de mes adaptateurs Ethernet par une adresse statique fixe (c’est-à-dire 192.168.1.70) et par le problème - le problème était résolu.

Le problème semble donc être que lorsque spark démarre en "mode local", il tente de se connecter à un système nommé d'après le nom de votre système (plutôt que l'hôte local). Je suppose que cela a du sens si vous souhaitez configurer un cluster (comme je l’ai fait), mais le message ci-dessus risque de prêter à confusion. Le nom de l’hôte de votre système figurant éventuellement sur l’entrée 127.0.0.1 dans/etc/hosts peut également résoudre ce problème, mais je n’ai pas essayé. il.

2
GMc

Vous devez entrer le nom d’hôte dans votre fichier /etc/hosts. Quelque chose comme:

127.0.0.1   localhost "hostname"
1
Manav Garg

Ceci est peut-être une copie de Spark 1.2.1 en mode cluster autonome spark-submit ne fonctionne pas

J'ai essayé les mêmes étapes, mais capable d'exécuter le travail. Merci de bien vouloir afficher les valeurs par défaut spark-env.sh et spark-default par défaut.

0
Ravi R