【问题标题】:Spark Standalone Cluster - Slave not connecting to MasterSpark 独立集群 - 从站未连接到主站
【发布时间】:2015-07-01 16:26:12
【问题描述】:

我正在尝试按照官方文档设置 Spark 独立集群。

我的主人在一个运行 ubuntu 的本地虚拟机上,我也有一个工人在同一台机器上运行。它正在连接,我可以在主服务器的 WebUI 中看到它的状态。

这是 WebUi 图像 -

但是当我尝试从另一台机器连接从机时,我无法做到。

这是我从另一台机器启动时在工作程序中收到的日志消息。 在更新 conf\slaves 和从属服务器 start-slave.sh spark://spark:7077 后,我尝试使用来自主服务器的 start-slaves.sh

[主主机名 - spark; Worker hostanme - worker]

15/07/01 11:54:16 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@spark:7077] has failed, address is now gated for [5000] ms. Reason is: [Association failed with [akka.tcp://sparkMaster@spark:7077]].
15/07/01 11:54:59 ERROR Worker: All masters are unresponsive! Giving up.
15/07/01 11:54:59 INFO Utils: Shutdown hook called

当我尝试从奴隶远程登录到主人时,这就是我得到的 -

root@worker:~# telnet spark 7077
Trying 10.xx.xx.xx...
Connected to spark.
Escape character is '^]'.
Connection closed by foreign host.

Telnet 似乎可以工作,但连接一建立就关闭。这可能与问题有关吗?

我已经在两台机器的 /etc/hosts 中添加了主从 IP 地址。 我遵循了SPARK + Standalone Cluster: Cannot start worker from another machine 给出的所有解决方案 但它们对我没有用。

我在两台机器的 spark-env.sh 中都设置了以下配置 -

导出 SPARK_MASTER_IP=spark

导出 SPARK_WORKER_PORT=44444

非常感谢任何帮助。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    我遇到了和你完全相同的问题,只是想知道如何让它工作。

    问题是您的 spark master 正在侦听主机名,在您的示例 spark 中,这导致同一主机上的工作人员能够成功注册,但使用命令 start-slave.sh spark://spark:7077 在另一台机器上注册失败.

    解决方案是确保 SPARK_MASTER_IP 的值是用文件 conf/spark-env.sh 中的 ip 指定的

        SPARK_MASTER_IP=<your host ip>
    

    在您的主节点上,并正常启动您的 spark 主节点。您可以打开 Web GUI 以确保您的 spark master 在启动后显示为 spark://YOUR_HOST_IP:7077。然后,在另一台机器上使用命令start-slave.sh spark://&lt;your host ip&gt;:7077 应该成功启动并注册worker到master。

    希望对你有帮助

    【讨论】:

    • 解决方案不起作用,但至少给了我一个不同的错误。
    • 你对从机做了无密码认证吗? if not master=slave 通讯是不可能的
    • 谢谢。在最新版本上更改为 SPARK_MASTER_HOST
    【解决方案2】:

    这取决于你的 spark 版本,它需要不同的 conf。 如果您的 spark 版本 1.6 将此行添加到 conf/spark-env.sh以便另一台机器可以连接到 master

    SPARK_MASTER_IP=your_host_ip

    如果您的 spark 版本是 2.x,请将这些行添加到您的 conf/spark-env.sh

    SPARK_MASTER_HOST=your_host_ip

    SPARK_LOCAL_IP=your_host_ip

    添加这些行后运行 spark :

    ./sbin/spark-all.sh

    如果你做对了,你可以在 &lt;your_host_ip&gt;:8080 看到 spark master url 是:spark://&lt;your_host_ip&gt;:7077

    小心 your_host_ip ,不应该是localhost 并且它必须完全是你在conf/spark-env.sh中设置的Your host ip

    毕竟你可以用下面的命令将另一台机器连接到主机:

    ./sbin/start-slave.sh spark://your_host_ip:7077

    【讨论】:

    • 这在 Spark 2.0.1 上也适用于我。在此更改之前,URL 是 spark://spark-master:7077,之后是 spark://IP:7077。谢谢!
    • 这个答案让我省了很多挫折。在过去的 2 天里,我一直在尝试调试该问题,但在 spark 版本 2.x 中我无法看到 SPARK_MASTER_IP 参数已更改为 SPARK_MASTER_HOST。哪里都没有提到,真是可笑。
    【解决方案3】:

    我刚刚使用 2.10 版本启动了自己的 spark 集群。我解决问题的方法如下:

     ./sbin/start-master.sh -h <your_ip>
    

    【讨论】:

      【解决方案4】:

      以上所有解决方案都不适用于我,但我找到了另一种解决问题的方法:Stackoverflow: spark worker not connecting to master

      请检查您的主节点上的配置文件“spark-env.sh”。您是否将 SPARK_MASTER_HOST 变量设置为主节点的 IP 地址?如果没有尝试设置它并重新启动主机和从机。例如,如果您的主节点的 IP 是 192.168.0.1,那么您应该在其中设置 SPARK_MASTER_HOST=192.168.0.1。请注意,您不需要在从属设备上设置此变量。

      【讨论】:

        【解决方案5】:
        1. 在spark/conf目录下,打开文件spark-defaults.conf.template进行编辑。

        2. 添加以下行:

          spark.master spark://your hostname:7077 
          

        要查找您的主机名,请在命令提示符中输入 hostname

        【讨论】:

          猜你喜欢
          • 2019-01-05
          • 1970-01-01
          • 2018-06-25
          • 2018-09-04
          • 1970-01-01
          • 2017-06-23
          • 1970-01-01
          • 1970-01-01
          • 2020-02-06
          相关资源
          最近更新 更多