使用 SSH Connect 主节点 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 SSH Connect 主节点

安全 Shell (SSH) 是您可用于创建远程计算机安全连接的网络协议。建立连接后,本地计算机上的终端的行为就好像它在远程计算机上运行。本地发出的命令在远程计算机上运行,远程计算机的命令输出将显示在终端窗口中。

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

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

为了使用 SSH 连接主节点,您需要主节点的公有 DNS 名称。此外,与主节点关联的安全组必须具有入站规则,允许来自源(其中包含发起 SSH 连接的客户端)的 SSH(TCP 端口 22)流量。您可能需要添加规则以允许来自客户端的 SSH 连接。有关修改安全组规则的更多信息,请参阅使用安全组控制网络流量在安全组中添加规则中的适用于 Linux 实例的 Amazon EC2 用户指南.

检索主节点的公有 DNS 名称

您可以使用 Amazon EMR 控制台和Amazon CLI.

Console

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

  1. 从打开 Amazon EMR 控制台https://console.aws.amazon.com/elasticmapreduce/.

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

  3. 请注意主公有 DNS值,该值显示在摘要的 部分群集详细信息页.

    注意

    您也可以选择SSH链接,了解有关与主节点创建 SSH 连接的说明。

CLI

使用 Amazon 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": "###.##.#.###"

有关更多信息,请参阅 。亚马逊 EMR 命令Amazon CLI.

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

要创建使用私有密钥文件进行身份验证的 SSH 连接,您需要在启动集群时指定 Amazon EC2 key pair 私有密钥。如果您从控制台启动集群,需在安全性和访问部分创建集群页. 有关访问 key pair 的更多信息,请参阅Amazon EC2 密钥对中的适用于 Linux 实例的 Amazon EC2 用户指南.

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

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

配置 key pair 私钥文件权限

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

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

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

  3. 请键入以下命令以设置权限。Replace〜/我的钥匙对 .pem替换为 key pair 私有密钥文件的完整路径和文件名。例如 C:\Users\<username>\.ssh\mykeypair.pem.

    chmod 400 ~/mykeypair.pem

    如果您没有在.pem文件时,您将收到一条错误消息,指示您的密钥文件未受保护,并且密钥将被拒绝。要连接,您只需在首次使用 key pair 私有密钥文件时设置权限。

使用终端连接到主节点

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

  2. 要建立与主节点之间的连接,请键入以下命令。Replaceec2-#################-.amazonaws.com替换为群集的主节点公有 DNS 名称,然后将〜/我的钥匙对 .pem替换为完整路径和文件名.pem文件。例如 C:\Users\<username>\.ssh\mykeypair.pem.

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

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

  3. 警告指出无法验证您连接到的主机的真实性。类型yes以继续。

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

    exit

在 Windows 上使用 SSH Connect 到主节点

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

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

有关转换密钥的更多信息,请参阅。使用 PuTTYgen 转换私有密钥中的适用于 Linux 实例的 Amazon EC2 用户指南.

使用 PuTTY 连接主节点

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

  2. 打开 putty.exe。您还可以从 Windows 程序列表中启动 PuTTY。

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

  4. 适用于Host Name (或 IP 地址),键入hadoop@MasterPublicDNS. 例如:hadoop@ec2-#################-.amazonaws.com.

  5. 类别列表中选择连接 > SSHAuth.

  6. 适用于用于身份验证的私钥文件中,选择浏览,然后选择.ppk文件。

  7. 选择打开然后来关闭 PuTTY 安全警报。

    重要

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

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

    注意

    要防止 SSH 连接超时,可以选择Connection中的类别列表,然后选择启用 TCP_ 保留. 如果 PuTTY 中有活动的 SSH 会话,则可以通过打开 PuTTTY 标题栏的上下文(右键单击)菜单并选择更改设置.

使用 Connect 到主节点Amazon CLI

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

使用 Amazon CLI 连接到主节点

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

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

    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"
  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. 当您完成主节点上的工作以后,关闭 Amazon CLI 窗口。

    有关更多信息,请参阅 。亚马逊 EMR 命令Amazon CLI.