【发布时间】: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 ... 标头,尽管在这里我怀疑应该需要Negotiate 或Kerberos(?)。
我还缺少其他可能的配置吗?
注意:使用授权用户从 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 Gateway 与Livy added as a service 连接。这样 Kerberos 由集群内的 Knox 处理,而从远程 Rstudio 桌面客户端只需要
Basic身份验证(通过 SSL,所以看起来还不错)。请注意,在我的情况下,它还需要对sparklyr的源代码进行一些小的调整,但不确定它是否已通过最新更新修复。