我可以通过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进行身份验证。
另一方面,从 in 群集(即通过curl
)连接成功。
我做错了什么?此类连接需要哪些其他设置?
livy_config(..., username, password)
配置似乎只构成了Authorization: Basic ...
标头,但我怀疑应该要求Negotiate
或Kerberos
(?) 。
我还缺少其他可能的配置吗?
注意:在具有授权用户的shell kinit
之后,从RStudio Server(Web)返回相同的错误。
答案 0 :(得分:1)
我来晚了,但是我遇到了同样的问题,终于解决了。这可能对其他人有用。
当然,这可能很大程度上取决于您的集群配置。我正在使用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)
对于调试,第一步可能是在集群外部但没有R的情况下测试Livy设置:请参见https://livy.apache.org/examples/