5

我可以通过 Livy 服务连接到非 Kerberized 火花集群,而不会出现远程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-9002MIT Kerberos for Windows 进行身份验证。

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

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

livy_config(..., username, password)配置似乎只形成了一个Authorization: Basic ...标题,但在这里我怀疑应该需要aNegotiate或(?) 。Kerberos

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

kinit注意:使用授权用户从 shell中返回相同的错误。

4

1 回答 1

1

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

当然,这可能很大程度上取决于您的集群配置。我正在使用sparklyr1.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/

于 2020-11-30T17:32:39.567 回答