【问题标题】:sparklyr livy connection with Kerberossparklyr 与 Kerberos 的联系
【发布时间】:2017-11-26 19:39:17
【问题描述】:

我能够通过 Livy 服务连接到非 Kerberized 的 spark 集群,而不会在 remote Rstudio 桌面(Windows)中出现问题。

但是,如果启用了 Kerberos 安全性,则连接失败:

library(sparklyr)
sc <- spark_connect("http://host:8998", method = "livy")

返回

Error in livy_validate_http_response("Failed to create livy session",  : 
Livy operation is unauthorized. Try spark_connect with config = livy_config()

使用sparklyr_0.5.6-9002 和 MIT Kerberos for Windows 进行身份验证。

另一方面,从集群内部(即通过curl)连接是成功的。

我做错了什么?此类连接需要哪些额外设置?

livy_config(..., username, password) 配置似乎只形成了一个Authorization: Basic ... 标头,尽管在这里我怀疑应该需要NegotiateKerberos(?)。

我还缺少其他可能的配置吗?

注意:使用授权用户从 shell 中kinit'ing 后,RStudio 服务器(web)返回相同的错误。

【问题讨论】:

  • livy 服务器应该配置为启动,如下所示。
  • 在 livy.conf 文件中,你应该输入livy.server.launch.kerberos.principal = XXX, livy.server.launch.kerberos.keytab = XXX, livy.server.auth.kerberos.principal = 'XXX', livy.server.auth.kerberos.keytab = spnego keytab`。请参考henning.kropponline.de/2016/11/06/…
  • @KangrokLee 感谢您的回复! livy 已正确配置(我可能忘记在帖子中提及,将编辑),您建议的设置已设置,并且 livy 在集群内工作正常(即来自 RStudio Server 或 curl)。尝试从 Windows 上的远程 Rstudio 桌面连接时会出现上述问题。
  • 你有没有得到这个工作?
  • @ansek 不,不是直接通过 Kerberos。但是,一种解决方法是通过Knox GatewayLivy added as a service 连接。这样 Kerberos 由集群内的 Knox 处理,而从远程 Rstudio 桌面客户端只需要 Basic 身份验证(通过 SSL,所以看起来还不错)。请注意,在我的情况下,它还需要对 sparklyr 的源代码进行一些小的调整,但不确定它是否已通过最新更新修复。

标签: r kerberos sparklyr livy


【解决方案1】:

我来晚了,但我遇到了同样的问题,终于能够解决它。这可能对其他人有用。

当然,这在很大程度上取决于您的集群配置。我正在使用sparklyr 1.5.0 和 MIT Kerberos for Windows,直接连接到在 Cloudera HDP 集群(Spark 2.3.0)中运行的 Livy(无 Knox 代理)。在我的情况下,需要一个额外的 HTTP 标头,见下文。

如果您的集群不允许传出 Internet 连接,您还应该首先将 SparklyR 服务器端 jar 保存在 HDFS 上(默认情况下会自动从 GitHub 下载)。

library(sparklyr)
SPARK_VERSION = "2.3.0"

lcfg = livy_config(
  negotiate = TRUE, 
  custom_headers = list("X-Requested-By"="<user_name>"))
lcfg$sparklyr.livy.jar = "hdfs:///path/to/sparklyr-2.3-2.11.jar"

sc = spark_connect(
  master = "http://livyserver:8999", method = "livy", 
  version = SPARK_VERSION,
  config = lcfg)

对于调试,第一步可能是在集群外测试您的 Livy 设置但没有 R:请参阅 https://livy.apache.org/examples/

【讨论】:

  • 看起来很有希望,一有机会就试试看!附带说明一下,您是否可以直接访问 Kerberos 服务器?后来我注意到许多问题来自通过 ssh 隧道(在 hosts 文件中使用正确的 fqdn)使用 Kerberos,这有时会导致 GSS 协商出现问题。
  • 我在 VPN 上,没有 SSH 隧道,所以无法说明这个问题
猜你喜欢
  • 2017-12-18
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 2011-02-08
  • 2012-07-06
  • 1970-01-01
相关资源
最近更新 更多