无法 ssh 进入 Spark worker

Cannot ssh into Spark worker

特定执行器中有 8 个失败的任务。我想通过 ssh 连接到它以查看纱线日志。

执行器地址为:ip-123-45-6-78.us-west-2.compute.internal:34265

我都试过了:

ssh ip-123-45-6-78.us-west-2.compute.internal:34265

ssh ip-123-45-6-78.us-west-2.compute.internal

但两者都会产生以下错误:

Could not resolve hostname ip-123-45-6-78.us-west-2.compute.internal: Name or service not known

我还在 .ssh/config 文件中添加了我用来连接主服务器的相同密钥对:

Host master
        HostName ec2-09-876-543-21.us-west-2.compute.amazonaws.com
        User hadoop
        IdentityFile ~/keypair.pem

Host worker
        HostName ip-123-45-6-78.us-west-2.compute.internal
        User hadoop
        IdentityFile ~/keypair.pem

而且 ssh workerssh worker:34265 都不起作用。

明确一点:ssh master 确实有效!

Spark 应用程序 运行 在 EMR 集群上。

来自主机名 *.compute.internal 这些是内部 IP 地址 (私有 IP) 并且您不能 ssh 来自您的本地系统。

您可以 SSHmaster 因为您使用的是主实例的 public IP 地址。也尝试为工作人员使用 public IP 地址,它应该可以工作。

或者选择通过主服务器创建ssh-tunnel,你可以试试

Host worker
        HostName ip-123-45-6-78.us-west-2.compute.internal
        User hadoop
        IdentityFile ~/keypair.pem
        ProxyCommand ssh master -W %h:%p

您尝试连接的主机名 will not resolve as you're outside of the AWS VPC。私有记录(属于 compute.internal 域的那些)仅在网络的 DNS 通过 Route 53 私有解析器时解析。

如果您不担心解析 DNS 主机名,您可以尝试直接通过私有 IP 连接(假设您可以通过 VPN connection or Direct Connect 访问)。或者通过具有 public 入口的实例连接,即客户端 -> 跳转服务器 -> 私有主机。

如果您确实想通过私有域名解析,以下是最佳选择: