r语言 - 与Kerberos的Sparklyr Livy连接



我能够通过Livy服务连接到非Kerberized Spark集群,而不会从远程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(?(。

我是否缺少任何其他可能的配置?

注意:与授权用户从外壳kinit后,RStudio 服务器 (web( 返回相同的错误。

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

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

如果你的集群不允许传出的互联网连接,你还应该首先将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/

最新更新