Hive安装问题:未初始化Hive Metastore数据库

时间:2016-02-26 15:14:48

标签: hadoop installation hive derby

我尝试在raspberry pi 2上安装配置单元。我通过解压缩压缩的Hive包安装了Hive,并在我创建的hduser用户组下手动配置$ HADOOP_HOME和$ HIVE_HOME。运行配置单元时,我收到以下错误消息: 蜂房

  

ERROR StatusLogger找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台。

     

线程中的异常" main" java.lang.RuntimeException:未初始化Hive Metastore数据库。请使用schematool(例如./schematool -initSchema -dbType ...)来创建架构。如果需要,请不要忘记在JDBC连接字符串中包含自动创建底层数据库的选项(例如,mysql的createDatabaseIfNotExist = true)

所以我运行了上面错误消息中建议的命令: schematool -dbType derby -initSchema 我收到了错误消息:

  

错误:功能' NUCLEUS_ASCII'已经存在。 (状态= X0Y68,代码= 30000)   org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败! Metastore状态会不一致!!    * schemaTool失败*

当我尝试在线谷歌此错误时,似乎没有任何有用的信息。任何关于Hive如何与Derby合作的帮助或任何解释都将不胜感激!

5 个答案:

答案 0 :(得分:119)

安装配置单元后,如果您执行的第一件事是运行配置单元,则配置单元尝试创建/初始化metastore_db,但显然可能无法正确执行。在最初的运行中,您可能看到了错误:

Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

运行配置单元即使失败,也会在运行配置单元的目录中创建一个metastore_db目录:

ubuntu15-laptop: ~ $>ls -l |grep meta
drwxrwxr-x 5 testuser testuser 4096 Apr 14 12:44 metastore_db

所以当你尝试运行时

ubuntu15-laptop: ~ $>schematool -initSchema -dbType derby

Metastore已经存在,但尚未完整。

Soooooo答案是:

  1. 首次运行配置单元之前,请运行

    schematool -initSchema -dbType derby

  2. 如果您已经运行了hive,然后尝试使用initSchema并且它失败了:

    mv metastore_db metastore_db.tmp

  3. 重新开始

    schematool -initSchema -dbType derby

  4. 再次运行配置单元

  5. **另外值得注意的是:如果更改目录,将无法找到上面创建的metastore_db!我确信有一个很好的理由,我还不知道,因为我今天第一次尝试使用蜂巢。啊,这里有关于此的信息:在我运行Hive的任何地方创建了metastore_db

答案 1 :(得分:18)

我使用HomeBrew(MacOS)在/ usr / local / Cellar / hive上安装了hive,然后运行 schematool -dbType derby -initSchema我收到以下错误消息:

启动Metastore架构初始化为2.0.0 初始化脚本hive-schema-2.0.0.derby.sql 错误:FUNCTION'NUCLEUS_ASCII'已存在。 (状态= X0Y68,代码= 30000) org.apache.hadoop.hive.metastore.HiveMetaException:架构初始化失败! Metastore状态会不一致!!

但是,我在安装路径下找不到metastore_db或metastore_db.tmp文件夹,所以我尝试了:

  1. find /usr/ -name hive-schema-2.0.0.derby.sql
  2. vi /usr/local/Cellar/hive/2.0.1/libexec/scripts/metastore/upgrade/derby/hive-schema-2.0.0.derby.sql
  3. 评论'NUCLEUS_ASCII'功能和'NUCLEUS_MATCHES'功能
  4. 重新运行schematool -dbType derby -initSchema,然后一切顺利!
  5. 希望这有助于某人。

答案 2 :(得分:11)

我遇到了类似的问题,我通过删除derby数据库文件rm -Rf $HIVE_HOME/metastore_db

来解决这个问题

请注意,这将完全删除您的架构!

清理旧架构后,我可以重新初始化:

$HIVE_HOME/bin/schematool -initSchema -dbType derby

它可能与您调用hive的位置不同,请尝试转到您的配置单元安装目录并运行./bin/hive

答案 3 :(得分:1)

试试这个: schematool -dbType mysql -initSchema

阅读Hive SchemTool的文档: https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool

答案 4 :(得分:0)

如果使用Derby,则可以删除数据库文件并运行初始化过程。

或者如果问题仍然存在,则可以编辑Hive使用的SQL文件。例如:

/usr/hdp/2.5.6.0-40/hive2/scripts/metastore/upgrade/mysql/包含用于mysql的内容。