如何在 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
我正在使用 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