目前我遇到一个问题确实需要一些帮助。 我们正在尝试对我们的hadoop集群进行kerberize,包括hive server2和oozie。我的oozie作业在数据节点中旋转了一个java动作,该动作试图连接到kerberized hive服务器2。 没有用户的kerberos密钥表进行身份验证。所以我只能在java动作中使用oozie传递的委托令牌连接到hive服务器2。 我的问题是:有没有办法在oozie java动作中使用委托令牌连接到hive服务器2?如果是这样,我怎么能通过hive JDBC来做到这一点? 谢谢 Jary
答案 0 :(得分:6)
在kerberized集群中使用Oozie时......
<credentials>
输入 HCat <credentials>
参考:Oozie documentation about Kerberos credentials
AFAIK你不能在HiveServer2上使用Hadoop委托令牌。 HS2使用Thrift管理客户端连接,Thrift支持Kerberos;但是Hadoop委托代币是不同的(Kerberos从未用于分布式计算,需要一种解决方法)
您可以做的是在您的&#34; Java&#34;中提供一整套GSSAPI配置,包括密钥表。行动。它有效,但有一些警告:
参考:我发现另一个StackOverflow post非常有助于设置&#34; raw&#34;连接到HiveServer2时的Kerberos身份验证;加上一个关于very helpful "trace flag"的链接,用于调试GSSAPI配置,例如。
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext
最终警告:Kerberos是黑魔法。它会吸走你的灵魂。更具有说服力的是,它会让你失去很多工作日来讨论神秘的配置问题,团队士气会受到影响。我们一直在那里。