Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 SSH 连接主节点

安全外壳 (SSH) 是您可用于创建远程计算机安全连接的网络协议。创建连接之后,本地计算机上的终端的行为会如同在远程计算机上运行一样。您在本地发出的命令在远程计算机上运行,来自远程计算机的命令输出会显示在您的终端窗口中。

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

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

为了使用 SSH 连接主节点,您需要主节点的公有 DNS 名称。

检索主节点的公有 DNS 名称

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

使用 Amazon EMR 控制台检索主节点的公有 DNS 名称

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. Cluster List 页面上,选择您的集群的链接。

  3. 记下显示在 Cluster Details (集群详细信息) 页面顶部的 Master public DNS (主节点公有 DNS) 值。

     获取主节点公有 DNS 名称

    注意

    您还可以选择主节点公有 DNS 名称旁的 SSH 链接,以了解有关创建与主节点之间的 SSH 连接的说明。

     SSH 说明

使用 AWS CLI 检索主节点的公有 DNS 名称

  1. 要检索集群标识符,请键入以下命令。

    aws emr list-clusters

    输出会列出您的集群 (包括集群 ID)。记下您连接的集群的集群 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 名称)。请键入以下命令之一。将 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": "###.##.#.###"

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

在 Linux、Unix 和 Mac OS X 上使用 SSH 和 Amazon EC2 私有密钥连接到主节点

要创建使用私有密钥文件进行身份验证的 SSH 连接,您需要在启动集群时指定 Amazon EC2 密钥对私有密钥。如果您从控制台启动集群,需在 Create Cluster (创建集群) 页面上的 Security and Access (安全与访问) 部分中指定 Amazon EC2 密钥对私有密钥。有关访问密钥对的更多信息,请参阅 Amazon EC2 User Guide for Linux Instances 中的 Amazon EC2 密钥对

默认情况下,您的 Linux 计算机最可能包括 SSH 客户端。例如,大多数 Linux、Unix 和 macOS 操作系统上都会安装 OpenSSH。您可以通过在命令行键入 ssh 来检查 SSH 客户端。如果您的计算机无法识别该命令,请安装 SSH 客户端以便连接主节点。OpenSSH 项目会免费提供一套完整的 SSH 工具执行文件。有关更多信息,请访问 OpenSSH 网站。

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

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

您必须先对 .pem 文件设置权限,以便只有密钥拥有者才有权访问该文件,然后才能使用 Amazon EC2 密钥对私有密钥创建 SSH 连接。使用终端或 AWS CLI 创建 SSH 连接时必须这样做。

  1. 找到您的 .pem 文件。这些说明假设该文件名为 mykeypair.pem,并且存储在当前用户的主目录中。

  2. 键入以下命令以设置权限。将 ~/mykeypair.pem 替换为您的密钥对私有密钥文件的位置和文件名。

    chmod 400 ~/mykeypair.pem

    如果未对 .pem 文件设置权限,则会收到一个错误,指示密钥文件不受保护,并且密钥会被拒绝。要进行连接,只需在首次使用密钥对私有密钥文件时对它设置权限。

使用终端连接到主节点

  1. 打开终端窗口。在 Mac OS X 上,选择 Applications (应用程序) > Utilities (实用工具) > Terminal (终端)。在其他 Linux 发行版上,终端通常位于 Applications (应用程序) > Accessories (附件) > Terminal (终端)

  2. 要建立与主节点之间的连接,请键入以下命令。将 ec2-###-##-##-###.compute-1.amazonaws.com.cn 替换为您的集群的主节点公有 DNS 名称,并将 ~/mykeypair.pem 替换为您的 .pem 文件的位置和文件名。

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

    重要

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

  3. 有警告指出无法验证您连接到的主机的真实性。请键入“yes”继续。

  4. 当您完成主节点上的工作以后,请键入以下命令以关闭 SSH 连接。

    exit

使用 AWS CLI 连接到主节点

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

使用 AWS CLI 连接到主节点

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

    aws emr list-clusters

    输出会列出您的集群 (包括集群 ID)。记下您连接的集群的集群 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"
  2. 键入以下命令以打开与主节点之间的 SSH 连接。在下面的示例中,将 j-2AL4XXXXXX5T9 替换为集群 ID,将 ~/mykeypair.key 替换为 .pem 文件 (对于 Linux、Unix 和 Mac OS X) 或 .ppk 文件 (对于 Windows) 的位置和文件名。

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

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

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

Windows 用户可以使用 SSH 客户端 (如 PuTTY) 连接到主节点。连接到 Amazon EMR 主节点之前,应下载并安装 PuTTY 和 PuTTYgen。可以从 PuTTY 下载页面下载这些工具。

PuTTY 本身不支持 Amazon EC2 生成的密钥对私有密钥文件格式 (.pem)。可使用 PuTTYgen 将密钥文件转换为所需的 PuTTY 格式 (.ppk)。您必须将密钥转换为此格式 (.ppk),然后才能尝试使用 PuTTY 连接到主节点。

有关转换密钥的更多信息,请参阅 Amazon EC2 User Guide for Linux Instances 中的使用 PuTTYgen 转换您的私有密钥

使用 PuTTY 连接到主节点;

  1. 打开 putty.exe。也可以从 Windows 程序列表中启动 PuTTY。

  2. 如果需要,请在 Category 列表中,选择 Session

  3. 对于 Host Name (or IP address),键入 hadoop@MasterPublicDNS。例如:hadoop@ec2-###-##-##-###.compute-1。amazonaws.com.cn

  4. Category 列表中,选择 Connection > SSHAuth

  5. 对于 Private key file for authentication,选择 Browse,然后选择生成的 .ppk 文件。

  6. 选择 Open,然后选择 Yes 以取消 PuTTY 安全警告。

    重要

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

  7. 当您完成主节点上的工作以后,您可以通过关闭 PuTTY 关闭 SSH 连接。

    注意

    要防止 SSH 连接超时,可以在 Category 列表中选择 Connection,然后选择选项 Enable TCP_keepalives。如果在 PuTTY 中有活动的 SSH 会话,则可以通过打开 PuTTY 标题栏的上下文 (右键单击) 菜单并选择 Change Settings 来更改设置。