Zeppelin - 无法实例化SessionHiveMetaStoreClient

时间:2016-11-23 10:34:14

标签: apache-spark hive apache-zeppelin

我想让Zeppelin工作。但是当我两次运行笔记本时,第二次因Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient而失败。 (帖子末尾的完整日志)

这似乎是由于Metastore中的锁定没有被移除。它还建议使用Postgres而不是Hive,因为它允许多个用户在Zeppelin中运行作业。

我制作了一个postgres数据库和hive-site.xml指向这个数据库。我将此文件添加到Zeppelin的config文件夹中,但也添加到Spark的config文件夹中。同样在Zeppelin的jdbc解释器中,我添加了与hive-site.xml中相似的参数。

但问题仍然存在。

错误日志: http://pastebin.com/Jqf9cdtU

hive-site.xml: http://pastebin.com/RZdXHPX4

3 个答案:

答案 0 :(得分:2)

尝试在Spark设置中使用Thrift服务器体系结构,而不是在Hive的单个实例JVM上工作,在那里您无法生成多个会话。

与Hive的连接主要有三种类型:

单个JVM - 在仓库中本地存储的Metastore,不允许多个会话

多个JVM - 每个工作人员都表现为一个Metastore

Thrift服务器架构 - 多个用户可以访问SQL引擎并实现并行性

答案 1 :(得分:0)

停止齐柏林飞艇。转到Apache Zeppelin中的bin文件夹,然后尝试删除metastore_db

sudo rm -r metastore_db/

再次启动Zeppelin并立即尝试。

答案 2 :(得分:0)

 Another instance of Derby may have already booted the database

默认情况下,spark使用derby作为元数据存储,只能为一个用户提供服务。看来你启动了多个spark解释器,这就是为什么你看到上面的错误信息。所以这里有两个解决方案

  1. 如果您不需要配置单元,则通过将zeppelin.spark.useHiveContext设置为false来禁用spark解释器中的配置单元。
  2. 设置支持多个用户的配置单元存储库。请参阅此https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_ig_hive_metastore_configure.html