启用 SSL 后,Spark UI 不使用 HTTPS,而是通过 HTTP 转发到端口 0

Posted

技术标签:

【中文标题】启用 SSL 后,Spark UI 不使用 HTTPS,而是通过 HTTP 转发到端口 0【英文标题】:When SSL is enabled, Spark UI doesn't use HTTPS, but forwards to port 0 over HTTP 【发布时间】:2020-04-14 23:31:32 【问题描述】:

我们使用的是 Spark 2.0.2 和 Hadoop 3.2.1。我已经在 Hadoop 上配置了 SSL,没有任何问题。但 Spark 遇到了一些麻烦。

没有 SSL,我可以启动作业并查看通过 Yarn 代理的 Spark UI。

启用 SSL 后,我仍然可以启动作业并运行完成,但无法访问 Spark Web UI。 Yarn 链接到 ApplicationMaster 代理,该代理失败并显示 java.net.ConnectException: Connection refused (Connection refused)

挖掘作业的标准输出,我看到这样的行:

2020-04-14 16:21:57,258 INFO server.ServerConnector: Started ServerConnector@1484944fHTTP/1.10.0.0.0:40809
2020-04-14 16:21:57,303 INFO server.ServerConnector: Started ServerConnector@799e8b3aSSL-HTTP/1.10.0.0.0:36015
2020-04-14 16:21:57,303 INFO server.Server: Started @5614ms
2020-04-14 16:21:57,304 INFO util.Utils: Successfully started service 'SparkUI' on port 40809.
2020-04-14 16:21:57,309 INFO ui.SparkUI: Bound SparkUI to 0.0.0.0, and started at https://10.10.75.40:40809

如果我打电话给https://10.10.75.40:40809,我会收到一个错误,指出它不是 SSL。

如果我致电 http://10.10.75.40:40809,我会收到虚假重定向到端口 10.10.75.40:0。

如果我调用 https://10.10.75.40:36015 并忽略证书错误,或者如果我通过正确的主机名调用,我会被重定向到 RM 的 :8090/proxy/redirect,这会再次引发 500 错误。

我的配置包括:

spark.ssl.enabled                 true
spark.ssl.keyStore                /etc/sslmate/STAR.mtv.qxxxxxxxxd.com.jks
spark.ssl.keyStorePassword        _the password_
spark.ssl.trustStore              /etc/sslmate/STAR.mtv.qxxxxxxxxd.com.jks
spark.ssl.trustStorePassword      _the password_
spark.ssl.protocol                TLSv1.2

我也尝试过显式设置端口,但无济于事:

spark.ssl.ui.port                 4440
spark.ssl.history.port            18480
spark.ui.driver.port              2020
spark.ssl.ui.driver.port          2420

【问题讨论】:

【参考方案1】:

我无法通过 Apache 找到此文档,但我发现 a note from MapR 让我工作:

在 YARN 上运行 Spark 时不需要 Spark UI SSL,因为 YARN 协议提供了加密。要禁用 Spark SSL,请将 spark.ssl.ui.enabled false 添加到每个 spark 节点上的 spark-defaults.conf 文件中。

以这种方式配置时,ResourceManager 通过:8090/proxy/redirect 类型的 URL 正确提供 Spark UI。在stderr 中,我看到了以下几行的输出:

2020-04-14 17:36:38,098 INFO server.ServerConnector: Started ServerConnector@7ef020c8HTTP/1.10.0.0.0:45951
2020-04-14 17:36:38,098 INFO server.Server: Started @7871ms
2020-04-14 17:36:38,107 INFO util.Utils: Successfully started service 'SparkUI' on port 45951.
2020-04-14 17:36:38,113 INFO ui.SparkUI: Bound SparkUI to 0.0.0.0, and started at http://10.10.31.230:45951

【讨论】:

以上是关于启用 SSL 后,Spark UI 不使用 HTTPS,而是通过 HTTP 转发到端口 0的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 SSL 配置的情况下使用 spring boot 和 tomcat 启用 http2

启用 SSL 证书后,woocommerce 结帐时仍然出现 SSL 连接错误

window服务器禁用默认的ssl2.0和ssl3.0只启用启用tls1.2保证安全

启用 ChangeDetectionStrategy.OnPush 后 UI 不更新

启用/禁用 mod_ssl 后 Apache 无法启动

为 XAMPP 启用 SSL 后 Apache 无法启动