实验环境
Ubuntu16.04;
Hive1.2.1(旧);
Hive2.3.1(新);
实际操作
按照之前安装hive1.2的方法,将相关配置文件复制过来,不在赘述。
需要具体步骤的,可以在文章末尾的公众号上回复[hive安装]获得完整版的安装文件以及hive教程。
将hive2.3重新安装一遍就完事了吗?当然不是。
我们发现,安装完启动 hive 命令后,出现如下报错:
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
根据此报错查找,网上所罗列的教程都是进入到 $HIVE_HOME/scripts/metastore/upgrade/mysql目录下启动 mysql 进行升级。
此类解决方案参考文档:
若通过上述 1 2可以解决报错是最好的,如若不然,请看下面终极方案。
终极方案–肯定成功
- 命令行执行
hive --service metastore判断元数据是否匹配,笔者出现如下报错。
Exception in thread "main" MetaException(message:Hive Schema version 2.3.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:83)
at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:92)
at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6883)
at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6878)
- 进入
$HIVE_HOME/scripts/metastore/upgrade/mysql/目录下,手动创建表格,及metastore.
cd $HIVE_HOME/scripts/metastore/upgrade/mysql/
< Login into MySQL >
mysql> drop database IF EXISTS <metastore db name>;
mysql> create database <metastore db name>;
mysql> use <metastore db name>;
mysql> source hive-schema-2.x.x.mysql.sql;
- 再次执行
hive --service metastore
此时,是不是很酷呢?
**注意:**最后的方法会使得老版本里的元数据丢失。
参考文档–stackoverflow
谈风月之余谈技术

Hive1.2升级至2.3完全指南

本文详细记录了从Hive1.2.1版本升级至Hive2.3.1版本的全过程,包括配置文件迁移、常见错误排查与解决方法,特别是元数据不匹配的问题及终极解决方案。
508

被折叠的 条评论
为什么被折叠?



