从作业实际运行的其他位置访问 Spark Web UI
Posted
技术标签:
【中文标题】从作业实际运行的其他位置访问 Spark Web UI【英文标题】:Accessing Spark Web UI from another place than where the job actually ran 【发布时间】:2015-07-09 13:48:47 【问题描述】:我有一个带有 1 个主 9nodes 的 spark 集群。我在独立模式下运行。我无法从集群中的任何节点访问 Web 浏览器(我通过 ssh 连接到节点——它是一个 grid5000 集群)。 我想知道,在这种情况下是否有可能访问 Spark Web UI?我尝试通过在我的本地机器上的 SPARK_PATH/work 中从集群中复制日志(给人的印象是在集群中运行的作业是在我的本地机器上运行的)。这个想法是在阅读文档中的这一部分后产生的:
如果应用程序在其生命周期内记录了事件,则独立主机的 Web UI 将在应用程序完成后自动重新呈现应用程序的 UI。
但它没有工作。我在 UI 中看到的是:
应用程序:0 正在运行,0 已完成 驱动程序:0 正在运行,0 已完成 状态:活着
谢谢!
【问题讨论】:
【参考方案1】:您不需要复制任何内容,只需访问主机上的 8080 端口或应用程序机器上的 4040 端口(在应用程序运行时)。如果机器无法从外部访问,则必须通过 SSH 建立隧道。
通过 SSH 建立隧道是一个热门话题,只需搜索即可。我个人使用ssh -D 9999
,然后使用Firefox 和Chrome 都存在的FoxyProxy 插件将localhost:9999
设置为代理。
【讨论】:
如果我不能直接ssh到master怎么办?首先,我必须 ssh 到前端,然后从该前端到 master。我可以做 ssh 隧道吗? 如果您可以通过 SSH 连接到浏览器可以访问主服务器的机器,那么这就足够了。如果前端机器无法访问主端口的 8080 端口,那么您需要另一个隧道。这根本不是问题。你ssh -L9999:localhost:9999
到第一台机器,然后ssh -D9999
到第二台机器。然后可以在浏览器中设置localhost:9999
为代理。
所以我一直在尝试这样做。为了得到我的主人,我首先必须ssh到frontend1,从frontend1我必须ssh到frontend2,从frontend2我可以ssh到master。所以我这样做是这样的:从我的本地 PC: ssh -L 8080:localhost:8080 frontend1;来自前端 1:ssh -L 8080:localhost:8080 前端 2;并来自frontend2 ssh -D 8080 master。我在本地机器上使用 FoxyProxy 并将 localhost:8080 设置为代理。它不起作用..我做错了什么?
哇,多么好的设置!很难说哪里出了问题。也许这是我的建议。我认为网上有很好的设置指南,或者您可以在那里询问系统管理员。 (我的意思是一定有人在管理这个疯狂的配置:)。)你可以尝试的是ssh -L2222:frontend2:22 frontend1
,然后是ssh -p 2222 localhost
。这应该让您登录到frontend2
,通过frontend1
建立隧道。如果这可行,您可以以相同的方式玩,直到到达master
。以上是关于从作业实际运行的其他位置访问 Spark Web UI的主要内容,如果未能解决你的问题,请参考以下文章