当前位置: 首页 > news >正文

【运维】hive 终端突然不能使用:Hive Schema version does not match metastore‘s schema version

文章目录

  • 一. 问题描述
  • 二. 常规排查
    • 1. 元数据库
    • 2. hive-site.xml相关meta连接信息检查
  • 三. 正解

一. 问题描述

进入hive终端,执行如下命令报错:

hive> show tables;
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException:
java.lang.RuntimeException: Unable to instantiate
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient*

Error “Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient”
字面意思就是无法实例化hive Metastore client端。

 

二. 常规排查

先朝着hive的一些配置入手排查:

1. 元数据库

hive元数据库是否初始化,库是否正常存在,hive的元数据配置在mysql:
在这里插入图片描述

元数据库没有问题,且相关库表也都存在,说明进行了初始化,并且hive元数据没有丢失。

注意:

如果元数据不存在,或者库已经损坏,这可以删除库之后,重新进行初始化:
schematool -dbType mysql -initSchema

 

2. hive-site.xml相关meta连接信息检查

在这里插入图片描述

连接信息ok,到此说明我们在安装、配置hive时是没有问题的,接着分析日志。

 

三. 正解

查看hive运行日志:

MetaException(message:Hive Schema version 3.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:84)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:93)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8661)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8656)at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:8926)at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:8843)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:239)at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
Caused by: MetaException(message:Hive Schema version 3.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:9063)at org.apache.hadoop.hive.metastore.ObjectStore.verifySchema(ObjectStore.java:9027)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:97)at com.sun.proxy.$Proxy25.verifySchema(Unknown Source)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:697)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:690)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:767)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:538)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:80)... 11 more 

关键信息:

(message:Hive Schema version 3.1.0 does not match metastore’s schema version 1.2.0 Metastore is not upgraded or corrupt)

简单的说,hive schema和metastore的schema版本不一致,通过分析相关堆栈方法:checkSchema、verifySchema,基本可以了解,在执行hive shell命令之前,hive会校验hive schema和metastore的schema的版本,如果版本不一致则直接抛出异常导致命令不可使用。
 

而这个问题是在使用一段时间之后突然出现的,那我们暂时可以认为,hive schema和metastore的schema版本不一致,不会影响hive的正常使用,而这个问题可以:

add below properties in hive-site.xml.

<property><name>hive.metastore.schema.verification</name><value>false</value>
</property>

即配置禁用版本验证来解决问题。

 

配置好之后,重新进入hive,执行命令,问题解决。

http://www.lryc.cn/news/107069.html

相关文章:

  • P1049 [NOIP2001 普及组] 装箱问题
  • QCustomPlot获取选点坐标
  • Qt配置Android开发
  • 花费7元训练自己的GPT 2模型
  • 性能分析工具
  • 1.netty介绍
  • 【Jmeter】压测mysql数据库中间件mycat
  • leetcode原题 路径总和 I II III(递归实现)
  • 【css】css设置表格样式-边框线合并
  • 使用Flutter的image_picker插件实现设备的相册的访问和拍照
  • 数学建模体系
  • 13.7 CentOS 7 环境下大量创建帐号的方法
  • HTML5 Canvas(画布)
  • io的异常处理以及properties
  • Linux下基于Dockerfile构建镜像应用(1)
  • JS中常见的模块管理规范梳理
  • 3维空间下按平面和圆柱面上排版设计
  • 【Spring框架】Spring AOP
  • 寻找旋转排序数组中的最小值——力扣153
  • 安卓逆向 - 基础入门教程
  • 验证码安全志:AIGC+集成环境信息信息检测
  • R-Meta分析教程
  • 【3维视觉】3D空间常用算法(点到直线距离、面法线、二面角)
  • Nodejs 第四章(Npm install 原理)
  • [深度学习] GPU处理能力(TFLOPS/TOPS)
  • js:获取浏览器默认语言
  • 【U8+】用友U8重新注册加密锁,提示:写卡失败,请重新配置客户端控件。
  • uniapp小程序console.log在微信开发者工具中不打印问题
  • 从零基础开始开发自己的第一个微信小程序
  • 无涯教程-Lua - Arrays(数组)