本方案包含 hive-1.2 集群,新建的 hive-3.1集群(上面存储的表和库信息可以删除,升级之后和 hive-1.2 公用一个元数据库)。hive-1.2 集群使用的 mysql 数据库迁移到新的地址。升级 hive 1.2 元数据库到 3.1。升级之后,hive-1.2 集群和 hive-3.1 集群共同使用同一个 mysql。一个集群可以看到并操作另一个集群存储在 BOS 上的数据。
以下是操作步骤:
停止方法:使用命令systemctl stop hive-metastore
或者通过 ambari 操作。
systemctl stop hive-metastore
systemctl stop hive-server2
停止 hive metastore 后,集群所有的访问 hive 的任务都会报错。
mysqldump -h ${MYSQL_HOST} -uhive '-p${MYSQL_PASSWD}' hive > hive-1.2.bak
登录新的数据库
mysql -h ${NEW_MYSQL_HOST} -uhive '-p${MYSQL_PASSWD}'
创建目标数据库
create datbase hive;
导入数据到新的数据库。
mysql -h ${NEW_MYSQL_HOST} -uhive '-p${MYSQL_PASSWD}' hive < hive-1.2.bak
${NEW_MYSQL_HOST} 是数据库新的地址。
systemctl stop hive-metastore
systemctl stop hive-server2
按需要修改以下配置。
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>${MYSQL_PASSWD}</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://${NEW_MYSQL_HOST}/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
在 hive-3.1 集群 metastore 所在服务器,使用 hive 用户下执行以下操作, ${NEW_MYSQL_HOST}是新 mysql 数据库所在的服务器 IP 地址。
cd /opt/bmr/hive/scripts/metastore/upgrade/mysql
mysql -uhive '-p${MYSQL_PASSWD}' -h ${NEW_MYSQL_HOST} hive
source upgrade-1.2.0-to-2.0.0.mysql.sql;
source upgrade-2.0.0-to-2.1.0.mysql.sql;
source upgrade-2.1.0-to-2.2.0.mysql.sql;
source upgrade-2.2.0-to-2.3.0.mysql.sql;
source upgrade-2.3.0-to-3.0.0.mysql.sql;
source upgrade-3.0.0-to-3.1.0.mysql.sql;
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>${MYSQL_PASSWD}</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://${NEW_MYSQL_HOST}/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>
Enforce metastore schema version consistency.
True: Verify that version information stored in is compatible with one from Hive jars. Also disable automatic
schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
proper metastore schema migration. (Default)
False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
</description>
</property>
systemctl start hive-metastore
systemctl start hive-server2
hive-1.2 集群恢复正常。
systemctl start hive-metastore
systemctl start hive-server2
hive-3.1 集群恢复正常。
从停止 hive-metastore 起,到 hive metastore 和 hive server 启动之间,所有的 Hive 任务都不能运行。
升级之后,只能在 hive-3.1 集群创建 hive 数据库。