我正在使用 Google Compute Engine 在 Hadoop 上运行 Mapreduce 作业(几乎所有默认配置)。在运行作业时,我得到一个形式为http://PROJECT_NAME:8088/proxy/application_X_Y/的跟踪 URL,但它无法打开。我忘了配置什么吗?
3 回答
要详细说明使用 Google Compute Engine VM 的“外部 IP 地址”的另一个答案中提到的选项 Amal,您可以通过运行gcloud compute instances describe --zone <your zone> <your master hostname>
并查找来获取外部 IP 地址natIP
。
要打开端口 8088,您必须设置打开该端口的防火墙规则,可能在您的default
Google Compute Engine 网络上。您需要在 中指定一个your.ip.address.here/32
地址,--source-ranges
以将传入流量限制为仅拨入您的 VM 的本地计算机,否则 IP 源范围内的任何人都可以访问您的 Hadoop 页面。
如果您曾经bdutil
打开集群,还有一种更简单、更安全的替代方法;简单地运行
bdutil <your flags used in deployment, like -e hadoop2, --prefix, etc.> socksproxy
使用动态端口转发打开 SSH 以用作浏览器可以指向的 SOCKS5 代理。如果您在 Linux 或 Mac 上运行并安装了 Chrome 或 Firefox,bdutil 还应该打印出一个复制/粘贴命令来启动一个新的隔离浏览器,该浏览器预先配置为使用 socks 代理,以便您可以单击所有有用的链接.
如果 bdutil 没有打印出浏览器命令或者您没有使用 bdutil,您还可以使用这些说明运行和配置您的 SSH socks 代理。基于 SSH 的 socks 代理比打开防火墙端口更安全,并且还允许 Hadoop 页面链接工作(否则您必须手动将主机名替换为外部 IP 地址)。
一更正。您正在使用 YARN。所以没有jobtracker。Jobtracker 存在于 hadoop 1.x 中。在 YARN 中,处理层变成了一个通用框架,jobtracker 被 Resource manager 和 application master 取代。您在问题中提到的 UI 是资源管理器。对于您的问题,请尝试以下提示。
使用资源管理器实例的公共 IP 地址而不是 PROJECT_NAME。
检查 8088 端口是否开放以便从外部访问。
另一种(更安全)的方法是使用 gcloud compute 为您的部署建立一个 ssh 隧道,然后通过它启动 Chrome。
$ gcloud compute ssh clustername --zone=us-central1-a --ssh-flag="-D 1080" --ssh-flag="-N" --ssh-flag="-n"
您需要将 clustername 替换为您的部署名称,并在必要时更改 --zone。
从那里,您可以通过它启动 Chrome,然后访问 hadoop 作业跟踪 URL。
$ chrome --proxy-server="socks5://localhost:1080" \
--host-resolver-rules="MAP * 0.0.0.0 , \
EXCLUDE localhost" --user-data-dir=/tmp/clustername