CDH6.2.1 中hive版本是2.1.1 ,但是业务需要使用 merge into 语句 ,这个语句 hive2.2 才开始支持,所以需要去升级一下hive
1、下载新版Hive
这里使用hive2.3.9 国内镜像网站
#进入下载目录
cd /opt/cloudera
#下载hive包
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
#解压
tar -xvf apache-hive-2.3.9-bin.tar.gz
2、停止Hive服务
停止hive服务
3、备份Mysql中的Hive元数据
mysqldump -uroot -p123456 hive > ./hive.sql
4、替换CDH中的Hive lib 和 scripts 文件夹
#修改lib文件夹名,方便升级失败回滚
mv /opt/cloudera/parcels/CDH/lib/hive/lib /opt/cloudera/parcels/CDH/lib/hive/lib2.1
#创建新的文件夹
mkdir /opt/cloudera/parcels/CDH/lib/hive/lib
#复制新的lib
cp -r /opt/cloudera/apache-hive-2.3.9-bin/lib/* /opt/cloudera/parcels/CDH/lib/hive/lib4
#修改scripts文件夹名,方便升级失败回滚
mv /opt/cloudera/parcels/CDH/lib/hive/scripts /opt/cloudera/parcels/CDH/lib/hive/scripts2.1
#创建新的文件夹
mkdir /opt/cloudera/parcels/CDH/lib/hive/scripts
#复制新的scripts
cp -r /opt/cloudera/apache-hive-2.3.9-bin/scripts/* /opt/cloudera/parcels/CDH/lib/hive/scripts
5、升级元数据
mysql升级脚本在 hive 的 scripts/metastore/upgrade/mysql 下 根据自己的版本和要升级的版本选择以下脚本(不可跳级升级)
选择适合自己的mysql升级脚本
进入mysql,执行升级脚本,如果提示找不到脚本可以把所有脚本放到mysql 的bin 目录下
-- 以下是登录mysql 后执行的语句
--切换database
use hive;
--执行2.1.0 升级 2.2.0
source upgrade-2.1.0-to-2.2.0.mysql.sql
--执行2.2.0 升级 2.3.0
source upgrade-2.2.0-to-2.3.0.mysql.sql
6、查看软连接是否正常
替换lib后可能会导致/opt/cloudera/parcels/CDH/jars 文件夹下的链接失效,最终导致impala等组件无法正常使用,通过 ls -l 命令查看是否有失效链接,如果有可在 /opt/cloudera/parcels/CDH/lib/hive/lib 目录下使用 ln -s 命令重建jar包的软链接
7、查看更新后的版本
hive --version
可以看到版本已经更新为新的版本
查看升级后的版本
8、升级其他服务器的Hive
在其他需要升级的服务器完成 lib 和 scripts 文件夹的备份后可以使用scp命令复制第一台服务器的文件(备份参考步骤4)
#远程复制lib
scp -r user@192.168.0.1:/opt/cloudera/parcels/CDH/lib/hive/lib /opt/cloudera/parcels/CDH/lib/hive/
#远程复制scripts
scp -r user@192.168.0.1:/opt/cloudera/parcels/CDH/lib/hive/scripts /opt/cloudera/parcels/CDH/lib/hive/
9、启动Hive服务并验证
启动hive,并验证元数据
验证元数据
10、结束语
因为升级hive4.0alpha 版和 hive3.X 失败,所以退而求其次做了小版本升级,后续仍然会去研究怎么升级到更高的版本,因为对于工程师来说 生命不息折腾不止
升级后问题汇总
1、impala启动失败
显示找不到hive包下的class ,检查impala lib下的jar包,是不是有失效的软连接,重新制作相关链接
2、hive-on-yarn 使用spark引擎计算失败
遇到以下错误
ERROR exec.Utilities: Failed to load plan: hdfs://localhost:8020/tmp/hive/hdfs/579ec692-62f8-4b9f-8ab5-345f40f460d0/hive_2022-04-24_14-31-45_953_8734198960701968697-2/-mr-10003/3e09a7ca-0e19-482e-89e6-9dfd52e903a0/map.xml: org.apache.hive.com.esotericsoftware.kryo.KryoException: Unable to find class: ll_record
Serialization trace:
aliasToPartnInfo (org.apache.hadoop.hive.ql.plan.MapWork)
org.apache.hive.com.esotericsoftware.kryo.KryoException: Unable to find class: ll_record
Serialization trace:
aliasToPartnInfo (org.apache.hadoop.hive.ql.plan.MapWork)
可能是因为spark lib 中的hive包不是最新,CDH 中可以将以下目录中的jar包替换为最新版
/opt/cloudera/parcels/CDH/lib/spark/hive 作者:天山铜铑 https://www.bilibili.com/read/cv16263155 出处:bilibili
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




