Mac spark-shell เกิดข้อผิดพลาดในการเตรียมใช้งาน SparkContext


89

ฉันพยายามเริ่ม 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 - ฉันได้รับข้อผิดพลาด (อื่น) เช่นกันหากฉันส่งออกตัวแปรนั้นดังนั้นฉันจึงไม่คิดว่าจะแก้ไขได้ ไม่มีมันทำงานได้ดี คุณได้ลองเรียกใช้ที่ระดับบันทึกการแก้ปัญหาเพื่อรับข้อมูลเพิ่มเติมหรือไม่?
jbrown

1
อาจเป็นเพราะ Spark ใช้งานไม่ได้กับ ipv6 ในตอนนี้ คุณลองได้ไหมbin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing

@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)...
เจีย

อาจมีปัญหาการกำหนดค่าเครือข่ายในเครื่องของคุณ ลองหน่อยได้ping 127.0.0.1ไหม
zsxwing

@zsxwing ฉันลอง ping 127.0.0.1 แล้วก็ใช้ได้
เจีย

คำตอบ:


141

ขั้นตอนต่อไปนี้อาจช่วยได้:

  1. รับชื่อโฮสต์ของคุณโดยใช้คำสั่ง "hostname"

  2. สร้างรายการในไฟล์ / etc / hosts สำหรับชื่อโฮสต์ของคุณหากไม่มีดังนี้:

    127.0.0.1      your_hostname
    

หวังว่านี่จะช่วยได้ !!


ขอบคุณสำหรับคำแนะนำ. ฉันมีปัญหาคล้ายกันบนเซิร์ฟเวอร์ ubuntu jupyter เมื่อฉันพยายามสร้าง sparkContext จากไคลเอนต์ jupyter การเพิ่มการแมปในไฟล์โฮสต์ช่วยแก้ปัญหา :-)
Julien Bachmann

2
คุณควรแก้ไข "sudo nano / private / etc / hosts" ใน mac
Saeed

1
วิ่งping $(hostname)สิ่งนี้ต้องแก้ไขเป็น 127.0.0.1
Thomas Decaux

แก้ไขให้ฉัน ขอบคุณ!
AndrésMejía

1
การเรียกใช้คำสั่งนี้ยังช่วยฉันด้วย -> sudo hostname -s 127.0.0.1
MRTJ

120

ฉันได้รับสิ่งนั้นเสมอเมื่อสลับระหว่างเครือข่าย สิ่งนี้แก้ได้:

$ 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 ขององค์กรและสิ่งนี้ได้รับการแก้ไขแล้ว
Dileep Kumar Patchigolla

1
ขอบคุณที่ได้ผล คุณช่วยอธิบายได้ไหมว่าทำไมถึงได้ผล
vitalii

35

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
Sergey Orshanskiy

32

เพียงตั้งค่าspark.driver.hostให้เป็น localhost ของคุณหากคุณใช้ IDE

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

local [2] หมายถึงอะไร? ฉันเพิ่งตั้งค่าต้นแบบเป็น 'local' พร้อมกับการตั้งค่า spark.driver.host prop และแก้ไขปัญหาของฉัน
medloh

ความคิดที่ดีที่จะเพิ่มลงspark.driver.hostในโค้ดโดยตรงแทนที่จะยุ่งกับ$SPARK_HOME/conf/spark-defaults.conf
StephenBoesch

นี่คือทางออกที่แน่นอนที่ฉันกำลังมองหา มันได้ผล ทำไมต้องเป็นเฉพาะในกรณีที่เราใช้ IDE? สิ่งนี้จะมีผลกับการทดสอบที่ไม่ใช่ IDE หรือไม่
พระพุทธเจ้า

9

มีข้อผิดพลาดสองประการที่ฉันคิดว่า

  1. ip ในพื้นที่ของคุณ spark ไม่ถูกต้องและจำเป็นต้องเปลี่ยนเป็น 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 โดยอัตโนมัติหากมีอยู่มิฉะนั้นจะสร้างขึ้นมา คุณสามารถสร้างสองอย่างชัดเจนได้หากจำเป็น


8

หากคุณไม่ต้องการเปลี่ยนชื่อโฮสต์ของ 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และสนุกกับมัน


5

หากคุณใช้ Scala เพื่อเรียกใช้รหัสใน IDE และหากคุณประสบปัญหาเดียวกันและคุณไม่ได้ใช้ SparkConf () ตามที่ระบุไว้ข้างต้นและใช้ SparkSession () คุณสามารถผูกที่อยู่ localhost ได้ดังต่อไปนี้ตามที่ตั้งไว้เท่านั้น ใน SparkConf () คุณควรใช้. config () เพื่อตั้งค่าการกำหนดค่า spark ดังที่แสดงด้านล่าง:

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


2

บางครั้งไฟร์วอลล์ป้องกันการสร้างและผูกซ็อกเก็ต ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ของคุณไม่ได้เปิดใช้งานและคุณต้องตรวจสอบ ip ของเครื่องของคุณใน / etc / hosts และตรวจสอบให้แน่ใจว่าใช้ได้จากนั้นลองอีกครั้ง:

sudo ufw disable

1
อ๊ะ. บน linux ขอบคุณสำหรับการแจ้งให้ทราบ
Mahdi Esmailoghli

2

สิ่งนี้เกิดขึ้นเมื่อคุณสลับระหว่างเครือข่ายต่างๆ (VPN - PROD, CI ตามเครือข่าย บริษัท ของคุณเพื่อเข้าถึงสภาพแวดล้อมที่แตกต่างกัน)

ฉันมีปัญหาเดียวกันทุกครั้งที่ฉันเปลี่ยน VPN

อัปเดต sudo / etc / hosts ด้วยค่า hostname บน Mac ของคุณ


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

export SPARK_LOCAL_IP=127.0.0.1

แค่ทำข้างต้นได้ผลสำหรับฉัน


0

ใน Mac ตรวจสอบ IP ในการตั้งค่าระบบ -> เครือข่าย -> คลิก Wifi ที่คุณเชื่อมต่ออยู่ (ควรแสดงไอคอนสีเขียว) -> ตรวจสอบ IP เหนือชื่อเครือข่ายของคุณ

ทำรายการต่อไปนี้ใน ../conf/spark-env.sh:

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

และลองใช้ประกายไฟมากกว่า การเปลี่ยนแปลงข้างต้นได้ผลสำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.