Errore di Spark-shell del Mac durante l'inizializzazione di SparkContext


89

Ho provato ad avviare spark 1.6.0 (spark-1.6.0-bin-hadoop2.4) su Mac OS Yosemite 10.10.5 utilizzando

"./bin/spark-shell". 

Ha l'errore qui sotto. Ho anche provato a installare diverse versioni di Spark, ma tutte hanno lo stesso errore. Questa è la seconda volta che eseguo Spark. La mia corsa precedente funziona bene.

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

Poi aggiungo

export SPARK_LOCAL_IP="127.0.0.1"

in spark-env.sh, l'errore cambia in:

 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

Sulla mia macchina funzionante 10.10.5 - Ottengo anche un errore (diverso) se esporto quella variabile, quindi non penso che sia comunque una soluzione. Senza di essa funziona bene. Hai provato a eseguire il livello di registro DEBUG per ottenere maggiori informazioni?
jbrown

1
Ciò può essere dovuto al fatto che Spark non funziona bene con ipv6 in questo momento. Potresti provarebin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing

@zsxwing ho provato e ha un errore simile16/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

Forse qualche problema di configurazione di rete nella tua macchina. Potresti provare ping 127.0.0.1?
zsxwing

@zsxwing ho provato a eseguire il ping 127.0.0.1 e funziona bene.
Jia

Risposte:


141

I seguenti passaggi potrebbero aiutare:

  1. Ottieni il tuo nome host utilizzando il comando "hostname".

  2. Inserisci una voce nel file / etc / hosts per il tuo nome host se non è presente come segue:

    127.0.0.1      your_hostname
    

Spero che sia di aiuto!!


Grazie per il consiglio. Ho avuto un problema simile su un server Ubuntu Jupyter quando stavo cercando di creare uno sparkContext da un client Jupyter. L'aggiunta della mappatura nel file hosts ha risolto il problema :-)
Julien Bachmann

2
Dovresti modificare "sudo nano / private / etc / hosts" in mac
Saeed

1
eseguito ping $(hostname), questo deve risolversi a 127.0.0.1
Thomas Decaux

Risolto il problema per me. Grazie!
Andrés Mejía

1
L'esecuzione di questo comando mi ha aiutato anche -> sudo hostname -s 127.0.0.1
MRTJ

120

Lo capisco sempre quando si passa da una rete all'altra. Questo lo risolve:

$ sudo hostname -s 127.0.0.1


4
Questo ha funzionato anche per me. Nel mio caso accade subito dopo aver effettuato l'accesso alla mia VPN aziendale. Devo eseguirlo un paio di volte a settimana mentre sviluppo le mie app Spark.
AdrianVeidt

vpn aziendale - il nemico nascosto
StephenBoesch

1
su GNU / Linux:$ sudo hostname -b 127.0.0.1
orluke

1
Eccezionale. Anch'io ho dovuto affrontare questo problema a causa della VPN aziendale e questo l'ha risolto.
Dileep Kumar Patchigolla

1
Grazie, ha funzionato. Potresti spiegare, per favore, perché funziona?
vitalii

35

L'ho costruito dal ramo principale corrente con la versione 2.0.0-SNAPSHOT. Dopo aver aggiunto export SPARK_LOCAL_IP="127.0.0.1"ad load-spark-env.shesso ha funzionato per me. Sto usando Macos 10.10.5. Quindi potrebbe essere un problema di versione?


3
Sono stato in grado di utilizzare $ SPARK_LOCAL_IP="127.0.0.1" gradle my-gradle-task-using-local-spark. Il problema si è verificato durante l'utilizzo di VPN. Uso Mac 10.11.1.
Sergey Orshanskiy

32

Basta impostare spark.driver.hostcome host locale se usi IDE

SparkConf conf = new  SparkConf().setMaster("local[2]").setAppName("AnyName").set("spark.driver.host", "localhost");
JavaSparkContext sc = new JavaSparkContext(conf);

cosa significa local [2]? Ho appena impostato il master su "locale" insieme all'impostazione del prop spark.driver.host, e il problema è stato risolto.
medloh

Bella idea da aggiungere spark.driver.hostdirettamente nel codice invece di scherzare con$SPARK_HOME/conf/spark-defaults.conf
StephenBoesch

Questa è la soluzione esatta che sto cercando. Ha funzionato. Perché dovrebbe essere solo se stiamo usando IDE? questo avrà un impatto per i test non IDE?
Buddha

9

Ci sono due errori credo.

  1. Il tuo IP locale Spark non era corretto e deve essere modificato in 127.0.0.1.
  2. Non hai definito correttamente sqlContext.

Per 1. Ho provato:

  • 1) esportato SPARK_LOCAL_IP = "127.0.0.1" in ~ / .bash_profile
  • 2) aggiunta export SPARK_LOCAL_IP = "127.0.0.1" in load-spark-env.sh sotto $ SPARK_HOME

Ma nessuno dei due ha funzionato. Quindi ho provato quanto segue e ha funzionato:

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

Per 2. puoi provare:

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

e poi import sqlContext.implicits._

Il builder in SparkSession utilizzerà automaticamente SparkContext se esiste, altrimenti ne creerà uno. Puoi crearne due esplicitamente se necessario.


8

Se non vuoi cambiare il nome host del tuo Mac, puoi fare quanto segue:

  1. Trova il file modello spark-env.sh.templatesulla tua macchina (probabilmente è in /usr/local/Cellar/apache-spark/2.1.0/libexec/conf/).
  2. cp spark-env.sh.template spark-env.sh
  3. Aggiungi export SPARK_LOCAL_IP=127.0.0.1sotto il commento per l'IP locale.

Inizia spark-shelle divertiti.


5

Se stai usando Scala per eseguire il codice in un IDE e se affronti lo stesso problema e non stai usando SparkConf () come indicato sopra e stai usando SparkSession (), allora puoi associare l'indirizzo localhost come segue come funziona solo il set in SparkConf (). Dovresti usare .config () per impostare la configurazione di Spark come mostrato di seguito:

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

3

export SPARK_LOCAL_IP = 127.0.0.1 (per mac .bash_profile)


2

A volte il firewall impedisce la creazione e l'associazione di un socket. assicurati che il tuo firewall non sia abilitato e devi anche controllare l'ip della tua macchina in / etc / hosts e assicurarti che sia OK quindi riprovare:

sudo ufw disable

1
oops. su Linux Grazie per l'
avviso

2

Ciò accade quando si passa da una rete all'altra (VPN - PROD, CI in base alle reti aziendali per accedere a diversi ambienti).

Ho avuto lo stesso problema ogni volta che ho cambiato VPN.

aggiorna sudo / etc / hosts con il valore hostname sul tuo Mac.


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

export SPARK_LOCAL_IP=127.0.0.1

solo facendo sopra ha funzionato per me.


0

In Mac, controlla l'IP in Preferenze di sistema -> Rete -> fai clic sul Wifi a cui sei connesso (dovrebbe mostrare un'icona verde) -> controlla l'IP appena sopra il tuo nome di rete.

Inserisci la seguente voce in ../conf/spark-env.sh:

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

e poi provare Spark-Shell. Fare le modifiche sopra ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.