升级主要说明:
1.为避免升级前后数据偏差,关闭一切写入表的操作 ,【实际采用了并行执行,并未中断写入,只是copy 一份份元数据,升级后,再回补新数据库缺失的数据】
2.hive升级:2.1–>2.3.7 我们元数据库是mysql 2.1 emr集群上执行以下命令:
cd /usr/lib/hive/scripts\metastore\upgrade\mysql/
mysql -h host -P 3306 -u litbaws -p 密码 hive < upgrade-2.1.0-to-2.2.0.mysql.sql
mysql -h host -P 3306 -u litbaws -p 密码 hive < upgrade-2.2.0-to-2.3.0.mysql.sql
执行sql 有可 能会报错,请注意报错问题,并查看对元数据有影响,为保证正确,每个版本升级后,请备份 方便回滚,切记:一个版本 接着一个版本迭代。【主要涉及到一些表字段的添加,删除 类型改变等】
执行完后,修改hive-site.xml
<property>
<name>hive.metastore.uris</name>
<value>thrift:// your metastore's host :9083</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://your host :3306/hive?createDatabaseIfNotExist=true</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.mariadb.jdbc.Driver</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>your username</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value> your password </value>
<description>password to use against metastore database</description>
</property>
2.2 重启hive 元数据服务: hive --service metastore
2.3重启hive hiveserver2:hive --service hiveserver
2 2.4启动hive客户端 ,验证是否升级成功。