错误原因:
每一个Spark任务都会占用一个SparkUI端口,默认为4040,如果被占用则依次递增端口重试。但是有个默认重试次数,为16次。16次重试都失败后,会放弃该任务的运行。
参考:
http://blog.youkuaiyun.com/a921122/article/details/45095845
解决办法
根据提示,可以在命令行通过配置,增加尝试的次数,具体来说:
/data/hadoop/spark-1.6.0/bin/spark-shell –conf spark.port.maxRetries=100
参考:
http://blog.javachen.com/2015/06/07/spark-configuration.html?utm_source=tuicool&utm_medium=referral
报错信息
17/05/17 11:05:45 ERROR SparkUI: Failed to bind SparkUI
java.net.BindException: Address already in use: Service ‘SparkUI’ failed after 16 retries! Consider explicitly setting the appropriate port for the service ‘SparkUI’ (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.
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)
at org.spark-project.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
at org.spark-project.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
at org.spark-project.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.spark-project.jetty.server.Server.doStart(Server.java:293)
at org.spark-project.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.apache.spark.ui.JettyUtils
.org
apache
spark
ui
JettyUtils
connect
1(JettyUtils.scala:252)
at org.apache.spark.ui.JettyUtils
at org.apache.spark.SparkContext
at line3. read.(:26)
at line3. read .(:30)at line3. read .()
at line3. eval .(:7)at line3. eval .()
at line3. eval. print()atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:498)atorg.apache.spark.repl.SparkIMain ReadEvalPrint.call(SparkIMain.scala:1065)
at org.apache.spark.repl.SparkIMain Request.loadAndRun(SparkIMain.scala:1346)atorg.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)atorg.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902)atorg.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814)atorg.apache.spark.repl.SparkILoopInit anonfun initializeSpark 1.apply(SparkILoopInit.scala:125)atorg.apache.spark.repl.SparkILoopInit anonfun initializeSpark 1.apply(SparkILoopInit.scala:124)atorg.apache.spark.repl.SparkIMain.beQuietDuring(SparkIMain.scala:324)atorg.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
at org.apache.spark.repl.SparkILoop.runThunks(SparkILoop.scala:64)
at org.apache.spark.repl.SparkILoopInit class.postInitialization(SparkILoopInit.scala:108)atorg.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64)atorg.apache.spark.repl.SparkILoop anonfun org apache spark repl SparkILoop
at org.apache.spark.repl.SparkILoop
at org.apache.spark.repl.SparkILoop.org apache spark repl SparkILoop
at org.apache.spark.deploy.SparkSubmit .doRunMain 1(SparkSubmit.scala:181)
at org.apache.spark.deploy.SparkSubmit .submit(SparkSubmit.scala:206)atorg.apache.spark.deploy.SparkSubmit .main(SparkSubmit.scala:121)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
当Spark任务因默认端口4040被占用导致无法运行时,SparkUI会尝试16次寻找可用端口。如果失败,可以修改配置,如在启动命令中添加`–conf spark.port.maxRetries=100`,增加尝试次数来解决问题。错误信息显示了由于端口冲突,SparkUI服务启动失败。

被折叠的 条评论
为什么被折叠?



