首页 文章

如何使用Kerberos将spark应用程序连接到安全HBase

提问于
浏览
3

我正在尝试将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 回答

  • 1

    如果您遗漏了像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");
    
  • 0

    实际上尝试将你的hbase-site.xml直接放在边缘节点的SPARK_CONF目录中(应该是/ etc / spark / conf或/ etc / spark2 / conf) .

  • 0

    你可以使用 loginUserFromKeytabAndReturnUGIuig.doAs

    或者你可以把你的hbase类路径放到 SPARK_DIST_CLASSPATH .

相关问题