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