Erreur Mac Spark-Shell lors de l'initialisation de SparkContext

87

J'ai essayé de démarrer spark 1.6.0 (spark-1.6.0-bin-hadoop2.4) sur Mac OS Yosemite 10.10.5 en utilisant

"./bin/spark-shell". 

Il a l'erreur ci-dessous. J'ai également essayé d'installer différentes versions de Spark mais toutes ont la même erreur. C'est la deuxième fois que j'exécute Spark. Ma précédente exécution fonctionne bien.

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 repl log4j profile: org/apache/spark/log4j-defaults-repl.properties
To adjust logging level use sc.setLogLevel("INFO")
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.0
      /_/

Using Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_79)
Type in expressions to have them evaluated.
Type :help for more information.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
16/01/04 13:49:40 ERROR SparkContext: Error initializing SparkContext.
java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries!
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    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)
java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries!
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    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)

java.lang.NullPointerException
    at org.apache.spark.sql.SQLContext$.createListenerAndUI(SQLContext.scala:1367)
    at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:101)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.apache.spark.repl.SparkILoop.createSQLContext(SparkILoop.scala:1028)
    at $iwC$$iwC.<init>(<console>:15)
    at $iwC.<init>(<console>:24)
    at <init>(<console>:26)
    at .<init>(<console>:30)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065)
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1346)
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871)
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819)
    at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:857)
    at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902)
    at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:132)
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkIMain.beQuietDuring(SparkIMain.scala:324)
    at org.apache.spark.repl.SparkILoopInit$class.initializeSpark(SparkILoopInit.scala:124)
    at org.apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1$$anonfun$apply$mcZ$sp$5.apply$mcV$sp(SparkILoop.scala:974)
    at org.apache.spark.repl.SparkILoopInit$class.runThunks(SparkILoopInit.scala:159)
    at org.apache.spark.repl.SparkILoop.runThunks(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoopInit$class.postInitialization(SparkILoopInit.scala:108)
    at org.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply$mcZ$sp(SparkILoop.scala:991)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1.apply(SparkILoop.scala:945)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
    at org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(SparkILoop.scala:945)
    at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059)
    at org.apache.spark.repl.Main$.main(Main.scala:31)
    at org.apache.spark.repl.Main.main(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

<console>:16: error: not found: value sqlContext
         import sqlContext.implicits._
                ^
<console>:16: error: not found: value sqlContext
         import sqlContext.sql

Puis j'ajoute

export SPARK_LOCAL_IP="127.0.0.1"

à spark-env.sh, l'erreur change en:

 ERROR : No route to host
    java.net.ConnectException: No route to host
        at java.net.Inet6AddressImpl.isReachable0(Native Method)
        at java.net.Inet6AddressImpl.isReachable(Inet6AddressImpl.java:77)
        at java.net.InetAddress.isReachable(InetAddress.java:475)
...
<console>:10: error: not found: value sqlContext
       import sqlContext.implicits._
              ^
<console>:10: error: not found: value sqlContext
       import sqlContext.sql
Jia
la source
Sur ma machine de travail 10.10.5 - J'obtiens également une erreur (différente) si j'exporte cette variable, donc je ne pense pas que ce soit une solution de toute façon. Sans cela, cela fonctionne bien. Avez-vous essayé d'exécuter au niveau du journal DEBUG pour obtenir plus d'informations?
jbrown
1
Cela peut être dû au fait que Spark ne fonctionne pas bien avec ipv6 pour le moment. Pourriez-vous essayerbin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing
@zsxwing j'ai essayé et il y a une erreur similaire16/01/05 10:29:39 ERROR : No route to host 16/01/05 10:29:39 ERROR : No route to host java.net.ConnectException: No route to host at java.net.Inet4AddressImpl.isReachable0(Native Method) at java.net.Inet4AddressImpl.isReachable(Inet4AddressImpl.java:70) at java.net.InetAddress.isReachable(InetAddress.java:475) at java.net.InetAddress.isReachable(InetAddress.java:434) at tachyon.util.NetworkUtils.getLocalIpAddress(NetworkUtils.java:122) at tachyon.util.NetworkUtils.getLocalHostName(NetworkUtils.java:78)...
Jia
Peut-être un problème de configuration réseau dans votre machine. Pouvez-vous essayer ping 127.0.0.1?
zsxwing
@zsxwing J'ai essayé ping 127.0.0.1, et cela fonctionne bien.
Jia

Réponses:

139

Les étapes suivantes peuvent vous aider:

  1. Obtenez votre nom d'hôte en utilisant la commande "hostname".

  2. Faites une entrée dans le fichier / etc / hosts pour votre nom d'hôte s'il n'est pas présent comme suit:

    127.0.0.1      your_hostname
    

J'espère que cela t'aides!!

Gaurav Sharma
la source
Merci pour le conseil. J'ai eu un problème similaire sur un serveur ubuntu jupyter lorsque j'essayais de créer un sparkContext à partir d'un client jupyter. L'ajout du mappage dans le fichier hosts a corrigé le problème :-)
Julien Bachmann
2
Vous devriez éditer "sudo nano / private / etc / hosts" dans mac
Saeed
1
run ping $(hostname), cela doit résoudre à 127.0.0.1
Thomas Decaux
Corrigé pour moi. Merci!
Andrés Mejía
1
L'exécution de cette commande m'a également aidé -> sudo hostname -s 127.0.0.1
MRTJ
119

J'obtiens toujours cela lorsque je passe d'un réseau à l'autre. Cela résout le problème:

$ sudo hostname -s 127.0.0.1

Ardavan
la source
4
Cela a fonctionné pour moi aussi. Dans mon cas, cela se produit juste après la connexion à mon VPN d'entreprise. Je dois l'exécuter plusieurs fois par semaine pendant que je développe mes applications Spark.
AdrianVeidt
vpn entreprise - l'ennemi caché
StephenBoesch
1
sur GNU / Linux:$ sudo hostname -b 127.0.0.1
orluke
1
Impressionnant. J'ai aussi fait face à cela en raison du VPN d'entreprise, et cela l'a corrigé.
Dileep Kumar Patchigolla
1
Merci, cela a fonctionné. Pourriez-vous expliquer, s'il vous plaît, pourquoi cela fonctionne?
vitalii
34

Je l'ai construit à partir de la branche principale actuelle avec la version 2.0.0-SNAPSHOT. Après avoir ajouté export SPARK_LOCAL_IP="127.0.0.1"à load-spark-env.shcela a fonctionné pour moi. J'utilise Macos 10.10.5. Cela pourrait donc être un problème de version?

Meltac
la source
3
J'ai pu utiliser $ SPARK_LOCAL_IP="127.0.0.1" gradle my-gradle-task-using-local-spark. Le problème est survenu lors de l'utilisation de vpn. J'utilise Macos 10.11.1.
Sergey Orshanskiy
31

Définissez simplement le spark.driver.hostpour être votre hôte local si vous utilisez l'IDE

SparkConf conf = new  SparkConf().setMaster("local[2]").setAppName("AnyName").set("spark.driver.host", "localhost");
JavaSparkContext sc = new JavaSparkContext(conf);
Mohamed Ahmed
la source
que signifie local [2]? Je viens de définir le maître sur `` local '' avec la configuration de l'accessoire spark.driver.host, et cela a résolu mon problème.
medloh
Bonne idée à ajouter spark.driver.hostdirectement dans le code plutôt que de jouer avec le$SPARK_HOME/conf/spark-defaults.conf
StephenBoesch
C'est la solution exacte que je recherche. Ça a marché. Pourquoi cela ne devrait-il être que si nous utilisons IDE? cela aura-t-il un impact sur les tests non IDE?
Buddha
8

Il y a deux erreurs, je pense.

  1. Votre adresse IP locale Spark n'était pas correcte et doit être modifiée en 127.0.0.1.
  2. Vous n'avez pas défini correctement sqlContext.

Pour 1. J'ai essayé:

  • 1) exporté SPARK_LOCAL_IP = "127.0.0.1" dans ~ / .bash_profile
  • 2) ajout de l'export SPARK_LOCAL_IP = "127.0.0.1" dans load-spark-env.sh sous $ SPARK_HOME

Mais ni l'un ni l'autre n'a fonctionné. Ensuite, j'ai essayé ce qui suit et cela a fonctionné:

val conf = new SparkConf().
    setAppName("SparkExample").
    setMaster("local[*]").
    set("spark.driver.bindAddress","127.0.0.1")
val sc = new SparkContext(conf)

Pour 2. vous pouvez essayer:

sqlContext = SparkSession.builder.config("spark.master","local[*]").getOrCreate()

puis import sqlContext.implicits._

Le générateur dans SparkSession utilisera automatiquement le SparkContext s'il existe, sinon il en créera un. Vous pouvez en créer deux explicitement si nécessaire.

Rong Du
la source
7

Si vous ne souhaitez pas modifier le nom d'hôte de votre Mac, vous pouvez effectuer les opérations suivantes:

  1. Trouvez le fichier modèle spark-env.sh.templatesur votre machine (il est probablement dans /usr/local/Cellar/apache-spark/2.1.0/libexec/conf/).
  2. cp spark-env.sh.template spark-env.sh
  3. Ajouter export SPARK_LOCAL_IP=127.0.0.1 sous le commentaire pour l'adresse IP locale.

Commencez spark-shellet profitez-en.

Dvin
la source
4

Si vous utilisez Scala pour exécuter le code dans un IDE, et si vous rencontrez le même problème et que vous n'utilisez pas SparkConf () comme indiqué ci-dessus et que vous utilisez SparkSession (), vous pouvez lier l'adresse localhost comme suit, car l'ensemble ne fonctionne que dans SparkConf (). Vous devez utiliser .config () pour définir la configuration Spark comme indiqué ci-dessous:

    val spark = SparkSession
       .builder()
       .appName("CSE512-Phase1")
       .master("local[*]").config("spark.driver.bindAddress", "localhost")
       .getOrCreate()
Sidharth Panicker
la source
3

export SPARK_LOCAL_IP = 127.0.0.1 (pour mac .bash_profile)

alturium
la source
2

Parfois, le pare-feu empêche la création et la liaison d'un socket. assurez-vous que votre pare-feu n'est pas activé et vous devez également vérifier l'ip de votre machine dans / etc / hosts et assurez-vous que tout va bien, puis réessayez:

sudo ufw disable
Mahdi Esmailoghli
la source
1
Oups. sur linux Merci pour la tête
Mahdi Esmailoghli
2

Cela se produit lorsque vous basculez entre différents réseaux (VPN - PROD, CI en fonction des réseaux de votre entreprise pour accéder à différents environnements).

J'ai eu le même problème, chaque fois que je change de VPN.

mettez à jour sudo / etc / hosts avec la valeur du nom d'hôte sur votre Mac.

Yoga Gowda
la source
2
sparkContext = new JavaSparkContext("local[4]", "Appname")

export SPARK_LOCAL_IP=127.0.0.1

juste faire ci-dessus a fonctionné pour moi.

geekgirlspu
la source
0

Sous Mac, vérifiez l'IP dans les préférences système -> Réseau -> cliquez sur le Wifi auquel vous êtes connecté (l'icône verte doit apparaître) -> vérifiez l'adresse IP juste au-dessus de votre nom de réseau.

Faites l'entrée suivante dans ../conf/spark-env.sh:

SPARK_MASTER_HOST=<<your-ip>>
SPARK_LOCAL_IP=<<your-ip>>

et que d'essayer Spark-Shell. Faire les changements ci-dessus a fonctionné pour moi.

Jyoti Valeja
la source