Oozie Java Action使用委托令牌访问Hive Server 2(Kerberized)

时间:2015-08-15 00:25:55

标签: hive token oozie delegation

目前我遇到一个问题确实需要一些帮助。 我们正在尝试对我们的hadoop集群进行kerberize,包括hive server2和oozie。我的oozie作业在数据节点中旋转了一个java动作,该动作试图连接到kerberized hive服务器2。 没有用户的kerberos密钥表进行身份验证。所以我只能在java动作中使用oozie传递的委托令牌连接到hive服务器2。 我的问题是:有没有办法在oozie java动作中使用委托令牌连接到hive服务器2?如果是这样,我怎么能通过hive JDBC来做到这一点? 谢谢 Jary

1 个答案:

答案 0 :(得分:6)

在kerberized集群中使用Oozie时......

  • for a&#34; Hive&#34;或&#34;猪&#34;操作,您必须配置<credentials> 输入 HCat
  • for a&#34; Hive2&#34;操作(刚刚与V4.2一起发布)您必须配置 Hive2
  • 类型的<credentials>
  • for a&#34; Java&#34;操作打开到HiveServer2的自定义JDBC连接, 我担心Oozie无法帮助 - 除非有一个无证件的黑客可以重用这个新的Hive2凭证吗?!

参考:Oozie documentation about Kerberos credentials

AFAIK你不能在HiveServer2上使用Hadoop委托令牌。 HS2使用Thrift管理客户端连接,Thrift支持Kerberos;但是Hadoop委托代币是不同的(Kerberos从未用于分布式计算,需要一种解决方法)

您可以做的是在您的&#34; Java&#34;中提供一整套GSSAPI配置,包括密钥表。行动。它有效,但有一些警告:

  1. Hadoop Auth库似乎在本地票证上是硬连线的 以非常蹩脚的方式缓存;如果你必须连接到HDFS和 HiveServer2,然后首先执行HDFS,因为只要JDBC启动 根据您的自定义配置自己的票,Hadoop Auth将被破坏
  2. Kerberos配置很棘手,GSSAPI配置更糟,从那以后 这些是安全功能,错误消息不是很多 有用的,设计(告诉黑客为什么他们的入侵会很糟糕 尝试被拒绝了)
  3. 尽可能使用OpenJDK;默认情况下,Sun / Oracle JVM具有 加密的限制(因为愚蠢和过时的美国 导出策略)所以你必须下载2个JAR,其中包含&#34;无限制 强度&#34;加密设置替换默认设置
  4. 参考:我发现另一个StackOverflow post非常有助于设置&#34; raw&#34;连接到HiveServer2时的Kerberos身份验证;加上一个关于very helpful "trace flag"的链接,用于调试GSSAPI配置,例如。

    -Djava.security.debug=gssloginconfig,configfile,configparser,logincontext
    

    最终警告:Kerberos是黑魔法。它会吸走你的灵魂。更具有说服力的是,它会让你失去很多工作日来讨论神秘的配置问题,团队士气会受到影响。我们一直在那里。