Spark Standalone Cluster - Slave未连接到Master

时间:2015-07-01 16:26:12

标签: apache-spark

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

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

这是WebUi图像 -

enter image description here

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

当我从另一台机器启动时,这是我在工作人员中获得的日志消息。 在更新conf \ slaves后,我尝试使用来自主服务器的start-slaves.sh,并且还尝试从服务器中使用start-slave.sh spark://spark:7077

[主人主人 - 火花;工人hostanme - 工人]

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

当我尝试从奴隶telnet到主人时,这就是我得到的 -

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

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:21)

我遇到了与你完全相同的问题,并且只是弄清楚如何让它发挥作用。

问题是你的spark master正在侦听主机名,在你的示例 spark 中,这会导致同一主机上的worker能够成功注册,但是使用命令{{1 }}

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

start-slave.sh spark://spark:7077
在主节点上

,然后正常启动spark master。您可以打开Web GUI以确保启动后火花主控显示为 spark:// YOUR_HOST_IP:7077 。然后,在另一台命令为 SPARK_MASTER_IP=<your host ip> 的计算机上 应该开始并注册工人成功掌握。

希望它能帮到你

答案 1 :(得分:12)

它取决于你的火花版本,它需要不同的配置。 如果你的spark版本1.6将此行添加到conf/spark-env.sh,那么另一台机器可以连接到主

  

SPARK_MASTER_IP = your_host_ip

如果你的火花版本是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://<your_host_ip>:7077

BeCarefule your_host_ip,不应该是localhost,而且必须与Your host ip

中设置的conf/spark-env.sh完全相同

毕竟你可以通过以下命令将另一台机器连接到主机:

  

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

答案 2 :(得分:1)

我刚推出自己的版本为2.10的spark集群。我解决问题的方法如下:

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

答案 3 :(得分:0)

以上所有解决方案均不适用于我,但我发现了另一种解决问题的方法: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。请注意,您无需在从站上设置此变量。

答案 4 :(得分:0)

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

  2. 添加以下行:

    spark.master spark://your hostname:7077 
    

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