使用身份密钥连接到远程主机(其他身份验证方法?)

Connecting to remote master with identity key (other auth methods?)

我正在尝试 运行 在远程主机上提交 spark-submit,问题是 - 远程主机需要身份文件。

我的命令:

spark-submit --master spark://<ip_remote_master>:7077 --conf spark.sql.files.ignoreCorruptFiles=true --conf spark.sql.files.ignoreMissingFiles=true --driver-memory 1g --executor-memory 2g run_script.py

我遇到的错误:

21/12/15 13:01:19 INFO StandaloneAppClient$ClientEndpoint: Connecting to master spark://<ip_remote_master>:7077...
21/12/15 13:01:20 WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master <ip_remote_master>:7077
org.apache.spark.SparkException: Exception thrown in awaitResult:
        at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:301)
        at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75)
        at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:101)
        at org.apache.spark.rpc.RpcEnv.setupEndpointRef(RpcEnv.scala:109)
        at org.apache.spark.deploy.client.StandaloneAppClient$ClientEndpoint$$anon.run(StandaloneAppClient.scala:107)

我尝试使用相关的 *.pem 文件将 <ip_remote_master> 添加到 .ssh/config,但我认为这是死路一条,因为连接到 master 的 spark 并不是真正的 ssh 类过程。

我怎样才能使它工作,同时保持远程主机的身份验证?

我认为无关紧要的事情,因为我正在寻找与云无关的解决方案 - local = aws EC2,remote = aws EMR(我可以通过 ssh 从一个到另一个)。

听起来你在为自己的安全着想,真的你应该看看 sparks security。简短的回答是独立 (Master/worker) 是最需要保护的体力劳动。总的来说:

Configuring Ports for Network Security Generally speaking, a Spark cluster and its services are not deployed on the public internet. They are generally private services, and should only be accessible within the network of the organization that deploys Spark. Access to the hosts and ports used by Spark services should be limited to origin hosts that need to access the services.

这基本上是告诉您使用网络 partitioning/network 安全而不是使用“身份密钥”。您可以加密通信的内容并限制谁可以与谁交谈,但是您需要在机器之间打开端口以便它们能够工作。如果您需要安全性,我会使用 Yarn 设置 EMR 集群,并对集群进行 Kerberize 化。那你就很有安全感了。