我正在尝试将Spark应用程序连接到HBase并启用Kerberos . Spark版本是1.5.0,CDH 5.5.2并且它以纱线群集模式执行 .
初始化HbaseContext时,会抛出此错误:
ERROR ipc.AbstractRpcClient:SASL身份验证失败 . 最可能的原因是凭据丢失或无效 . 考虑'kinit' . javax.security.sasl.SaslException:GSS启动失败[由GSSException引起:未提供有效凭据(机制级别:无法找到任何Kerberos tgt)]
我试图在代码中进行身份验证,添加:
UserGroupInformation.setConfiguration(config)
UserGroupInformation.loginUserFromKeytab(principalName, keytabFilename)
我在spark-submit中使用--files选项分发keytab文件 . 现在,错误是:
java.io.IOException:来自keytab krb5.usercomp.keytab的usercomp@COMPANY.CORP登录失败:javax.security.auth.login.LoginException:无法从用户获取密码...引起:javax.security.auth .login.LoginException:无法从com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:856)获取用户的密码
这是从Spark应用程序连接到Kerberized HBase的方法吗?
3 回答
如果您遗漏了像hadoop.security.authentication这样的内容,请参阅下面的示例配置
实际上尝试将你的hbase-site.xml直接放在边缘节点的SPARK_CONF目录中(应该是/ etc / spark / conf或/ etc / spark2 / conf) .
你可以使用
loginUserFromKeytabAndReturnUGI
和uig.doAs
或者你可以把你的hbase类路径放到
SPARK_DIST_CLASSPATH
.