我能够通过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 ...
标头,尽管在这里我怀疑应该需要一个Negotiate
或Kerberos
(?(。
我是否缺少任何其他可能的配置?
注意:与授权用户从外壳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/