与 Kerberos 的闪亮连接

Nut*_*tle 5 kerberos r sparklyr livy

我可以通过 Livy 服务连接到非 Kerberized Spark集群,而不会出现来自远程Rstudio 桌面(Windows)的问题。

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

library(sparklyr)
sc <- spark_connect("http://host:8998", method = "livy")
Run Code Online (Sandbox Code Playgroud)

回来

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

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

在另一方面,从群集(即,通过curl)连接成功。

我究竟做错了什么?这种连接需要哪些额外设置?

livy_config(..., username, password)配置似乎只形成一个Authorization: Basic ...头,但这里笔者还是怀疑NegotiateKerberos(?)应该不是必需的。

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

注意:kinit在使用授权用户从 shell 运行后,从 RStudio Server (web) 返回相同的错误。

Pie*_*mme 1

我参加聚会迟到了,但我遇到了同样的问题,并且终于能够解决它。这对其他人可能有用。

当然,这可能在很大程度上取决于您的集群配置。我正在使用sparklyr1.5.0 和 MIT Kerberos for Windows,直接连接到在 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)
Run Code Online (Sandbox Code Playgroud)

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