2013-01-22 61 views
3

得到错误,当我连接到利用iReport,那么如果在蜂巢外壳发言权节目表,这个错误来了:在蜂巢

错误元数据:了java.lang.RuntimeException:无法实例 org.apache.hadoop.hive.metastore.HiveMetaStoreClient失败:执行 错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回码1

回答

7

有复制包含JDBC驱动程序的jar为您的元数据db到Hive的lib目录中?

举例来说,如果你使用MySQL的握住你的元数据数据库,你无线本地环路需要

mysql-connector-java-5.1.22-bin.jar复制到$HIVE_HOME/lib

这为我解决了同样的错误。

+1

我已经更改了hive-default.xml文件,以便将mysql设置为metastore_db.and也将mysql-connector-java-5.1.22-bin.jar粘贴到$ HIVE_HOME/lib中,但不知何故它不反映在配置单元中。 –

+0

您对'hive-default.xml.template'所做的任何更改都将被忽略。你应该对'hive-site.xml'进行修改。 – Chris

+0

您可能需要将jar(删除版本)重命名为mysql-connector-java.jar – viper

2

一种可能性是您的hadoop没有运行。我在本地执行简单的一个节点hadoop集群时遇到了同样的问题。每次启动计算机时,都必须在配置单元可以连接到它们之前手动启动hadoop节点。

尝试运行$ HADOOP_HOME /斌/ stop-all.sh

如果输出表示没有节点停止,这意味着你的Hadoop没有达到,在这种情况下,运行

$ HADOOP_HOME/bin/start-all.sh

然后蜂巢,你应该很好去。

(这是使用默认的derby数据库。显然,如果您使用的是mysql,那么您也可以从某些连接器配置中获取此错误(请参阅其他答案))。

编辑: 事实上,我发现的另一件事是,当你启动配置单元时,Hive需要创建一个metastore_db目录,但它会在配置单元运行的路径中创建它。如果您在运行配置单元的目录中没有写权限,则可能会遇到上述错误。为了解决这个问题,你可以在hive-site.xml中设置一个配置,使得这个目录是绝对的而不是相对的。

在这里看到:

metastore_db created wherever I run Hive

2

错误消息在蜂巢是巨大的。当我将creds添加到conf/hive-site.xml中时,我没有注意到预先存在的用户名/密码元素,所以当我添加自己的用户名时,他们没有被使用,并且我最终得到了与上面相同的不起眼的消息。

如果你运行metatool命令它堆栈跟踪,你会得到这个,在我的情况下指出真正的原因。我希望这可以帮助别人:

[email protected] /usr/local/hive-0.11.0-bin $ bin/metatool -listFSRoot 
Initializing HiveMetaTool.. 
13/06/05 21:44:43 INFO metastore.ObjectStore: ObjectStore, initialize called 
13/06/05 21:44:43 ERROR DataNucleus.Plugin: Bundle "org.eclipse.jdt.core" requires "org.eclipse.core.resources" but it cannot be resolved. 
13/06/05 21:44:43 ERROR DataNucleus.Plugin: Bundle "org.eclipse.jdt.core" requires "org.eclipse.core.runtime" but it cannot be resolved. 
13/06/05 21:44:43 ERROR DataNucleus.Plugin: Bundle "org.eclipse.jdt.core" requires "org.eclipse.text" but it cannot be resolved. 
13/06/05 21:44:43 INFO DataNucleus.Persistence: Property datanucleus.cache.level2 unknown - will be ignored 
13/06/05 21:44:43 INFO DataNucleus.Persistence: Property javax.jdo.option.NonTransactionalRead unknown - will be ignored 
13/06/05 21:44:43 INFO DataNucleus.Persistence: ================= Persistence Configuration =============== 
13/06/05 21:44:43 INFO DataNucleus.Persistence: DataNucleus Persistence Factory - Vendor: "DataNucleus" Version: "2.0.3" 
13/06/05 21:44:43 INFO DataNucleus.Persistence: DataNucleus Persistence Factory initialised for datastore  URL="jdbc:mysql://localhost/hive_metastore" driver="com.mysql.jdbc.Driver" userName="APP" 
13/06/05 21:44:43 INFO DataNucleus.Persistence: =========================================================== 
13/06/05 21:44:44 ERROR Datastore.Schema: Failed initialising database. 
Access denied for user 'APP'@'localhost' (using password: YES) 
org.datanucleus.exceptions.NucleusDataStoreException: Access denied for user 'APP'@'localhost' (using password: YES) 
    at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:536) 
1

有人告诉我,一般我们得到这个异常,如果我们蜂巢控制台没有正确结束。 的修复:

运行JPS命令,寻找“RunJar”的过程,并使用 kill -9命令

+0

谢谢..我有同样的问题 – Harinder

1

感谢上述关于JDBC驱动程序的答案杀死它。我使用的是Oracle的蜂巢Metastore,因此:

$ CP $ ORACLE_HOME/JDBC/LIB/ojdbc6.jar $ HIVE_HOME/lib中/ ojdbc6.jar

2

无法实例org.apache.hadoop .hive.metastore.HiveMetaStoreClient

在一般情况下,这表明蜂房metastore服务未正常启动。但是,您粘贴的错误消息不包含足够的信息来查找问题的确切原因。
事实上,有很多原因可能导致这个错误,因为其他作者发布的答案都与某个特定方面有关。
我的建议是:运行hive --service metastore命令以获得更详细和有针对性的错误消息,然后相应地解决问题。您也可以参考/tmp/user_name/hive.log日志文件。