使用 Connect 连接到主节点 SSH - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Connect 连接到主节点 SSH

Secure Shell (SSH) 是一种网络协议,可用于创建与远程计算机的安全连接。建立连接后,请如同在远程电脑上运行那样,操作您在本地计算机上的终端。您在本地发出的命令会在远程电脑上运行,同时,远程计算机的命令输出将显示在终端窗口中。

SSH与一起使用时 AWS,您正在连接到一个EC2实例,该实例是在云中运行的虚拟服务器。使用 Amazon 时EMR,最常见的用途SSH是连接到充当集群主节点的EC2实例。

使用SSH连接到主节点使您能够监控群集并与之交互。您可以在主节点上发出 Linux 命令、以交互方式运行应用程序(如 Hive 和 Pig)、浏览目录、读取日志文件等。您还可以在SSH连接中创建隧道以查看主节点上托管的 Web 界面。有关更多信息,请参阅 查看 Amazon EMR 集群上托管的网页界面

要使用连接到主节点SSH,您需要主节点的公共DNS名称。此外,与主节点关联的安全组必须有入站规则,允许来自包括SSH连接来源的客户端在内的来源SSH(TCP端口 22)流量。您可能需要添加一条规则以允许来自您的客户端的SSH连接。有关修改安全组规则的更多信息,请参阅 使用安全组控制网络流量 Amazon EC2 用户指南中的向安全组添加规则

检索主节点的公共DNS名称

您可以使用 Amazon EMR 控制台和检索主公用DNS名称 AWS CLI。

Console
使用新控制台检索主节点的公共DNS名称
  1. 登录 AWS Management Console,然后通过 https://console.aws.amazon.com/em r 打开亚马逊EMR控制台。

  2. EC2在左侧导航窗格的 EMRon 下,选择 C l usters,然后选择要在其中检索公共DNS名称的集群。

  3. 请注意集群详细信息页面摘要部分中的主节点公共DNS值。

CLI
使用检索主节点的公共DNS名称 AWS CLI
  1. 要检索集群标识符,请键入以下命令。

    aws emr list-clusters

    输出列出了您的集群,包括集群IDs。记下您连接的集群的集群 ID。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "My cluster"
  2. 要列出集群实例,包括集群的公共DNS名称,请键入以下命令之一。Replace(替换) j-2AL4XXXXXX5T9 使用上一个命令返回的集群 ID。

    aws emr list-instances --cluster-id j-2AL4XXXXXX5T9

    或者:

    aws emr describe-cluster --cluster-id j-2AL4XXXXXX5T9

    输出列出了集群实例,包括DNS名称和 IP 地址。记下 PublicDnsName 值。

    "Status": { "Timeline": { "ReadyDateTime": 1408040779.263, "CreationDateTime": 1408040515.535 }, "State": "RUNNING", "StateChangeReason": {} }, "Ec2InstanceId": "i-e89b45e7", "PublicDnsName": "ec2-###-##-##-###.us-west-2.compute.amazonaws.com" "PrivateDnsName": "ip-###-##-##-###.us-west-2.compute.internal", "PublicIpAddress": "##.###.###.##", "Id": "ci-12XXXXXXXXFMH", "PrivateIpAddress": "###.##.#.###"

有关更多信息,请参阅中的 Amazon EMR 命令 AWS CLI

在 Linux、Unix SSH 和 Mac OS X 上使用并使用亚马逊EC2私钥连接到主节点

要创建使用私钥文件进行身份验证的SSH连接,您需要在启动集群时指定 Amazon EC2 key pair 私钥。有关访问密钥对的更多信息,请参阅亚马逊EC2用户指南中的亚马逊EC2密钥对

默认情况下,您的 Linux 计算机很可能包含SSH客户端。例如,大多数 Linux、Unix 和 macOS 操作系统上都安装了 Open SSH。您可以通过ssh在命令行键入来检查SSH客户端。如果您的计算机无法识别该命令,请安装SSH客户端以连接到主节点。Open SSH 项目提供了全套SSH工具的免费实现。如需了解更多信息,请参阅 Open SSH 网站。

以下说明演示如何在 Linux、Unix 和 Mac OS X 上打开与亚马逊EMR主节点的SSH连接。

配置密钥对私有密钥文件权限

在使用 Amazon EC2 key pair 私钥创建SSH连接之前,您必须对.pem文件设置权限,以便只有密钥所有者才有权访问该文件。这是使用终端或创建SSH连接所必需的 AWS CLI。

  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. 找到您的 .pem 文件。这些说明假定文件名为 mykeypair.pem,并将其存储在当前用户的主目录中。

  3. 键入以下命令以设置权限。Replace(替换) ~/mykeypair.pem 包含您的 key pair 私钥文件的完整路径和文件名。例如 C:/Users/<username>/.ssh/mykeypair.pem

    chmod 400 ~/mykeypair.pem

    如果您没有对 .pem 文件设置权限,您将收到一条错误消息,指出您的密钥文件不受保护,并且密钥将被拒绝。您只需在第一次使用密钥对私有密钥文件时设置权限即可连接。

使用终端连接到主节点
  1. 打开终端窗口。在 Mac OS X 上,选择 Applications (应用程序) > Utilities (实用程序) > Terminal (终端)。在其它 Linux 发布版上,终端通常位于 Applications (应用程序) > Accessories (附件) > Terminal (终端)

  2. 要建立与主节点的连接,请键入以下命令。Replace(替换) ec2-###-##-##-###.compute-1.amazonaws.com 使用您的集群的主公用DNS名称并替换 ~/mykeypair.pem 包含文件的完整路径和.pem文件名。例如 C:/Users/<username>/.ssh/mykeypair.pem

    ssh hadoop@ec2-###-##-##-###.compute-1.amazonaws.com -i ~/mykeypair.pem
    重要

    连接到 Amazon EMR 主节点hadoop时必须使用登录名;否则,您可能会看到类似的错误Server refused our key

  3. 警告指出无法验证您正在连接的主机真实性。键入 yes 以继续。

  4. 在主节点上完成操作后,键入以下命令以关闭SSH连接。

    exit

如果您在使用SSH连接到主节点时遇到困难,请参阅排除与您的实例的连接问题

在 Windows SSH 上使用连接到主节点

Windows 用户可以使用SSH像 Pu 这样的客户端TTY连接到主节点。在连接到 Amazon EMR 主节点之前,您应该下载并安装 Pu TTY 和 P uTTYgen。你可以从 Pu 下载页面TTY下载这些工具。

Pu 本身TTY不支持亚马逊EC2生成的密钥对私钥文件格式 (.pem)。您可以使用 P 将密钥文件uTTYgen 转换为所需的 Pu TTY 格式 (.ppk)。在尝试使用 Pu 连接到主节点之前,必须将密钥转换为此格式 (.ppk) TTY。

有关转换密钥的更多信息,请参阅 Amazon EC2 用户指南uTTYgen中的使用 P 转换私钥

使用 Pu 连接到主节点 TTY
  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. 打开 putty.exe。你也可以TTY从 Windows 程序列表中启动 Pu。

  3. 如有必要,在 Category (类别) 列表中,选择 Session (会话)

  4. 主机名(或 IP 地址)中,键入 hadoop@MasterPublicDNS。 例如:hadoop@ec2-###-##-##-###.compute-1.amazonaws.com.

  5. “类别” 列表中,选择 “连接” > SSH身份验证”。

  6. 对于 Private key file for authentication (用于身份验证的私有密钥文件),选择 Browse (浏览),然后选择您生成的 .ppk 文件。

  7. 选择 “打开”,然后选择 “” 以关闭 Pu TTY 安全警报。

    重要

    登录主节点时,如果系统提示您输入用户名,请键入 hadoop

  8. 在主节点上完成工作后,可以通过关闭 Pu 来关闭SSH连接TTY。

    注意

    要防止SSH连接超时,可以在 “类别” 列表中选择 “连接”,然后选择 “启用 TCP _keepaliv es” 选项。如果您在 Pu 中有一个处于活动状态的SSH会话TTY,则可以通过打开 Pu TTY 标题栏的上下文(右键单击)并选择 “更改设置” 来更改设置

如果您在使用SSH连接到主节点时遇到困难,请参阅排除与您的实例的连接问题

使用 AWS CLI连接到主节点

你可以在 Windows、Linux、Unix 和 Mac OS X 上使用与主节点建立SSH连接。无论平台如何,你都需要主节点的公共DNS名称和你的 Amazon EC2 密钥对私钥。 AWS CLI 如果您在 Linux、Unix 或 Mac OS X 上使用,则还必须设置私钥(.pem.ppk)文件的权限,如所示配置密钥对私有密钥文件权限。 AWS CLI

要使用连接到主节点 AWS CLI
  1. 确保您已允许入站SSH流量。有关说明,请参阅 连接之前:授权入站流量

  2. 要检索集群标识符,请键入:

    aws emr list-clusters

    输出列出了您的集群,包括集群IDs。记下您连接的集群的集群 ID。

    "Status": { "Timeline": { "ReadyDateTime": 1408040782.374, "CreationDateTime": 1408040501.213 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "NormalizedInstanceHours": 4, "Id": "j-2AL4XXXXXX5T9", "Name": "AWS CLI cluster"
  3. 键入以下命令以打开与主节点的SSH连接。在以下示例中,替换 j-2AL4XXXXXX5T9 使用集群 ID 并替换 ~/mykeypair.key 包含您的.pem文件(对于 Linux、Unix 和 Mac OS X)或.ppk文件(适用于 Windows)的完整路径和文件名。例如 C:\Users\<username>\.ssh\mykeypair.pem

    aws emr ssh --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
  4. 在主节点上完成工作后,关闭 AWS CLI 窗口。

    有关更多信息,请参阅中的 Amazon EMR 命令 AWS CLI。如果您在使用SSH连接到主节点时遇到困难,请参阅排除与您的实例的连接问题