如何在 Apache-Spark 中连接主从? (独立模式)

How to connect master and slaves in Apache-Spark? (Standalone Mode)

我正在使用 Spark Standalone Mode 教程页面以独立模式安装 Spark。

1- 我通过以下方式开始了大师的创作:

./sbin/start-master.sh

2- 我通过以下方式启动了一个 worker:

./bin/spark-class org.apache.spark.deploy.worker.Worker spark://ubuntu:7077

注意:spark://ubuntu:7077是我的师父名,在Master-WebUI中可以看到。

问题:通过第二条命令,worker成功启动。但是不能和master关联。它反复尝试然后给出此消息:

15/02/08 11:30:04 WARN Remoting: Tried to associate with unreachable    remote address [akka.tcp://sparkMaster@ubuntu:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: ubuntu/127.0.1.1:7077
15/02/08 11:30:04 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.apache.spark.deploy.DeployMessages$RegisterWorker] from Actor[akka://sparkWorker/user/Worker#-1296628173] to Actor[akka://sparkWorker/deadLetters] was not delivered. [20] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
15/02/08 11:31:15 ERROR Worker: All masters are unresponsive! Giving up.

有什么问题?

谢谢

我通常从 spark-env.sh 模板开始。我设置了我需要的属性。对于简单集群,您需要:

  • SPARK_MASTER_IP

然后,在与 spark-env.sh 和 slaves ip 相同的目录中创建一个名为 "slaves" 的文件(每行一个)。确保您通过 ssh 访问所有奴隶。

最后,将此配置复制到集群的每台机器中。然后启动整个集群执行 start-all.sh 脚本并尝试 spark-shell 检查你的配置。

> sbin/start-all.sh
> bin/spark-shell

您可以在 $SPARK_HOME/conf/spark-env.sh

中设置 export SPARK_LOCAL_IP="You-IP" #to set the IP address Spark binds to on this node

在我的例子中,在独立模式下使用 spark 2.4.7,我使用 ssh-keygen 创建了一个无密码的 ssh 密钥,但在启动集群时仍然要求输入工作密码。

我所做的就是按照此处的说明进行操作 https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/

这一行解决了问题: ssh-copy-id -i $HOME/.ssh/id_rsa.pub user@server-ip