选项 2,第 1 部分:使用动态端口转发设置到主节点的 SSH 隧道 - Amazon EMR

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

选项 2,第 1 部分:使用动态端口转发设置到主节点的 SSH 隧道

要连接到主节点上的本地 Web 服务器,请在计算机和主节点之间创建 SSH 隧道。这也称为端口转发。如果您使用动态端口转发创建 SSH 隧道,则路由到指定的未使用本地端口的所有流量都会转发到主节点上的本地 Web 服务器。这将创建一个 SOCKS 代理。然后,您可以将 Internet 浏览器配置为使用附加组件(如 FoxyProxy 或 SwitchyOmega来管理 SOCKS 代理设置。

使用代理管理附加组件,您可以根据文本模式自动筛选 URLs并将代理设置限制为与主节点的公有 DNS 名称格式匹配的域。当您在主节点上托管的查看网站与 Internet 上的网站之间切换时,浏览器附加组件会自动处理打开和关闭代理。

在开始之前,您需要主节点的公有 DNS 名称和您的密钥对私有密钥文件。有关如何查找主节点公有 DNS 名称的信息,请参阅使用 Amazon EMR 控制台检索主节点的公有 DNS 名称。有关访问密钥对的更多信息,请参阅 中的 Amazon EC2 Amazon EC2 用户指南(适用于 Linux 实例) 密钥对。有关您可能希望在主节点上查看的站点的更多信息,请参阅查看 Amazon EMR 集群上托管的 Web 界面

在 Linux、Unix 和 Mac OS X 上使用动态端口转发设置到主节点的 SSH 隧道

在 Linux、Unix 和 Mac OS X 上使用动态端口转发设置 SSH 隧道

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

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

  3. 键入以下命令以在本地计算机上打开 SSH 隧道。Replace ~/mykeypair.pem 替换为.pem文件的位置和文件名,替换 8157 替换为未使用的本地端口号并替换 c2-###-##-##-###.compute-1.amazonaws.com 替换为集群的主节点公有 DNS 名称。

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

    发出此命令后,终端将保持打开状态,并且不会返回响应。

    注意

    -D 表示使用动态端口转发,这允许您指定一个本地端口,该端口用于将数据转发到主节点的本地 Web 服务器上的所有远程端口。动态端口转发创建侦听 命令中指定的端口的本地 SOCKS 代理。

  4. 在隧道处于活动状态后,为浏览器配置 SOCKS 代理。有关更多信息,请参阅选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站

  5. 使用完主节点上的 Web 界面后,关闭终端窗口。

通过 AWS CLI 使用动态端口转发设置 SSH 隧道

可以在 Windows 以及 Linux、Unix 和 Mac OS X 上使用 AWS CLI 创建与主节点之间的 SSH 连接。如果在 Linux、Unix 或 Mac OS X 上使用 AWS CLI,则必须对 .pem 文件设置权限(如配置密钥对私有密钥文件权限所示)。如果您在 Windows AWS CLI 上使用 PuTTY ,则 必须显示在路径环境变量中,否则您可能会收到错误,例如 OpenSSH or PuTTY not available.

通过 AWS CLI 使用动态端口转发设置 SSH 隧道

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

  2. 创建与主节点的 SSH 连接,如 中所示使用 AWS CLI 连接到主节点

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

    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"
  4. 键入以下命令以使用动态端口转发打开到主节点的 SSH 隧道。在以下示例中,替换 j-2AL4XXXXXX5T9 替换为集群 ID 并替换 ~/mykeypair.key 替换为 .pem 文件(对于 Linux、Unix 和 Mac OS X)或 .ppk 文件(对于 Windows)的位置和文件名。

    aws emr socks --cluster-id j-2AL4XXXXXX5T9 --key-pair-file ~/mykeypair.key
    注意

    袜子命令自动在本地端口 8157 上配置动态端口转发。目前,无法修改此设置。

  5. 在隧道处于活动状态后,为浏览器配置 SOCKS 代理。有关更多信息,请参阅选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站

  6. 使用完主节点上的 Web 界面后,关闭 AWS CLI 窗口。

    有关在 中使用 Amazon EMR 命令的更多信息AWS CLI,请参阅https://docs.aws.amazon.com/cli/latest/reference/emr

在 Windows 上使用动态端口转发设置到主节点的 SSH 隧道

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

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

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

在 Windows 上使用动态端口转发设置 SSH 隧道

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

  2. 双击 putty.exe 以启动 PuTTY。也可以从 Windows 程序列表中启动 PuTTY。

    注意

    如果您已经有与主节点之间的活动 SSH 会话,则可以通过右键单击 PuTTY 标题栏并选择 Change Settings (更改设置) 来添加隧道。

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

  4. Host Name 字段中,键入 hadoop@MasterPublicDNS。 例如: hadoop@ec2-###-##-##-###.compute-1.amazonaws.com.

  5. Category 列表中,展开 Connection > SSH,然后选择 Auth。

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

    注意

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

  7. Category 列表中,展开 Connection > SSH,然后选择 Tunnels。

  8. Source port (源端口) 字段中,键入 8157 (未使用的本地端口),然后选择 Add (添加)。

  9. Destination (目标) 字段留空。

  10. 选择 Dynamic (动态) 和 Auto (自动) 选项。

  11. 选择 Open

  12. 选择 Yes 以关闭 PuTTY 安全提醒。

    重要

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

  13. 在隧道处于活动状态后,为浏览器配置 SOCKS 代理。有关更多信息,请参阅选项 2,第 2 部分:配置代理设置以查看主节点上托管的网站

  14. 使用完主节点上的 Web 界面后,关闭 PuTTY 窗口。