cdh集群hive升级,数据不丢失

1.下载hive-1.2.1安装包 http://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz

2.将安装包传到集群所有节点上

3.所有节点root用户下

cd /opt/cloudera/parcels/CDH/lib/hive
mkdir lib121

4.所有节点解压 apache-hive-1.2.1-bin.tar.gz

5.所有节点将解压出来hive/lib下所有文件拷贝到lib121

6.Coudera 界面停止Hive服务,如果安装了Hue,Ozzie,Impala先停掉再停掉Hive

6.所有节点修改HIVE_LIB变量 HIVE_LIB=${HIVE_HOME}/lib ==> HIVE_LIB=${HIVE_HOME}/lib121

vim /opt/cloudera/parcels/CDH/lib/hive/bin/hive

7.所有节点更新hadoop上jline jar包,并删除老的jlien jar包

ln -s /opt/cloudera/parcels/CDH/lib/hive/lib121/jline-2.12.jar /opt/cloudera/parcels/CDH/lib/hadoop-yarn/lib/jline-2.12.jar

rm -rf /opt/cloudera/parcels/CDH/lib/hadoop-yarn/lib/jline-0.94.jar

8.元数据节点备份MySQL中hive元数据库

mysqldump -uroot -hhserver -padmin123 hive > hive013.sql

9.元数据节点进入mysql

create database hive013 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on *.* to 'root'@'hserver' identified by 'admin123' with grant option;
flush privileges;
use hive013;
source hive013.sql;

10.元数据节点升级Hive元数据库

升级前查看升级脚本,评估影响,特别是生产环境,根据业务需求更改过元数据的,如果是接手别人的,那就比较苦逼了,每个元数据库表结构都要看一遍。

如果没有动过就直接升级就好

cd /home/dp/apache-hive-1.2.1-bin/scripts/metastore/upgrade/mysql
mysql -uroot -hhserver -padmin123
use hive;
source upgrade-0.13.0-to-0.14.0.mysql.sql;
source upgrade-0.14.0-to-1.1.0.mysql.sql;
source upgrade-1.1.0-to-1.2.0.mysql.sql;
exit

11.cloudera 管理界面启动Hive服务

12.任意节点

hive #进入前hive shell界面
show databases;  
use testupdate;
show tables;
select * from test1;  #查看是否原来的数据还在
insert into test1 values("AAAA","BBBB","CCCC");
select * from test1;

hive支持行级操作了!

参考了https://blog.csdn.net/xjping0794/article/details/77542096

原文地址:https://www.cnblogs.com/kcxg/p/11099848.html