Hive无法启动:创建路径/ Hive /cluster/delegation/METASTORE/keys出错



我在使用kerberos的集群上遇到了一个问题,hive无法启动。

症状:

  • 服务启动成功(未停止)
  • 在Ambari出现了一个警告,提到Hive metastore失败
  • 在命令行上启动hive不成功(它一直挂着)
  • 通过直线,我能够看到元数据,但没有得到实际数据

我在/var/log/hive/hivemetastore.log

中发现以下错误
2016-08-29 10:12:49,047 ERROR [main]: metastore.HiveMetaStore (HiveMetaStore.java:main(5934)) - Metastore Thrift Server threw an exception...
org.apache.hadoop.hive.thrift.DelegationTokenStore$TokenStoreException: Error creating path /hive/cluster/delegation/METASTORE/keys
    at org.apache.hadoop.hive.thrift.ZooKeeperTokenStore.ensurePath(ZooKeeperTokenStore.java:166)
    at org.apache.hadoop.hive.thrift.ZooKeeperTokenStore.initClientAndPaths(ZooKeeperTokenStore.java:236)
    at org.apache.hadoop.hive.thrift.ZooKeeperTokenStore.init(ZooKeeperTokenStore.java:469)
    at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server.startDelegationTokenSecretManager(HadoopThriftAuthBridge.java:444)
    at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:6015)
    at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:5930)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: org.apache.zookeeper.KeeperException$AuthFailedException: KeeperErrorCode = AuthFailed for /hive/cluster/delegation/METASTORE/keys
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:123)
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
    at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
    at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:691)
    at org.apache.curator.framework.imps.CreateBuilderImpl$11.call(CreateBuilderImpl.java:675)
    at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107)
    at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:672)
    at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:453)
    at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:443)
    at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:423)
    at org.apache.curator.framework.imps.CreateBuilderImpl$3.forPath(CreateBuilderImpl.java:257)
    at org.apache.curator.framework.imps.CreateBuilderImpl$3.forPath(CreateBuilderImpl.java:205)
    at org.apache.hadoop.hive.thrift.ZooKeeperTokenStore.ensurePath(ZooKeeperTokenStore.java:160)
    ... 11 more

请注意,我实际上尝试了几种方法,所以我不确定这是否是完整的解决方案,但这里是最后一步,我认为这是关键的一步:

经过长时间的搜索,我间接找到了这个网站:https://community.hortonworks.com/articles/49040/hive-metastore-crashes-on-nullpointerexception-wit.html

下面是帮助我解决问题的相关片段:

这是一个已知的问题,正在跟踪以下Hortonworks bug:

https://hortonworks.jira.com/browse/bug - 42602

处理:

将hive.cluster. delegate .token.store.class设置如下:

hive.cluster.delegation.token.store.class = org.apache.hadoop.hive.thrift.DBTokenStore

如果使用Ambari,这个设置可以通过点击Hive来改变服务,导航到"配置"选项卡,然后的"高级Hive-site"部分修改参数蜂巢配置。保存修改并从Ambari用户重新启动Hive界面提示。

如果不使用ambari,此设置可以位于/etc/hive/conf/hive-site.xml文件。确保进行了此更改集群中所有适用的节点。更改完成后Hive服务必须重启

最新更新