我们正在将现有(生产CDH 5.8群集)oozie + hive2作业迁移到新的CDH 5.8群集。遗憾的是,迁移后hive2操作失败并出现以下错误。
错误:无法使用JDBC Uri打开客户端传输: jdbc:hive2://xxxxx.yyy.net:10000 / default:Peer表示失败: DIGEST-MD5:IO错误获取\密码(状态= 08S01,代码= 0)
有人可以帮我理解以下错误消息的原因吗?
答案 0 :(得分:0)
默认的Hive Kerberos委派令牌存储方法可能会导致在某些环境中使用Oozie HiveServer2操作失败。 Cloudera建议使用org.apache.hadoop.hive.thrift.ZooKeeperTokenStore,或者连接到负载均衡器后面的单个HiveServer2实例,以避免此连接失败。
当负载均衡器前端使用多个HiveServer2实例时,Oozie Hive2操作可以启动连接并在第一个HiveServer2上获取委托令牌,然后由于负载平衡,在制作时获得与下一个HiveServer2的另一个连接查询。这会导致第二个连接失败。
对于HiveMetaStore HA,建议使用DBTokenStore而不是ZookeeperTokenStore,以便更好地支持对HiveMetaStore的大量请求。对于HiveServer2 HA,使用ZookeeperTokenStore,直到DBTokenStore在CDH中与HIVE-12270一起稳定。
CM> Hive>配置>用于hive-site.xml的HiveServer2高级配置代码段(安全阀)并输入:
<property>
<name>hive.cluster.delegation.token.store.class</name>
<value>org.apache.hadoop.hive.thrift.ZooKeeperTokenStore</value>
</property>
CM&gt; Hive&gt;配置&gt;用于hive-site.xml的Hive Metastore Server高级配置代码段(安全阀)并输入:
<property>
<name>hive.cluster.delegation.token.store.class</name>
<value>org.apache.hadoop.hive.thrift.DBTokenStore</value> </property>
(如果您已将“Hive Metastore委托令牌存储”设置为“org.apache.hadoop.hive.thrift.DBTokenStore”,则此选项可以选择)