【问题标题】:spark submit "Service 'Driver' could not bind on port" error火花提交“服务'驱动程序'无法绑定端口”错误
【发布时间】:2016-11-20 15:00:06
【问题描述】:

我使用以下命令运行了wordcount的spark java示例:-

time spark-submit --deploy-mode cluster --master spark://192.168.0.7:6066 --class org.apache.spark.examples.JavaWordCount /home/pi/Desktop/example/new/target/javaword.jar /books_50.txt 

当我运行它时,输出如下:-

Running Spark using the REST application submission protocol.
16/07/18 03:55:41 INFO rest.RestSubmissionClient: Submitting a request to launch an application in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submission successfully created as driver-20160718035543-0000. Polling submission state...
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Submitting a request for the status of submission driver-20160718035543-0000 in spark://192.168.0.7:6066.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: State of driver driver-20160718035543-0000 is now RUNNING.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Driver is running on worker worker-20160718041005-192.168.0.12-42405 at 192.168.0.12:42405.
16/07/18 03:55:44 INFO rest.RestSubmissionClient: Server responded with CreateSubmissionResponse:
{
  "action" : "CreateSubmissionResponse",
  "message" : "Driver successfully submitted as driver-20160718035543-0000",
  "serverSparkVersion" : "1.6.2",
  "submissionId" : "driver-20160718035543-0000",
  "success" : true
}

我检查了特定工人 (192.168.0.12) 的日志,它说:-

Launch Command: "/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java" "-cp" "/opt/spark/conf/:/opt/spark/lib/spark-assembly-1.6.2-hadoop2.6.0.jar:/opt/spark/lib/datanucleus-api-jdo-3.2.6.jar:/opt/spark/lib/datanucleus-core-3.2.10.jar:/opt/spark/lib/datanucleus-rdbms-3.2.9.jar" "-Xms1024M" "-Xmx1024M" "-Dspark.driver.supervise=false" "-Dspark.app.name=org.apache.spark.examples.JavaWordCount" "-Dspark.submit.deployMode=cluster" "-Dspark.jars=file:/home/pi/Desktop/example/new/target/javaword.jar" "-Dspark.master=spark://192.168.0.7:7077" "-Dspark.executor.memory=10M" "org.apache.spark.deploy.worker.DriverWrapper" "spark://Worker@192.168.0.12:42405" "/opt/spark/work/driver-20160718035543-0000/javaword.jar" "org.apache.spark.examples.JavaWordCount" "/books_50.txt"
========================================

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 default log4j profile: org/apache/spark/log4j-defaults.properties
16/07/18 04:10:58 INFO SecurityManager: Changing view acls to: pi
16/07/18 04:10:58 INFO SecurityManager: Changing modify acls to: pi
16/07/18 04:10:58 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(pi); users with modify permissions: Set(pi)
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
16/07/18 04:11:00 WARN Utils: Service 'Driver' could not bind on port 0. Attempting port 1.
Exception in thread "main" java.net.BindException: Cannot assign requested address: Service 'Driver' failed after 16 retries! Consider explicitly setting the appropriate port for the service 'Driver' (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 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)

我的 spark-env.sh 文件(用于 master)包含:-

export SPARK_MASTER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

我的 spark-env.sh 文件(用于工人)包含:-

export SPARK_WORKER_WEBUI_PORT="8080"
export SPARK_MASTER_IP="192.168.0.7"
export SPARK_EXECUTOR_MEMORY="10M"

请帮忙...!!

【问题讨论】:

  • 您曾在哪里解决过这个问题?我在 spark v2.0.0 上遇到了完全相同的问题。
  • 您好,我无法为这个特定问题找到任何线索。因此,我开始为 wordcount 流式传输 python 示例。如果您找到解决方法,请告诉我。

标签: apache-spark word-count


【解决方案1】:

第一个选项:-

以下步骤可能会有所帮助:

Get your hostname by using "hostname" command.

 xxxxxx.ssssss  (e) base  ~  hostname
 xxxxxx.ssssss.net

/etc/hosts 文件中为您的主机名创建一个条目(如果不存在),如下所示:

127.0.0.1      xxxxxx.ssssss.net

第二个选项:-

您可以在 spark.conf 文件中设置 spark.driver.bindAddress

spark.driver.bindAddress=127.0.0.1

谢谢!!

【讨论】:

    【解决方案2】:

    在数据框中使用如下

    val spark=SparkSession.builder.appName("BinarizerExample").master("local[*]").config("spark.driver.bindAddress", "127.0.0.1").getOrCreate()

    【讨论】:

      【解决方案3】:

      此问题仅与 IP 地址有关。日志文件中的错误消息不提供信息。 通过以下 3 个步骤进行检查:

      1. 检查您的 IP 地址 - 可以使用 ifconfig 或 ip 命令进行检查。如果您的服务不是公共服务。具有 192.168 的 IP 地址应该足够了。如果您正在规划集群,则不能使用 127.0.0.1。

      2. 检查您的环境变量 SPARK_MASTER_HOST - 检查变量名称或实际 IP 地址中是否有拼写错误。

        环境 | grep SPARK_

      3. 使用命令 netstat 检查您计划用于 sparkMaster 的端口是否可用。不要使用低于 1024 的端口。例如:

        netstat -a | 9123

      在 sparkmaster 开始运行后,如果您无法从其他机器看到 webui,则使用命令 iptables 打开 webui 端口。

      【讨论】:

        【解决方案4】:

        我遇到了这个问题,这是因为在 /etc/hosts 中用我的 IP 更改了真实 IP。

        【讨论】:

          【解决方案5】:

          我通过修改slave文件解决了这个问题。它的spark-2.4.0-bin-hadoop2.7/conf/slave 请检查您的配置。

          【讨论】:

            【解决方案6】:

            我也有这个问题。

            原因(对我来说)是我的本地系统的 IP 无法从我的本地系统访问。 我知道这种说法毫无意义,但请阅读以下内容。

            我的系统名称 (uname -s) 显示我的系统名为“sparkmaster”。 在我的 /etc/hosts 文件中,我为 sparkmaster 系统分配了一个固定 IP 地址为“192.168.1.70”。 sparknode01 和 sparknode02 的额外固定 IP 地址分别为 ...1.71 和 ...1.72。

            由于遇到其他一些问题,我需要将所有网络适配器更改为 DHCP。这意味着他们得到了像 192.168.90.123 这样的地址。 DHCP 地址与 ...1.70 范围不在同一个网络中,并且没有配置路由。

            当 spark 启动时,似乎想尝试连接到以 uname 命名的主机(即我的例子中的 sparkmaster)。这是 IP 192.168.1.70 - 但无法连接到该地址,因为该地址位于无法访问的网络中。

            我的解决方案是将我的一个以太网适配器改回固定的静态地址(即 192.168.1.70),瞧,问题解决了。

            所以问题似乎是,当 spark 以“本地模式”启动时,它会尝试连接到以您的系统名称命名的系统(而不是本地主机)。 我想如果你想设置一个集群(就像我做的那样)这是有道理的,但它可能会导致上述令人困惑的消息。 可能把你系统的主机名放在 /etc/hosts 的 127.0.0.1 条目上也可以解决这个问题,但我没有尝试。

            【讨论】:

            • 同样的问题 - 主机名是“45131”,火花被视为 IP。
            • 大声笑,只有数字的主机名可能会带来各种挑战。
            【解决方案7】:

            我正在使用 Maven/SBT 来管理依赖项,并且 Spark 核心包含在一个 jar 文件中。

            您可以通过设置“spark.driver.bindAddress”(在 Scala 中)在运行时覆盖 SPARK_LOCAL_IP:

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

            【讨论】:

              【解决方案8】:

              我在尝试运行 shell 时遇到了同样的问题,并且能够通过设置 SPARK_LOCAL_IP 环境变量来使其正常工作。您可以在运行 shell 时从命令行分配它:

              SPARK_LOCAL_IP=127.0.0.1 ./bin/spark-shell

              要获得更持久的解决方案,请在 Spark 根目录的 conf 目录中创建一个 spark-env.sh 文件。添加以下行:

              SPARK_LOCAL_IP=127.0.0.1

              使用chmod +x ./conf/spark-env.sh 赋予脚本执行权限,这将默认设置此环境变量。

              【讨论】:

              • 在启动脚本之前为SPARK_LOCAL_IP 执行export 对我有用 - 快速测试这是否可行。
              【解决方案9】:

              您需要在/etc/hosts 文件中输入主机名。 比如:

              127.0.0.1   localhost "hostname"
              

              【讨论】:

              • 感谢马纳夫的建议。我尝试在主机文件中添加/删除/编辑该行,但它没有任何改变。
              • 我很确定这与您的网络设置有关,而不是您的 spark 设置。我遇到了同样的错误,并且能够通过在主机文件中添加一个条目来解决它。可以肯定的是,您需要将最后一个 cmd 中的“主机名”替换为您的主机名(在您的 shell 中键入 $hostname cmd),也不要使用引号
              • 这是根本原因。
              【解决方案10】:

              这可能是Spark 1.2.1 standalone cluster mode spark-submit is not working的副本

              我尝试了相同的步骤,但能够运行该作业。如果可能,请发布完整的 spark-env.sh 和 spark-defaults。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-12-26
                • 2017-11-24
                • 2018-07-07
                • 1970-01-01
                • 1970-01-01
                • 2018-11-24
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多