选项 1:使用本地端口转发设置到 Amazon EMR 主节点的 SSH 隧道
要连接到主节点上的本地 Web 服务器,您需要在计算机和主节点之间创建 SSH 隧道。这也称为端口转发(port forwarding)。如果您不想使用 SOCKS 代理,可以使用本地端口转发设置通往主节点的 SSH 隧道。通过本地端口转发,您可以指定未使用的本地端口,这些端口用于将流量转发到主节点本地 Web 服务器上的特定远程端口。
使用本地端口转发设置 SSH 隧道,需要主节点的公有 DNS 名称和密钥对私有密钥文件。有关如何查找主节点公有 DNS 名称的信息,请参阅检索主节点的公有 DNS 名称。有关访问密钥对的更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对。有关您可能希望在主节点上查看的站点的更多信息,请参阅 查看 Amazon EMR 集群上托管的 Web 界面。
使用 OpenSSH 的本地端口转发,设置通往主节点的 SSH 隧道
在终端中使用本地端口转发设置 SSH 隧道
-
确保您已允许入站 SSH 流量。有关说明,请参阅 连接到 Amazon EMR 之前:授权入站流量。
-
打开终端窗口。在 Mac OS X 上,选择 Applications (应用程序) > Utilities (实用程序) > Terminal (终端)。在其它 Linux 发布版上,终端通常位于 Applications (应用程序) > Accessories (附件) > Terminal (终端)。
-
键入以下命令,以在本地计算机上打开 SSH 隧道。该示例命令通过将本地端口 8157(随机选择的未使用本地端口)上的流量,转发到主节点本地 Web 服务器上的端口 8088,来访问 ResourceManager Web 界面。
将该命令中的
~/mykeypair.pem
替换为您的.pem
文件的位置和文件名,并将ec2-###-##-##-###.compute-1.amazonaws.com
替换为您的集群的主节点公有 DNS 名称。要访问不同的 Web 界面,请将8088
替换为适当的端口号。例如,对于 Zeppelin 接口,请将8088
替换为8890
。ssh -i
~/mykeypair.pem
-N -L8157:ec2-###-##-##-###.compute-1.amazonaws.com
:8088
hadoop@ec2-###-##-##-###.compute-1.amazonaws.com
-L
代表使用本地端口转发,由此,您就能指定一个本地端口,用于将数据转发到主节点本地 Web 服务器上标识的远程端口。在您发出此命令后,终端保持打开状态并且不返回响应。
-
要在浏览器中打开 ResourceManager Web 界面,请在地址栏中键入
http://localhost:
。8157
/ -
如果您已完成使用主节点上的 Web 界面,请关闭终端窗口。