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://<your host ip>: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
如果你做对了,你可以在 <your_host_ip>:8080
看到 spark master url 是:spark://<your_host_ip>: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 独立集群 - 从站未连接到主站的主要内容,如果未能解决你的问题,请参考以下文章