我已经spark-3.1.1-bin-without-hadoop
跑了hadoop-3.2.2
我们的主机网络如下所示:
host.dc.example.com
-- 主机在dc
数据中心的主要接口host.vlan.dc.example.com
-- 主机在数据中心的 VLAN 接口
当我在客户端模式或集群模式下运行 Spark 作业时,资源管理器 ( rm.vlan.dc.example.com
) 无法代理运行在客户端和节点管理器上的应用程序管理器。
发生的情况是 AM 检查启动它的本地主机名。说出client.dc.example.com
并根据该地址向 RM 发送一个 URL。当 RM 尝试通过该 URL 访问 UI 时,AM 将重定向发送回 RM。然后 RM 显示此消息:
application_1627338936990_0014 的应用程序主将资源管理器的 Web 代理的请求重定向回 Web 代理,这意味着您查看应用程序主的 Web UI 的请求无法完成。此错误的典型原因是网络配置错误,导致资源管理器的 Web 代理主机解析为应用程序主控主机上的意外 IP 地址。请联系您的集群管理员解决问题。
rm.vlan.dc.example.com
但是,如果我手动将 AM URL 更改为表单,我可以从 RM 系统 () 访问 UI am.vlan.dc.example.com
。
似乎 AM 假设:
- URL 将映射到系统的默认主机名。
- 除非来自 VLAN 接口,否则访问将被拒绝。
如果我将客户端的主机名从 更改为client.dc.example.com
,client.vlan.dc.example.com
那么我可以通过资源管理器查看 Spark UI。
一种解决方法是更改数据中心的客户端和 NodeManager 系统的所有主机名,但这可能会造成破坏。
这种行为似乎在不同版本的 Spark 中发生了变化。