Cloudera Manager和CDH minor版本 tar包升级方案
1 概述
升级分为Cloudera Manager管理工具升级和CDH组件升级。Cloudera Manager管理工具可使用tarball方式升级,CDH组件可使用parcels升级。
CDH和Cloudera Manager不用同时升级,但需保证Cloudera Manager和CDH版本的兼容。Cloudera Manager可以管理当前或以前的major版本的CDH,或相同minor版本的CDH,或较低minor版本的CDH。比如,Cloudear Manager 5.7.1可以管理CDH5.7.2,CDH5.6.1和CDH4.8.6,但是不能管理CDH5.8.1。Cloudera Manager5.x不能管理CDH3.x。
一般需要规划一个足够长的维护窗口(停机时间)进行升级。根据需要升级的组件,集群的节点数,以及不同的硬件情况,需要一天来进行升级。开始升级之前,你需要做好一些前置条件准备以及关键数据备份。
CDH升级一共有三种版本的升级:major大版本,minor 次版本和maintenance维护版本。
升级建议:
- 针对CDH的Maintenance Version升级,可以使用滚动升级,比如:5.15.x升级到5.15.y,这种版本升级主要修复bug,不改动API,也不涉及新的功能。
- 针对CDH的Minor Version升级,建议停机升级或者滚动升级(如果跨度不大),比如5.x.x升级到5.y.y,这种版本升级主要是增加新的功能和新的API。
- 针对CDH的Major Version升级,建议必须停机升级,而且在升级前需要对已有应用和作业的改造和升级进行完备的测试验证,相应升级时停机时间会较长,这种版本升级一般是Hadoop相关组件的大版本升级,可能会改动API。
本次升级方案面向minor版本升级。
minor版本升级是指基于同样的major版本将minor版本进行升级,比如从5.4.x升级到5.8.x,一般有以下特征: - 新的功能
- Bug修复
- 可能存在的数据库schema更改会在Cloudera Manager升级时自动被处理
CDH5.16.2修复的问题列表
2 升级准备工作
以下是本次测试环境,但不是本操作手册的硬限制:
- 操作系统:CentOS 7.4
- 旧CM/CDH版本:CM5.15.2/ CDH5.15.2
- CM/CDH的目标升级版本:CM5.16.2/ CDH5.16.2
- 采用root用户进行操作
升级前置条件: - 确保当前系统版本支持要升级到的新版本CDH5和Cloudera Manager5
- 原Cloudera Manager和CDH的版本为5.15.2
- Cloudera Manager和CDH的目标升级版本为5.16.2
2.1 停止CM服务以及各个组件服务
在CM控制台页面上停止Hadoop各个组件
在CM控制台页面上停止ClouderaManager管理组件
在所有集群服务器上停止cloudera-scm-agent
/opt/cm-5.15.2/etc/init.d/cloudera-scm-agent stop
在cloudera-scm-server节点停止clodera-scm-server
/opt/cm-5.15.2/etc/init.d/cloudera-scm-server stop
2.2 数据库节点上备份Cloudera Manager数据库
mysqldump -u 用户-p 密码 --databases hive> /tmp/20201224/hive.dump
mysqldump -u 用户-p 密码 --databases hue> /tmp/20201224/hue.dump
mysqldump -u 用户-p 密码 --databases oozie> /tmp/20201224/oozie.dump
mysqldump -u 用户-p 密码 --databases scm> /tmp/20201224/scm.dump
2.3 namenode节点备份元数据
cd /dfs/dfs/nn
tar -cvf /dfs/dfs/nn/node_backup_data.tar /dfs/dfs/nn
3 CM升级
首先升级Cloudera Manager。
3.1 所有节点上传cm安装包
cd /tmp
mkdir cm
cd /tmp/cm
rz
chmod 755 cloudera-manager-centos7-cm5.16.2_x86_64.tar.gz
备注:上传压缩包比较耗时,预计1小时左右
3.2 解压
tar -xzvf cloudera-manager-centos7-cm5.16.2_x86_64.tar.gz -C /opt/
3.3 所有节点的config.ini指向cloudera-scm-server节点
mv /opt/cm5.16.2/etc/clodera-scm-agent/config.ini /opt/cm5.16.2/etc/clodera-scm-agent/config.ini.bak
cp /opt/cm5.15.2/etc/clodera-scm-agent/config.ini /opt/cm5.16.2/etc/clodera-scm-agent/
3.4 cloudera-scm-server节点配置 db.properties
mv /opt/cm5.16.2/etc/clodera-scm-server/db.properties /opt/cm5.16.2/etc/clodera-scm-server/db.properties.bak
cp /opt/cm5.15.2/etc/clodera-scm-server/db.properties /opt/cm5.16.2/etc/clodera-scm-server/
3.5 所有节点复制 uuid 到新版本的对应目录下
cp /opt/cm5.15.2/lib/cloudera-scm-agent/uuid /opt/cm5.16.2/ lib/cloudera-scm-agent/
3.6 所有节点将MySQL JDBC驱动包放入相应位置
cp /opt/cm-5.15.2/share/cmf/lib/mysql-connector-java*.jar /opt/cm-5.16.2/share/cmf/lib/
3.7 启动新版本的 cloudera-scm-server/agent
/opt/cm-5.16.2/etc/init.d/cloudera-scm-server start
/opt/cm-5.16.2/etc/init.d/cloudera-scm-agent start
PS:可能存在问题:
cloudemanager安装时出现ProtocolError:<ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>问题
问题排查:
查看日志/var/log/cloudera-scm-agent/,得知rotocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
解决办法:
ps -ef | grep supervisord
kill -9 <processID>
sudo service cloudera-scm-agent restart
3.8 Cloudera Manager升级验证
3.8.1 查看Cloudera Manager版本
版本显示为升级后版本
3.8.2 验证 Cloudera Manager心跳机制
默认情况下,该心跳为15s一次;
3.8.3 检查所有主机
3.8.4 集群历史监控数据
4 CDH升级
升级CDH各组件
4.1 cloudera-scm-server节点上传parcel包
cd /tmp/cm
rz
包含以下parcel包:
- CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel
- CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1
- manifest.json
4.2 cloudera-scm-server节点移动parcel包
mv /tmp/cm/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel /opt/cloudera/parcel-repo
mv /tmp/cm/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1 /opt/cloudera/parcel-repo
mv /tmp/cm/manifest.json /opt/cloudera/parcel-repo
mv /opt/cloudera/parcel-repo/CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha1 /opt/cloudera/parcel-repo/ CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.sha
4.3 停止clodera-scm-server
/opt/cm-5.15.2/etc/init.d/cloudera-scm-server stop
4.4 在所有集群服务器上停止cloudera-scm-agent
/opt/cm-5.15.2/etc/init.d/cloudera-scm-agent stop
4.5 在CM控制台页面上升级
页面点击“主机”->“Parcel”找到5.16.2-1.cdh2.16.2.p0.8版本,点击“激活”并“升级”
在CDH Parcel包下发到各节点安装完后如下目录也需要复制,否则以上检查无法通过。
cp mysql-connector-java*.jar /opt/cloudera/parcels/CDH-5.16.2.p0.8/jars/
cp mysql-connector-java*.jar /opt/cloudera/parcels/CDH-5.16.2.p0.8/lib/hive/lib/
cp mysql-connector-java*.jar /opt/cloudera/parcels/CDH-5.16.2.p0.8/lib/sqoop/
cp mysql-connector-java*.jar /opt/cloudera/parcels/CDH-5.16.2.p0.8/lib/oozie/libtools/
cp mysql-connector-java*.jar /opt/cloudera/parcels/CDH-5.16.2.p0.8/lib/oozie/libserver/
4.6 Flume拦截器添加(项目中如没有使用Flume,跳过)
cd /opt/cloudera/parcels/CDH-5.15.2-1.cdh5.15.2.p0.3/lib/flume-ng/lib/Collection-1.0.jar /opt/cloudera/parcels/CDH-5.16.2.2-1.cdh5.16.2.p0.8/lib/flume-ng/lib/
chmod 755 /opt/cloudera/parcels/CDH-5.16.2.2-1.cdh5.16.2.p0.8/lib/flume-ng/lib/ Collection-1.0.jar
随后重启flume
4.7 功能验证(根据项目实际情况制定验证项)
4.7.1 Hue、Hive以及MR验证
在CM控制台页面登录Hue,测试hive正常查询表数据。
4.7.2 Spark程序验证
cd /opt/spark-shell/
bash -x spark_start_wallet_static.sh
在yarn上查看spark任务启动是否正常
4.7.3 Oozie调度验证
查看Oozie调度信息是否正常
升级成功!
6 参考文献
- https://cloud.tencent.com/developer/article/1077573
- https://www.cnblogs.com/tzxxh/p/9123231.html
- https://blog.csdn.net/supersyd/article/details/52486989
- https://www.cnblogs.com/zlslch/p/7121275.html
- https://docs.cloudera.com/documentation/enterprise/release-notes/topics/cdh_rn_fixed_in_516.html