【大数据技术】搭好的集群使用Spark-SQL连接Hive后,无法再次正常启动hive并查询数据
背景&现象
以前一直正常使用的hadoop+hive集群,在使用spark-sql 连接hive后,hive可正常启动但无法正常查询数据
排查分析
1、查看hadoop集群及hive进程是否正常
此时,查看进程都是正常的,hadoop集群正常,hive进程也是正常的
2、分析报错信息,找出直接原因:hive metastore服务未能成功启动
“ SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient ” 分析这个报错原因,知这是因为hive的metastore服务未能启动成功导致的,故新开一个terminal,尝试手动启动 ,启动命令“ ./bin/hive --service metastore & ”
3、手动启动hive metastore服务失败,发现是VERSION表内容异常
发现“MetaException(message:Hive Schema version 2.3.0 does not match metastore’s schema version 1.2.0 Metastore is not upgraded or corrupt)” ,发现是schema版本不一致导致metastore 服务启动失败
然后参阅网上的资料发现在hive的元数据里有一张表VERSION,其SCHEMA_VERSION值已经被修改为1.2.0 ,此内容与hive安装版本里的schema不一致,故启动是失败
4、修改元数据表VERSION
此时因前面报错信息里说是2.3.0,所以将SCHEMA_VERSION更新成2.3.0,切勿随意填写或用hive的版本 update VERSION set SCHEMA_VERSION = ‘2.3.0’ where VER_ID = 1 ;
5、重新启动hive ,故障排除
hive可启动成功,并且成功读取到数据
总结
这个集群之前只安装了hive,一直正常使用,近段时间按照部署里SparkSQL,并且使用sparkSQL连接了hive元数据,即在sparkSQL里读取hive表并跑任务,此时spark会修改元数据里VERSION 表的版本信息,再启动hive,就会启动metastore服务失败,即本文所述的问题。
参考了: https://www.it610.com/article/1297546101867487232.htm https://blog.csdn.net/qq_39579408/article/details/86526757
|