Ошибка искровой оболочки Mac при инициализации SparkContext

87

Я попытался запустить spark 1.6.0 (spark-1.6.0-bin-hadoop2.4) в Mac OS Yosemite 10.10.5, используя

"./bin/spark-shell". 

Ниже приведена ошибка. Я также пытался установить разные версии Spark, но у всех была одна и та же ошибка. Это второй раз, когда я запускаю Spark. Мой предыдущий запуск работает нормально.

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

Затем я добавляю

export SPARK_LOCAL_IP="127.0.0.1"

для spark-env.sh ошибка изменяется на:

 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
Цзя
источник
На моей рабочей машине 10.10.5 - я также получаю (другую) ошибку, если экспортирую эту переменную, поэтому я все равно не думаю, что это исправление. Без него все работает нормально. Вы пробовали работать на уровне журнала DEBUG, чтобы получить дополнительную информацию?
jbrown 05
1
Это может быть связано с тем, что Spark сейчас не работает с ipv6. Не могли бы вы попробоватьbin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing 05
@zsxwing Я пробовал, и у него похожая ошибка16/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
Возможно, на вашем компьютере возникла проблема с конфигурацией сети. Не могли бы вы попробовать ping 127.0.0.1?
zsxwing 05
@zsxwing Я пробовал пинговать 127.0.0.1, и он работает нормально.
Jia

Ответы:

139

Следующие шаги могут помочь:

  1. Получите свое имя хоста с помощью команды hostname.

  2. Сделайте запись в файле / etc / hosts для вашего имени хоста, если оно отсутствует, следующим образом:

    127.0.0.1      your_hostname
    

Надеюсь это поможет!!

Гаурав Шарма
источник
Спасибо за совет. У меня была аналогичная проблема на сервере ubuntu jupyter, когда я пытался создать sparkContext из клиента jupyter. Добавление сопоставления в файл hosts устранило проблему :-)
Жюльен Бахманн
2
Вы должны отредактировать "sudo nano / private / etc / hosts" в Mac
Саид
1
run ping $(hostname), это должно разрешиться до 127.0.0.1
Thomas Decaux
Исправил для меня. Благодарность!
Andrés Mejía
1
Выполнение этой команды также помогло мне -> sudo hostname -s 127.0.0.1
MRTJ
119

Я всегда это получаю при переключении между сетями. Это решает это:

$ sudo hostname -s 127.0.0.1

Ардаван
источник
4
Это сработало и для меня. В моем случае это происходит сразу после входа в корпоративный VPN. Мне приходится запускать это пару раз в неделю, пока я разрабатываю свои искровые приложения.
AdrianVeidt
корпоративный vpn - скрытый враг
StephenBoesch
1
на GNU / Linux:$ sudo hostname -b 127.0.0.1
orluke
1
Потрясающие. Я тоже столкнулся с этим из-за корпоративного vpn, и это исправило.
Дилип Кумар Патчиголла
1
Спасибо, это сработало. Не могли бы вы объяснить, почему это работает?
vitalii
34

Я построил его из текущей основной ветки с версией 2.0.0-SNAPSHOT. После добавления export SPARK_LOCAL_IP="127.0.0.1"к load-spark-env.shон работал для меня. Я использую Macos 10.10.5. Так может быть проблема с версией?

мелтак
источник
3
Я смог использовать $ SPARK_LOCAL_IP="127.0.0.1" gradle my-gradle-task-using-local-spark. Проблема возникла при использовании vpn. Я использую Macos 10.11.1.
Сергей Оршанский
31

Просто установите spark.driver.hostваш localhost, если вы используете IDE

SparkConf conf = new  SparkConf().setMaster("local[2]").setAppName("AnyName").set("spark.driver.host", "localhost");
JavaSparkContext sc = new JavaSparkContext(conf);
Мохамед Ахмед
источник
что означает местный [2]? Я просто установил для мастера значение «локальный» вместе с настройкой опоры spark.driver.host, и это устранило мою проблему.
medloh
Хорошая идея , чтобы добавить spark.driver.hostнепосредственно в коде , а не баловаться с$SPARK_HOME/conf/spark-defaults.conf
StephenBoesch
Это именно то решение, которое я ищу. Это сработало. Почему это должно быть, только если мы используем IDE? повлияет ли это на тесты, отличные от IDE?
Будда
8

Думаю, есть две ошибки.

  1. Ваш локальный IP-адрес искры был неправильным, и его необходимо изменить на 127.0.0.1.
  2. Вы неправильно определили sqlContext.

Для 1. Пробовал:

  • 1) экспортировал SPARK_LOCAL_IP = "127.0.0.1" в ~ / .bash_profile
  • 2) добавлен экспорт SPARK_LOCAL_IP = "127.0.0.1" в load-spark-env.sh под $ SPARK_HOME

Но ни то, ни другое не помогло. Затем я попробовал следующее, и это сработало:

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

Для 2. вы можете попробовать:

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

а потом import sqlContext.implicits._

Конструктор в SparkSession будет автоматически использовать SparkContext, если он существует, в противном случае он создаст его. При необходимости вы можете явно создать два.

Ронг Ду
источник
7

Если вы не хотите менять имя хоста вашего Mac, вы можете сделать следующее:

  1. Найдите файл шаблона spark-env.sh.templateна вашем компьютере (вероятно, он находится внутри /usr/local/Cellar/apache-spark/2.1.0/libexec/conf/).
  2. cp spark-env.sh.template spark-env.sh
  3. Добавьте export SPARK_LOCAL_IP=127.0.0.1под комментарием для локального IP.

Начни spark-shellи наслаждайся.

Двин
источник
4

Если вы используете Scala для запуска кода в среде IDE, и если вы сталкиваетесь с той же проблемой, и вы не используете SparkConf (), как указано выше, и не используете SparkSession (), вы можете привязать адрес localhost следующим образом, поскольку набор работает только в SparkConf (). Вы должны использовать .config () для установки конфигурации искры, как показано ниже:

    val spark = SparkSession
       .builder()
       .appName("CSE512-Phase1")
       .master("local[*]").config("spark.driver.bindAddress", "localhost")
       .getOrCreate()
Сидхарт Паникер
источник
3

экспорт SPARK_LOCAL_IP = 127.0.0.1 (для Mac .bash_profile)

альтурий
источник
2

Иногда брандмауэр предотвращает создание и привязку сокета. убедитесь, что ваш брандмауэр не включен, а также вам необходимо проверить IP-адрес вашего компьютера в / etc / hosts и убедиться, что он в порядке, а затем повторите попытку:

sudo ufw disable
Махди Эсмаилогли
источник
1
ой. на linux Спасибо за внимание
Махди Эсмаилогли
2

Это происходит, когда вы переключаетесь между разными сетями (VPN - PROD, CI на основе сетей вашей компании для доступа к разным средам).

У меня была такая же проблема, когда я переключаю VPN.

обновите sudo / etc / hosts значением имени хоста на вашем Mac.

Йога Гауда
источник
2
sparkContext = new JavaSparkContext("local[4]", "Appname")

export SPARK_LOCAL_IP=127.0.0.1

просто вышеперечисленное сработало для меня.

geekgirlspu
источник
0

В Mac проверьте IP-адрес в Системных настройках -> Сеть -> щелкните Wi-Fi, к которому вы подключены (он должен показать зеленый значок) -> проверьте IP-адрес чуть выше имени вашей сети.

Сделайте следующую запись в ../conf/spark-env.sh:

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

а чем попробовать искровую оболочку. Выполнение вышеуказанных изменений сработало для меня.

Джиоти Валея
источник