Mac spark-shell Lỗi khi khởi chạy SparkContext


87

Tôi đã cố gắng khởi động spark 1.6.0 (spark-1.6.0-bin-hadoop2.4) trên Mac OS Yosemite 10.10.5 bằng cách sử dụng

"./bin/spark-shell". 

Nó có lỗi bên dưới. Tôi cũng đã thử cài các phiên bản Spark khác nhau nhưng đều bị lỗi giống nhau. Đây là lần thứ hai tôi chạy Spark. Lần chạy trước của tôi hoạt động tốt.

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

Sau đó, tôi thêm

export SPARK_LOCAL_IP="127.0.0.1"

thành spark-env.sh, lỗi thay đổi thành:

 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

Trên máy làm việc của tôi 10.10.5 - Tôi cũng gặp lỗi (khác) nếu tôi xuất biến đó, vì vậy tôi không nghĩ đó là cách sửa chữa. Không có nó, nó chạy tốt. Bạn đã thử chạy ở cấp nhật ký GỠ LỖI để biết thêm thông tin chưa?
jbrown

1
Điều này có thể do Spark không hoạt động tốt với ipv6 ngay bây giờ. Bạn có thể thử khôngbin/spark-shell --driver-java-options "-Djava.net.preferIPv4Stack=true"
zsxwing

@zsxwing Tôi đã thử và nó bị lỗi tương tự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

Có thể một số vấn đề về cấu hình mạng trong máy của bạn. Bạn có thể thử ping 127.0.0.1?
zsxwing

@zsxwing Tôi đã thử ping 127.0.0.1 và nó hoạt động tốt.
Jia

Câu trả lời:


139

Các bước sau có thể hữu ích:

  1. Lấy tên máy chủ của bạn bằng cách sử dụng lệnh "tên máy chủ".

  2. Tạo một mục nhập trong tệp / etc / hosts cho tên máy chủ của bạn nếu không có như sau:

    127.0.0.1      your_hostname
    

Hi vọng điêu nay co ich!!


Cảm ơn vì lời khuyên. Tôi đã gặp sự cố tương tự trên máy chủ jupyter ubuntu khi tôi đang cố tạo sparkContext từ máy khách jupyter. Thêm ánh xạ vào tệp máy chủ đã khắc phục sự cố :-)
Julien Bachmann

2
Bạn nên chỉnh sửa "sudo nano / private / etc / hosts" trong mac
Saeed

1
chạy ping $(hostname), phải quyết tâm này để 127.0.0.1
Thomas Decaux

Đã sửa nó cho tôi. Cảm ơn!
Andrés Mejía

1
Chạy lệnh này cũng giúp ích cho tôi -> tên máy chủ sudo -s 127.0.0.1
MRTJ 17/09/19

119

Tôi luôn hiểu điều đó khi chuyển đổi giữa các mạng. Điều này giải quyết nó:

$ sudo hostname -s 127.0.0.1


4
Cái này cũng có tác dụng với tôi. Trong trường hợp của tôi, nó xảy ra ngay sau khi tôi đăng nhập vào VPN công ty của mình. Tôi phải chạy cái này vài lần một tuần trong khi đang phát triển các ứng dụng spark của mình.
AdrianVeidt

công ty vpn - kẻ thù ẩn
StephenBoesch

1
trên GNU / Linux:$ sudo hostname -b 127.0.0.1
orluke

1
Tuyệt vời. Tôi cũng phải đối mặt với điều này do vpn của công ty, và điều này đã sửa nó.
Dileep Kumar Patchigolla

1
Cảm ơn bạn, điều đó đã hiệu quả. Bạn có thể giải thích, làm ơn, tại sao nó hoạt động?
importantii

34

Tôi đã xây dựng nó từ nhánh chính hiện tại với phiên bản 2.0.0-SNAPSHOT. Sau khi thêm export SPARK_LOCAL_IP="127.0.0.1"vào load-spark-env.shnó đã làm việc cho tôi. Tôi đang sử dụng Macos 10.10.5. Vì vậy, nó có thể là vấn đề phiên bản?


3
Tôi đã có thể sử dụng $ SPARK_LOCAL_IP="127.0.0.1" gradle my-gradle-task-using-local-spark. Vấn đề xuất hiện khi sử dụng vpn. Tôi đang sử dụng Macos 10.11.1.
Sergey Orshanskiy,

31

Chỉ cần đặt spark.driver.hostlàm máy chủ cục bộ của bạn nếu bạn sử dụng IDE

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

địa phương [2] nghĩa là gì? Tôi vừa đặt cái chủ thành 'cục bộ' cùng với việc đặt phần mềm hỗ trợ spark.driver.host và nó đã khắc phục sự cố của tôi.
medloh

Ý tưởng tốt đẹp để thêm spark.driver.hosttrực tiếp trong các mã như trái ngược với can thiệp vào$SPARK_HOME/conf/spark-defaults.conf
StephenBoesch

Đây là giải pháp chính xác mà tôi đang tìm kiếm. Nó đã làm việc. Tại sao chỉ nên sử dụng IDE? điều này có ảnh hưởng đến các bài kiểm tra không IDE không?
Đức Phật

8

Tôi nghĩ có hai lỗi.

  1. Ip cục bộ tia lửa của bạn không đúng và cần được thay đổi thành 127.0.0.1.
  2. Bạn đã không xác định sqlContext đúng cách.

Đối với 1. Tôi đã thử:

  • 1) đã xuất SPARK_LOCAL_IP = "127.0.0.1" trong ~ / .bash_profile
  • 2) đã thêm xuất SPARK_LOCAL_IP = "127.0.0.1" trong load-spark-env.sh dưới $ SPARK_HOME

Nhưng không hiệu quả. Sau đó, tôi đã thử những điều sau và nó hoạt động:

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

Đối với 2. bạn có thể thử:

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

và sau đó import sqlContext.implicits._

Trình tạo trong SparkSession sẽ tự động sử dụng SparkContext nếu nó tồn tại, nếu không nó sẽ tạo một. Bạn có thể tạo rõ ràng hai nếu cần thiết.


7

Nếu bạn không muốn thay đổi tên máy Mac của mình, bạn có thể làm như sau:

  1. Tìm tệp mẫu spark-env.sh.templatetrên máy của bạn (Nó có thể ở trong /usr/local/Cellar/apache-spark/2.1.0/libexec/conf/).
  2. cp spark-env.sh.template spark-env.sh
  3. Thêm export SPARK_LOCAL_IP=127.0.0.1dưới bình luận cho IP cục bộ.

Khởi đầu spark-shell và tận hưởng nó.


4

Nếu bạn đang sử dụng Scala để chạy mã trong IDE và nếu bạn gặp phải vấn đề tương tự và bạn không sử dụng SparkConf () như đã chỉ ra ở trên và sử dụng SparkSession () thì bạn có thể liên kết địa chỉ localhost như sau vì bộ chỉ hoạt động trong SparkConf (). Bạn nên sử dụng .config () để thiết lập cấu hình tia lửa như hình dưới đây:

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

3

export SPARK_LOCAL_IP = 127.0.0.1 (dành cho mac .bash_profile)


2

Đôi khi tường lửa ngăn cản việc tạo và ràng buộc một ổ cắm. đảm bảo rằng tường lửa của bạn không được kích hoạt và bạn cũng phải kiểm tra ip của máy trong / etc / hosts và đảm bảo rằng nó OK rồi thử lại:

sudo ufw disable

1
Giáo sư. trên linux Cảm ơn bạn đã quan tâm
Mahdi Esmailoghli

2

Điều này xảy ra khi bạn chuyển đổi giữa các mạng khác nhau (VPN - PROD, CI dựa trên mạng công ty của bạn để truy cập các môi trường khác nhau).

Tôi đã gặp vấn đề tương tự, bất cứ khi nào tôi chuyển đổi VPN.

cập nhật sudo / etc / hosts với giá trị tên máy chủ trên máy Mac của bạn.


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

export SPARK_LOCAL_IP=127.0.0.1

chỉ làm ở trên làm việc cho tôi.


0

Trong Mac, Kiểm tra IP trong Tùy chọn hệ thống -> Mạng -> nhấp vào Wifi bạn đang kết nối (nó sẽ hiển thị biểu tượng màu xanh lá cây) -> kiểm tra IP ngay phía trên Tên mạng của bạn.

Thực hiện mục nhập sau trong ../conf/spark-env.sh:

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

và hơn là thử spark-shell. Thực hiện các thay đổi trên đã làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.