当我连接到ireport时,如果say在配置单元shell中显示表,则会出现以下错误:元数据错误:java.lang.runtimeexception:无法示例化org.apache.hadoop.hive.metastore.hivemetastoreclient失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1
hfwmuf9z1#
一种可能是hadoop没有运行。在本地服务器上执行简单的单节点hadoop集群时,我遇到了同样的问题。每次启动计算机时,都必须手动启动hadoop节点,然后hive才能连接到它们。尝试运行$hadoop\u home/bin/stop-all.sh如果输出显示没有要停止的节点,则表示hadoop没有启动,在本例中,请运行$hadoop\u主页/bin/start-all.sh然后Hive和你就可以走了。(这是使用默认的derby数据库。显然,如果您使用的是mysql,那么您也可以从一些连接器配置中得到这个错误(请参阅其他答案)。编辑:实际上,我发现的另一件事是,每当启动hive时,hive都需要创建metastore\u db目录,但它是在运行hive的路径中创建的。如果在运行配置单元的目录中没有写入权限,则可能会遇到上述错误。要解决这个问题,可以在hive-site.xml中设置一个配置,使这个目录成为绝对目录而不是相对目录。请看这里:无论我在哪里运行配置单元,都会创建metastore\u db
8fsztsew2#
感谢您对jdbc驱动程序的回答。我将oracle用于配置单元元存储,因此:$cp$oracle\u home/jdbc/lib/ojdbc6.jar$hive\u home/lib/ojdbc6.jar
ygya80vv3#
我被告知,如果配置单元控制台未正确终止,通常会出现此异常。解决方法:运行jps命令,查找“runjar”进程并使用kill-9命令杀死它
esyap4oy4#
错误消息在配置单元中非常重要。当我将creds添加到conf/hive-site.xml中时,我没有注意到预先存在的username/password元素,因此当我添加自己的元素时,它们没有被使用,最后我得到了与上面相同的不伦不类的消息。如果您运行metatool命令,它会堆栈跟踪,您会得到这个结果,在我的例子中,它指出了真正的原因。我希望这能帮助其他人:
mfellows@matt.mit /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)
bvjxkvbb5#
您是否已将包含元数据数据库的jdbc驱动程序的jar复制到hive的lib dir中?例如,如果您使用mysql来保存元数据数据库,您将需要复制 mysql-connector-java-5.1.22-bin.jar 进入 $HIVE_HOME/lib .这为我修正了同样的错误。
mysql-connector-java-5.1.22-bin.jar
$HIVE_HOME/lib
de90aj5v6#
无法示例化org.apache.hadoop.hive.metastore.hivemetastoreclient通常,这表示配置单元元存储服务未正确启动。但是您粘贴的错误消息没有包含足够的信息来定位问题的确切原因。事实上,有相当多的原因,可能会导致这个错误,因为答案张贴的其他作者都涉及到一个特定的方面。我的建议是:快跑 hive --service metastore 命令以获取更详细、更有针对性的错误消息,然后相应地解决问题。您也可以参考/tmp/user\u name/hive.log日志文件。
hive --service metastore
6条答案
按热度按时间hfwmuf9z1#
一种可能是hadoop没有运行。在本地服务器上执行简单的单节点hadoop集群时,我遇到了同样的问题。每次启动计算机时,都必须手动启动hadoop节点,然后hive才能连接到它们。
尝试运行$hadoop\u home/bin/stop-all.sh
如果输出显示没有要停止的节点,则表示hadoop没有启动,在本例中,请运行
$hadoop\u主页/bin/start-all.sh
然后Hive和你就可以走了。
(这是使用默认的derby数据库。显然,如果您使用的是mysql,那么您也可以从一些连接器配置中得到这个错误(请参阅其他答案)。
编辑:实际上,我发现的另一件事是,每当启动hive时,hive都需要创建metastore\u db目录,但它是在运行hive的路径中创建的。如果在运行配置单元的目录中没有写入权限,则可能会遇到上述错误。要解决这个问题,可以在hive-site.xml中设置一个配置,使这个目录成为绝对目录而不是相对目录。
请看这里:
无论我在哪里运行配置单元,都会创建metastore\u db
8fsztsew2#
感谢您对jdbc驱动程序的回答。我将oracle用于配置单元元存储,因此:
$cp$oracle\u home/jdbc/lib/ojdbc6.jar$hive\u home/lib/ojdbc6.jar
ygya80vv3#
我被告知,如果配置单元控制台未正确终止,通常会出现此异常。解决方法:
运行jps命令,查找“runjar”进程并使用kill-9命令杀死它
esyap4oy4#
错误消息在配置单元中非常重要。当我将creds添加到conf/hive-site.xml中时,我没有注意到预先存在的username/password元素,因此当我添加自己的元素时,它们没有被使用,最后我得到了与上面相同的不伦不类的消息。
如果您运行metatool命令,它会堆栈跟踪,您会得到这个结果,在我的例子中,它指出了真正的原因。我希望这能帮助其他人:
bvjxkvbb5#
您是否已将包含元数据数据库的jdbc驱动程序的jar复制到hive的lib dir中?
例如,如果您使用mysql来保存元数据数据库,您将需要复制
mysql-connector-java-5.1.22-bin.jar
进入$HIVE_HOME/lib
.这为我修正了同样的错误。
de90aj5v6#
无法示例化org.apache.hadoop.hive.metastore.hivemetastoreclient
通常,这表示配置单元元存储服务未正确启动。但是您粘贴的错误消息没有包含足够的信息来定位问题的确切原因。
事实上,有相当多的原因,可能会导致这个错误,因为答案张贴的其他作者都涉及到一个特定的方面。
我的建议是:快跑
hive --service metastore
命令以获取更详细、更有针对性的错误消息,然后相应地解决问题。您也可以参考/tmp/user\u name/hive.log日志文件。