身份验证—如何使用kerberos将spark应用程序连接到安全的hbase

3lxsmp7m  于 2021-06-09  发布在  Hbase
关注(0)|答案(3)|浏览(642)

我正在尝试将spark应用程序连接到启用kerberos的hbase。spark版本为1.5.0,cdh5.5.2,在Yarn簇模式下执行。
初始化hbasecontext时,它会抛出以下错误:
错误ipc.abstractrpcclient:sasl身份验证失败。最可能的原因是凭据丢失或无效。考虑“kinit”。javax.security.sasl.saslexception:gss initiate failed[由gssexception引起:未提供有效凭据(机制级别:找不到任何kerberos tgt)]
我尝试在代码中进行身份验证,并添加:

UserGroupInformation.setConfiguration(config)
UserGroupInformation.loginUserFromKeytab(principalName, keytabFilename)

我使用spark submit中的--files选项分发keytab文件。现在,错误是:
java.io.ioexception:的登录失败usercomp@company.corp 从keytab krb5.usercomp.keytab:javax.security.auth.login.login异常:无法从用户获取密码。。。
原因:javax.security.auth.login.login异常:无法从com.sun.security.auth.module.krb5loginmodule.promptforpass(krb5loginmodule)上的用户处获取密码。java:856)
这是从spark应用程序连接到kerberized hbase的方法吗?

mzsu5hc0

mzsu5hc01#

如果缺少hadoop.security.authentication之类的内容,请参阅下面的示例配置

val conf= HBaseConfiguration.create()
conf.set("hbase.zookeeper.quorum", "list of ip's")
conf.set("hbase.zookeeper"+ ".property.clientPort","2181");
conf.set("hbase.master", "masterIP:60000");
conf.set("hadoop.security.authentication", "kerberos");
p3rjfoxz

p3rjfoxz2#

你可以用 loginUserFromKeytabAndReturnUGI ,和 uig.doAs 或者你可以把你的hbase类路径 SPARK_DIST_CLASSPATH .

yebdmbv4

yebdmbv43#

实际上,尝试将hbase-site.xml直接放在edge节点的spark\ conf目录中(应该类似于/etc/spark/conf或/etc/spark2/conf)。

相关问题