如何通过kerberos keytab通过r与hive连接?

kcugc4gi  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(484)

我试图通过r远程连接到配置单元服务器,并使用kerberos密钥表文件执行身份验证。
.jcall(“rjavatools”,“ljava/lang/object;”中出错invokemethod“,cl,:java.io.ioexception:antonio登录失败。silva@hadooprealm.local 从keytab c:/users/antonio.silva/desktop/jars/antonio.silva.keytab:javax.security.auth.login.loginexception:null(68)
但是当我尝试通过keytab登录用户时,出现了错误。


# loading libraries

library("RJDBC")

hadoop.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hadoop/"), pattern = "jar", full.names = T)
hive.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hive/"), pattern = "jar", full.names = T)
class.path = c(hadoop.class.path,hive.class.path)
.jinit(classpath=class.path)
conf = .jnew("org.apache.hadoop.conf.Configuration")
conf$set("hadoop.security.authentication", "kerberos")
ugi = J("org.apache.hadoop.security.UserGroupInformation")
ugi$setConfiguration(conf)
path = "C:/Users/antonio.silva/Desktop/jars/antonio.silva.keytab"
ugi$loginUserFromKeytab('antonio.silva@HADOOPREALM.LOCAL', path)

我做错了什么?

tzcvj98z

tzcvj98z1#

我找到了解决方案,结果是,我需要将mit kerberos conf文件(krb5.conf)放在java目录“~\java\jre1.8.0\u 192\lib\security”中。
在将文件粘贴到目录中之后,我能够成功地执行连接并连接到配置单元服务器,除了前面发布的代码外,还使用了以下代码:

drv <- JDBC("org.apache.hive.jdbc.HiveDriver")
conn <- dbConnect(drv, "jdbc:hive2://hivename:10000/default;principal=hive/_HOST@HADOOPREALM.LOCAL")

当需要通过r执行到hdfs的连接时,这个凭证验证是有效的,在这里我给出了一个关于连接的答案,以及使用r在hdfs服务器中读写文件所需的配置。
hdfs配置:如何通过r访问hdfs?

相关问题