使用 SSH 隧道访问 Apache Ambari Web UI、JobHistory、NameNode、Apache Oozie 和其他 UI

HDInsight 群集通过 Internet 提供对 Apache Ambari Web UI 的访问权限。 某些功能需要 SSH 隧道。 例如,在没有 SSH 隧道的情况下,无法通过 Internet 访问 Apache Oozie Web UI。

为何使用 SSH 隧道

Ambari 中的多个菜单仅通过 SSH 隧道工作。 这些菜单依赖于在其他节点类型(如工作器节点)上运行的网站和服务。

以下 Web UI 需要 SSH 隧道:

  • 工作历史
  • NameNode
  • 线程堆栈
  • Oozie Web UI
  • HBase 主节点和日志界面

随公开 Web 服务的脚本操作一起安装的服务将需要 SSH 隧道。 随脚本操作一起安装的 Hue 需要 SSH 隧道才能访问 Web UI。

Important

如果可以通过虚拟网络直接访问 HDInsight,则无需使用 SSH 隧道。 有关通过虚拟网络直接访问 HDInsight 的示例,请参阅 将 HDInsight 连接到本地网络 文档。

什么是 SSH 隧道

安全外壳 (SSH) 隧道将本地计算机上的某个端口连接到 HDInsight 的头节点。 发送到本地端口的流量通过 SSH 连接路由到头节点。 该请求会被处理,就像它源自头节点一样。 然后,响应将通过隧道路由回工作站。

先决条件

  • SSH 客户端。 有关详细信息,请参阅使用 SSH 连接到 HDInsight (Apache Hadoop)

  • 可配置为使用 SOCKS5 代理的 Web 浏览器。

    Warning

    内置于 Windows Internet 设置中的 SOCKS 代理支持不支持 SOCKS5,并且不适用于本文档中的步骤。 以下浏览器依赖于Windows代理设置,目前不适用于本文档中的步骤:

    • Microsoft Edge
    • Azure Internet Explorer

使用 SSH 命令创建隧道

使用以下命令通过 ssh 命令创建 SSH 隧道。 将 sshuser 替换为你的 HDInsight 群集的 SSH 用户,并将 CLUSTERNAME 替换为你的 HDInsight 群集的名称:

ssh -C2qTnNf -D 9876 sshuser@CLUSTERNAME-ssh.azurehdinsight.cn

此命令创建一个连接,用于通过 SSH 将流量路由到本地端口 9876 到群集。 选项包括:

选项 Description
D 9876 将流量通过隧道路由的本地端口。
C 压缩所有数据,因为 Web 流量主要是文本。
2 强制 SSH 仅尝试协议版本 2。
q 静默模式。
T 禁用伪终端分配,因为你只是转发端口。
n 防止读取 STDIN,因为你只是转发端口。
N 不要执行远程命令,因为你只是转发端口。
f 在后台运行。

命令完成后,发送到本地计算机上的端口 9876 的流量将路由到群集头节点。

使用 PuTTY 创建隧道

PuTTY 是用于Windows的图形 SSH 客户端。 如果不熟悉 PuTTY,请参阅 PuTTY 文档。 使用以下步骤通过 PuTTY 创建 SSH 隧道:

创建或加载会话

  1. 打开 PuTTY 并确保左侧菜单中选择 “会话 ”。 如果已保存会话,请从 “已保存的会话 ”列表中选择会话名称,然后选择“ 加载”。

  2. 如果还没有保存的会话,请输入连接信息:

    财产 价值
    主机名(或 IP 地址) HDInsight 群集的 SSH 地址。 例如, mycluster-ssh.azurehdinsight.cn
    港口 22
    连接类型 SSH
  3. 选择“保存

    HDInsight 创建 putty 会话。

  4. 在对话框左侧的 “类别 ”部分中,展开 “连接”,展开 SSH,然后选择“ 隧道”。

  5. 提供有关 控制 SSH 端口转发格式的选项 的以下信息:

    财产 价值
    源端口 要转发的客户端上的端口。 例如 9876
    目的地 HDInsight 群集的 SSH 地址。 例如, mycluster-ssh.azurehdinsight.cn
    动态 启用动态 SOCKS 代理路由。

    PuTTY 隧道配置选项。

  6. 选择 “添加” 以添加设置,然后选择“ 打开 ”以打开 SSH 连接。

  7. 出现提示时,登录到服务器。

在浏览器中使用隧道

Important

本部分中的步骤使用 Mozilla Firefox 浏览器,因为它在所有平台上提供相同的代理设置。 其他新式浏览器(如 Google Chrome)可能需要扩展(如 FoxyProxy)才能使用隧道。

  1. 将浏览器配置为使用 localhost 和创建隧道时使用的端口作为 SOCKS v5 代理。 下面是 Firefox 设置的外观。 如果使用的端口不同于 9876,请将端口更改为所使用的端口:

    firefox 浏览器代理设置。

    Note

    选择 远程 DNS 会使用 HDInsight 群集解析域名系统(DNS)请求。 此设置使用群集的头节点解析 DNS。

  2. 通过访问站点(例如 https://www.whatismyip.com/)来验证隧道是否正常工作。 返回的 IP 应由Azure数据中心使用。

使用 Ambari Web UI 进行验证

建立群集后,使用以下步骤验证是否可以从 Ambari Web 访问服务 Web UI:

  1. 在浏览器中,转到 http://headnodehost:8080headnodehost 地址通过隧道发送到集群,并解析到运行 Ambari 的头节点。 出现提示时,输入群集的管理员用户名(管理员)和密码。 Ambari Web UI 可能会再次提示你。 如果是,请重新输入信息。

    Note

    使用 http://headnodehost:8080 地址连接到群集时,将通过隧道进行连接。 使用 SSH 隧道而不是 HTTPS 保护通信。 若要使用 HTTPS 通过 Internet 进行连接,请使用 https://clustername.azurehdinsight.cn,其中 clustername 是群集的名称。

  2. 从 Ambari Web UI 中,从页面左侧列表中选择 HDFS。

    已选择 Apache Ambari HDFS 服务。

  3. 显示 HDFS 服务信息时,选择“ 快速链接”。 此时会显示群集头节点的列表。 选择其中一个头节点,然后选择 NameNode UI

    QuickLinks 菜单展开后的图像。

    Note

    选择 “快速链接”时,可能会获得等待指示器。 如果 Internet 连接速度缓慢,则可能会出现此情况。 等待一两分钟,以便从服务器接收数据,然后再次尝试该列表。

    快速链接 ”菜单中的某些条目可能被屏幕右侧截断。 如果是这样,请使用鼠标展开菜单,并使用向右键向右滚动屏幕以查看菜单的其余部分。

  4. 将显示类似于下图的页面:

    Hadoop NameNode UI 的图像。

    Note

    请注意此页面的 URL;它应该类似于 http://hn*.randomcharacters.cx.internal.chinacloudapp.cn:8088/cluster。 此 URI 使用节点的内部完全限定域名(FQDN),并且只能在使用 SSH 隧道时访问。

后续步骤

了解如何创建和使用 SSH 隧道后,请参阅以下文档了解使用 Ambari 的其他方法: