Spark 独立集群 - 从站未连接到主站

Posted

技术标签:

【中文标题】Spark 独立集群 - 从站未连接到主站【英文标题】:Spark Standalone Cluster - Slave not connecting to Master 【发布时间】: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

非常感谢任何帮助。

【问题讨论】:

【参考方案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】:

以上所有解决方案都不适用于我,但我找到了另一种解决问题的方法:***: 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】:

    在spark/conf目录下,打开文件spark-defaults.conf.template进行编辑。

    添加以下行:

    spark.master spark://your hostname:7077 
    

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

【讨论】:

以上是关于Spark 独立集群 - 从站未连接到主站的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 .bat 文件从 jenkins 中的从站连接到主站

独立集群 + Docker 上的 PySpark 性能不佳

一文搞懂canopen通讯网络结构是如何建立的

用idea调试Spark独立集群

在独立集群上运行 spark 时出错

Spark 独立集群如何在工作节点上管理多个执行程序?