我创建了一个扩展drivermanagerdatasource的类secureimpaladatasource,并使用 UserGroupInformation.doAs()
使用keytab文件获取到impala的连接。但我得到的错误如下:
java.sql.sqlexception:[simba]impalajdbcdriver初始化或创建用于身份验证的传输时出错:[simba]impalajdbcdriver无法连接到服务器:null。
但是,当我在测试演示中获得与kerberos票证缓存的连接时,我就成功了。有人能帮我吗?
3条答案
按热度按时间pkmbmrz71#
验证jdbc连接的一种方法是使用ugi.doas。以下是示例代码:
lymgl2op2#
结果是我的url中的主机和fqdn不一致。
ekqde3dh3#
忘记hadoop ugi吧:jdbc驱动程序只需要原始jaas配置就可以动态创建kerberos票证(使用
useKeyTab
提高和useTicketCache
降低)。系统属性
java.security.krb5.conf
=>(可选)非defaut kerberos confjava.security.auth.login.config
=>jaas配置文件javax.security.auth.useSubjectCredsOnly
=>必须强制为“false”(默认值在某些java版本中已更改,duh)示例jaas conf文件,impala/hive cloudera驱动程序
这里有一个java风格的windows路径表示法。
示例jaas conf文件,apache配置单元驱动程序
只需将节名从
Client
至com.sun.security.jgss.krb5.initiate
ps:您可以在同一个conf文件中填充多个部分;这意味着您可以定义一个“全局”conf,并将其与多个工具、驱动程序和lib一起使用,并且具有一致的设置。调试
sun.security.krb5.debug
=>设置为“真”java.security.debug
=>设置为“gssloginconfig,configfile,configparser,logincontext”