Mac Spark-Shell Fehler beim Initialisieren von SparkContext

84

Ich habe versucht, spark 1.6.0 (spark-1.6.0-bin-hadoop2.4) unter Mac OS Yosemite 10.10.5 mit zu starten

"./bin/spark-shell". 

Es hat den Fehler unten. Ich habe auch versucht, verschiedene Versionen von Spark zu installieren, aber alle haben den gleichen Fehler. Dies ist das zweite Mal, dass ich Spark ausführe. Mein vorheriger Lauf funktioniert gut.

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

Dann füge ich hinzu

export SPARK_LOCAL_IP="127.0.0.1"

zu spark-env.sh ändert sich der Fehler zu:

 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
quelle
Auf meinem Arbeitscomputer 10.10.5 - Ich erhalte auch einen (anderen) Fehler, wenn ich diese Variable exportiere, daher denke ich, dass es sowieso kein Fix ist. Ohne läuft es gut. Haben Sie versucht, auf der DEBUG-Protokollebene zu arbeiten, um weitere Informationen zu erhalten?
Jbrown
1
Dies kann daran liegen, dass Spark derzeit nicht gut mit IPv6 funktioniert. Könnten Sie versuchenbin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing
@zsxwing Ich habe es versucht und es hat einen ähnlichen Fehler16/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
Möglicherweise liegt ein Problem mit der Netzwerkkonfiguration in Ihrem Computer vor. Könnten Sie es versuchen ping 127.0.0.1?
Zsxwing
@zsxwing Ich habe versucht, 127.0.0.1 zu pingen, und es funktioniert in Ordnung.
Jia

Antworten:

137

Folgende Schritte könnten helfen:

  1. Holen Sie sich Ihren Hostnamen mit dem Befehl "Hostname".

  2. Machen Sie einen Eintrag in der Datei / etc / hosts für Ihren Hostnamen, falls dieser nicht wie folgt vorhanden ist:

    127.0.0.1      your_hostname
    

Hoffe das hilft!!

Gaurav Sharma
quelle
Danke für den Hinweis. Ich hatte ein ähnliches Problem auf einem Ubuntu-Jupyter-Server, als ich versuchte, einen sparkContext von einem Jupyter-Client zu erstellen. Das Hinzufügen der Zuordnung in der Hosts-Datei hat das Problem behoben :-)
Julien Bachmann
2
Sie sollten "sudo nano / private / etc / hosts" in mac
Saeed
1
laufen ping $(hostname), dies muss auf 127.0.0.1
Thomas Decaux
Es wurde für mich behoben. Vielen Dank!
Andrés Mejía
Das Ausführen dieses Befehls hat mir auch geholfen -> sudo hostname -s 127.0.0.1
MRTJ
114

Das bekomme ich immer, wenn ich zwischen Netzwerken wechsle. Dies löst es:

$ sudo hostname -s 127.0.0.1

Ardavan
quelle
4
Das hat auch bei mir funktioniert. In meinem Fall geschieht dies direkt nach der Anmeldung bei meinem Unternehmens-VPN. Ich muss dies ein paar Mal pro Woche ausführen, während ich meine Spark-Apps entwickle.
AdrianVeidt
Corporate VPN - der versteckte Feind
Javadba
1
auf GNU / Linux:$ sudo hostname -b 127.0.0.1
Orluke
Genial. Auch ich habe mich dem aufgrund des Unternehmens-VPN gestellt, und das hat es behoben.
Dileep Kumar Patchigolla
1
Danke, das hat funktioniert. Könnten Sie bitte erklären, warum das funktioniert?
vitalii
34

Ich habe es aus dem aktuellen Master-Zweig mit Version erstellt 2.0.0-SNAPSHOT. Nach dem Hinzufügen export SPARK_LOCAL_IP="127.0.0.1"zu load-spark-env.shihm für mich gearbeitet. Ich benutze Macos 10.10.5. Es könnte also ein Versionsproblem sein?

Meltac
quelle
3
Ich konnte benutzen $ SPARK_LOCAL_IP="127.0.0.1" gradle my-gradle-task-using-local-spark. Das Problem trat bei der Verwendung von VPN auf. Ich benutze Macos 10.11.1.
osa
30

Setzen Sie einfach die spark.driver.hostlocalhost, wenn Sie IDE verwenden

SparkConf conf = new  SparkConf().setMaster("local[2]").setAppName("AnyName").set("spark.driver.host", "localhost");
JavaSparkContext sc = new JavaSparkContext(conf);
Mohamed Ahmed
quelle
Was bedeutet lokal [2]? Ich habe den Master einfach auf 'lokal' gesetzt und gleichzeitig die Stütze spark.driver.host eingestellt. Dadurch wurde mein Problem behoben.
Medloh
spark.driver.host$SPARK_HOME/conf/spark-defaults.conf
Gute
Dies ist genau die Lösung, nach der ich suche. Es funktionierte. Warum sollte es nur sein, wenn wir IDE verwenden? Wird dies Auswirkungen auf Nicht-IDE-Tests haben?
Buddha
7

Wenn Sie den Hostnamen Ihres Mac nicht ändern möchten, können Sie Folgendes tun:

  1. Suchen Sie die Vorlagendatei spark-env.sh.templateauf Ihrem Computer (wahrscheinlich in /usr/local/Cellar/apache-spark/2.1.0/libexec/conf/).
  2. cp spark-env.sh.template spark-env.sh
  3. Fügen Sie export SPARK_LOCAL_IP=127.0.0.1unter dem Kommentar für lokale IP hinzu.

Anfang spark-shell und genießen Sie es.

Dvin
quelle
7

Ich denke, es gibt zwei Fehler.

  1. Ihre lokale Spark-IP war nicht korrekt und muss auf 127.0.0.1 geändert werden.
  2. Sie haben sqlContext nicht richtig unterschieden.

Für 1. habe ich versucht:

  • 1) SPARK_LOCAL_IP = "127.0.0.1" in ~ / .bash_profile exportiert
  • 2) Export SPARK_LOCAL_IP = "127.0.0.1" in load-spark-env.sh unter $ SPARK_HOME hinzugefügt

Aber beides hat nicht funktioniert. Dann habe ich folgendes versucht und es hat funktioniert:

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

Für 2. können Sie versuchen:

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

und dann import sqlContext.implicits._

Der Builder in SparkSession verwendet den SparkContext automatisch, falls vorhanden, andernfalls erstellt er einen. Bei Bedarf können Sie explizit zwei erstellen.

Rong Du
quelle
4

Wenn Sie Scala verwenden, um den Code in einer IDE auszuführen, und wenn Sie auf dasselbe Problem stoßen und SparkConf () nicht wie oben beschrieben und SparkSession () verwenden, können Sie die localhost-Adresse wie folgt binden, da set nur funktioniert in SparkConf (). Sie sollten .config () verwenden, um die Funkenkonfiguration wie folgt festzulegen:

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

export SPARK_LOCAL_IP = 127.0.0.1 (für mac .bash_profile)

Alturium
quelle
2

Manchmal verhindert die Firewall das Erstellen und Binden eines Sockets. Stellen Sie sicher, dass Ihre Firewall nicht aktiviert ist. Außerdem müssen Sie die IP-Adresse Ihres Computers in / etc / hosts überprüfen und sicherstellen, dass sie in Ordnung ist. Versuchen Sie es dann erneut:

sudo ufw disable
Mahdi Esmailoghli
quelle
1
Hoppla. unter Linux Danke für Heads-Ups
Mahdi Esmailoghli
2

Dies geschieht, wenn Sie zwischen verschiedenen Netzwerken gewechselt haben (VPN - PROD, CI basierend auf Ihren Unternehmensnetzwerken, um auf verschiedene Umgebungen zuzugreifen).

Ich hatte das gleiche Problem, wenn ich das VPN wechselte.

Aktualisieren Sie sudo / etc / hosts mit dem Wert für den Hostnamen auf Ihrem Mac.

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

export SPARK_LOCAL_IP=127.0.0.1

Nur oben zu arbeiten hat für mich funktioniert.

geekgirlspu
quelle