在配置单元中获取错误

xmq68pz9  于 2021-06-04  发布在  Hadoop
关注(0)|答案(6)|浏览(421)

当我连接到ireport时,如果say在配置单元shell中显示表,则会出现以下错误:
元数据错误:java.lang.runtimeexception:无法示例化org.apache.hadoop.hive.metastore.hivemetastoreclient失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1

hfwmuf9z

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

8fsztsew

8fsztsew2#

感谢您对jdbc驱动程序的回答。我将oracle用于配置单元元存储,因此:
$cp$oracle\u home/jdbc/lib/ojdbc6.jar$hive\u home/lib/ojdbc6.jar

ygya80vv

ygya80vv3#

我被告知,如果配置单元控制台未正确终止,通常会出现此异常。解决方法:
运行jps命令,查找“runjar”进程并使用kill-9命令杀死它

esyap4oy

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)
bvjxkvbb

bvjxkvbb5#

您是否已将包含元数据数据库的jdbc驱动程序的jar复制到hive的lib dir中?
例如,如果您使用mysql来保存元数据数据库,您将需要复制 mysql-connector-java-5.1.22-bin.jar 进入 $HIVE_HOME/lib .
这为我修正了同样的错误。

de90aj5v

de90aj5v6#

无法示例化org.apache.hadoop.hive.metastore.hivemetastoreclient
通常,这表示配置单元元存储服务未正确启动。但是您粘贴的错误消息没有包含足够的信息来定位问题的确切原因。
事实上,有相当多的原因,可能会导致这个错误,因为答案张贴的其他作者都涉及到一个特定的方面。
我的建议是:快跑 hive --service metastore 命令以获取更详细、更有针对性的错误消息,然后相应地解决问题。您也可以参考/tmp/user\u name/hive.log日志文件。

相关问题