{
String driverName = "com.cloudera.hive.jdbc4.HS2Driver";
conf.set("hadoop.security.authentication", "kerberos");
info("Getting Connection");
UserGroupInformation.setConfiguration(conf);
info("Getting Connection"); `info("Getting Connection");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("****@***.***.COM","etc/****.keytab");
Class.forName(driverName); info("Getting Connection");
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000;AuthMech=1;KrbRealm=EXAMPLE.COM;KrbHostFQDN=hs2.example.com;KrbServiceName=hive");
info("Got Connection");
}
{String driverName=“com.cloudera.hive.jdbc4.hs2driver”;
conf.set(“hadoop.security.authentication”,“kerberos”);info(“获取连接”);usergroupinformation.loginuserfromkeytab(“***@..com”,“etc/****.keytab”);
class.forname(driverName);info(“获取连接”);Connection con=
drivermanager.getconnection(“
配置单元JDBC驱动程序不使用Hadoop Auth库,因为它们应该能够从集群外部连接,并且对Hadoop库的依赖性最小。
因此,在实践中,您的UGI设置被忽略。
但是配置单元JDBC驱动程序使用Thrift客户机库,它支持Kerberos身份验证的原始JAAS配置。
在命令行上使用系统道具的示例:
java -Djava.security.krb5.conf=/etc/krb5.conf \
-Djava.security.auth.login.config=./my_jaas.conf \
*****
示例“my_jaas.conf”获取私有Kerberos票证(不是从缓存读取,也不是写入缓存),并在keytab文件中提供密码:
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule
required
useTicketCache=false
doNotPrompt=true
useKeyTab=true
keyTab="file:/some/path/to/my_login.keytab"
principal="my_login@MY.REALM"
debug=true;
};
请注意,上面的语法适用于Sun/Oracle JDK和OpenJDK,但不适用于使用不同语法的IBM JDK。
它也不适用于DataDirect连接器(随Oracle、IBM、Microstrategy等一起提供),后者在conf中需要一个特定的“subject”。
就这样了。当检测到URL请求Kerberos连接时,JDBC驱动程序将自动调用JAAS,而JAAS将处理这些脏活累活。
ps:调试安全配置问题是一个麻烦,但您有几个属性可以启用调试跟踪:
-Dsun.security.krb5.debug=true
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext
我不知道我应该给的用户名和密码是什么。我必须在某个配置文件中添加凭据(用户名和密码)吗?
问题是,我被问到的这些用户名和密码是什么,我可以在哪里找到他们或者设置他们? 提前致谢
keytab和principl似乎都是正确的。我可以成功运行命令 有谁能进一步帮我。我被这个问题困扰了将近一个星期。如果需要,我可以提供更多的信息。
我已经使用JDBC api连接到HIVE2,这里提到,它是成功的,所以为了方便访问,我想到创建一个webapp,使用JSP作为前端页面来输入服务器名称和查询。虽然从JSP页面到servlet的所有参数都被正确解析,但它在连接到配置单元服务器时引发了一个错误,这是将libthrift和配置单元JAR放置在WEB-INF/lib目录中的必要条件,我同时放置在WEB-INF/lib和classpath中
我使用下面提到的连接URL连接到蜂巢服务器使用直线。 !连接jdbc: hive2://sandbox.hortonworks.com:21000/default; ssl=true; sslTrustStore=/var/lib/Knox/data-2.3.2.0-2950/Security/keystore/gateway.jks; Trust StorePassword=Knox?hive.
当我在oozie中执行spark进程时,我有以下错误。找不到数据库。 这是我的火花配置