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

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

要连接到主节点上的本地 Web 服务器,您可以在您的计算机和主节点之间创建一个 SSH 隧道。这也称为端口转发。如果使用动态端口转发创建 SSH 隧道,则路由到未使用的指定本地端口的所有流量都会转发到主节点上的本地 Web 服务器。这会创建 SOCKS 代理。随后,可以配置 Internet 浏览器使用附加组件 (如 FoxyProxy 或 SwitchySharp) 来管理 SOCKS 代理设置。使用代理管理附加组件可以基于文本模式自动筛选 URL,并将代理设置限制为与主节点的公有 DNS 名称形式匹配的域。当您在查看主节点上托管的网站与 Internet 上的网站之间切换时,浏览器加载项会自动处理代理的打开和关闭。

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

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

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

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

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

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

    发出此命令之后,终端保持打开,不会返回响应。

    注意

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

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

  4. 使用完主节点上的 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 (OpenSSH 或 PuTTY 不可用))。

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

  1. 使用 AWS CLI 连接到主节点所示,创建与主节点之间的 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)的位置和文件名。

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

    注意

    Socks 命令会自动在本地端口 8157 上配置动态端口转发。目前,此设置不可修改。

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

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

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

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

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

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

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

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

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

    注意

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

  2. 如果需要,请在 Category (类别) 列表中,选择 Session (会话)

  3. Host Name (主机名称) 字段中,键入 hadoop@hadoop@MasterPublicDNS。例如:hadoop@ec2-###-##-##-###.compute-1.amazonaws.com.cn

  4. Category (类别) 列表中,展开 Connection (连接) > SSH,然后选择 Auth (身份验证)

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

    注意

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

  6. Category (类别) 列表中,展开 Connection (连接) > SSH,然后选择 Tunnels (隧道)

  7. Source port (源端口) 字段中,键入 8157(一个未使用的本地端口)。

  8. Destination (目标) 字段保留为空白。

  9. 选择动态自动选项。

  10. 依次选择添加打开

  11. 选择以取消 PuTTY 安全警告。

    重要

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

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

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