提问者:小点点

java.net.BindException:使用Google DataProc时地址已被使用


我刚刚使用 DataProc 在 Google Cloud 中设置了一个 Spark 集群,我正在尝试使用 gcutil 从我的本地机器提交一个简单的 pyspark hello-world.py 作业,如文档中指定的那样 - https://cloud.google.com/dataproc/submit-job

gcloud beta dataproc jobs submit pyspark --cluster cluster-1 hello-world.py

但是,我得到了以下错误:

15/12/28 08:54:53 WARN org.spark-project.jetty.util.component.AbstractLifeCycle: FAILED   SelectChannelConnector@0.0.0.0:4040: java.net.BindException: Address  already in use
java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
   at org.spark-project.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
...
  py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68)
   at py4j.GatewayConnection.run(GatewayConnection.java:207)
   at java.lang.Thread.run(Thread.java:745)

我只提交过一次这份工作,所以我很困惑为什么会出现这个错误。任何帮助都将不胜感激。


共1个答案

匿名用户

创建 Spark 上下文时,默认情况下会在 4040 处启动应用程序 UI 端口。当 UI 启动时,它会检查它是否正在使用中,如果是,它应该增加到 4041。看起来您在端口 4040 上运行了一些东西。应用程序应显示警告,然后尝试在 4041 上启动 UI。