一.集群概况
当前客户使用的Hbase组件无法使用Hbck2进行修复,且当前运行部分组件版本已知问题在6.3.2中得到修复,特进行升级操作。
1.针对CDH的Maintenance Version升级,可以使用滚动升级,比如:5.4.x升级到5.4.y,这种版本升级主要修复bug,不改动API,也不涉及新的功能。
2.针对CDH的Minor Version升级,建议停机升级或者滚动升级(如果跨度不大),比如5.x.x升级到5.y.y,这种版本升级主要是增加新的功能和新的API。
3.针对CDH的Major Version升级,建议必须停机升级,而且在升级前需要对已有应用和作业的改造和升级进行完备的测试验证,相应升级时停机时间会较长,这种版本升级一般是Hadoop相关组件的大版本升级,可能会改动API。
当前的CDH平台版本为CDH 6.1.1,目标升级版本为CDH6.3.2,Minor版本升级(无商业版)进行停机升级。
二.升级方式对比
| 方式 | 概述 | 备注 | |
| Parcels | 受Cloudera Manager统一管理自动下载、激活、分发;升级步骤相对简单 | 建议采用Parcel升级方式 | |
| RPM包 | 需要提前下载好所有组件RPM包更新命令进行升级,所有节点都需执行相同操作,操作繁琐。 | ||
| Cloudera Manager | Tar包 | 解压后简单配置就可用,但是cm6中不提供Tar包安装方式(且Tar包安装方式不利于集群管理,cm配置信息需手动同步) | |
| RPM包 | 使用RPM更新命令进行升级,后续agent升级可采用Cloudera升级向导进行升级 | 建议采用RPM包进行升级 |
三.升级操作
1.CM升级概述
| 服务名 | 影响 | 升级方式 | 备注 |
| Cloudera Manager | CM监控管理平台无法访问1h+ | RPM yum | 详细操作见下 |
1.1备份
(1)备份cloudera manager server
主要备份CM的监控数据和管理信息,数据目录包括:
/var/lib/cloudera-host-monitor /var/lib/cloudera-service-monitor /var/lib/cloudera-scm-server /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-headlamp cd var/lib du -h --max-depth=1 tar -zcvf home/cloudera-service-monitor.tar.gz cloudera-service-monitor/ tar -zcvf home/cloudera-host-monitor.tar.gz cloudera-host-monitor/ tar -zcvf home/cloudera-scm-server.tar.gz cloudera-scm-server/ tar -zcvf home/cloudera-scm-eventserver.tar.gz cloudera-scm-eventserver/ tar -zcvf home/cloudera-scm-headlamp.tar.gz cloudera-scm-headlamp/ mysqldump -u root -p -A > home/oldmysql.dum |
1.2升级操作
1.2.1 停止Cloudera-scm-server
1.2.2 停止所有agent
1.2.3更新yum源
(1)cm yum源
上传cm安装包到指定目录(自定义)
| createrepo |
(2)生成元数据和依赖信息
| python -m SimpleHTTPServer 7801 |
(3)修改配置文件
| [cm]name=cm5.4baseurl=http://192.168.31.20:7803/gpgcheck=0enabled=1#gpgkey=http://192.168.31.120:7800/RPM-GPG-KEY-CentOS-7#路径和端口以实际配置为准,端口不能一样,name不能一样 |
1.2.4执行更新操作(cmserver节点执行)
| yum -y upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent |
1.2.5确认是否安装成功
| rpm -qa|grep cloudera* |
1.2.6启动cm server
| Service cloudera-scm-server start |
1.2.7启动旧版本agent
(1)登录cm进入升级向导页面



点击确认完成,依照提示重启过期配置
| 服务名 | 影响 | 升级方式 | 备注 |
| Cloudera Manager | CM监控管理平台无法访问1h+ | RPM yum | 详细操作见下 |
1.3回滚
(1)停止cm
(2)如果cdh已经升级完成,先将cdh回滚到之前版本
(3)清理cmserver节点上/var/lib和/var/run中与cloudera server和agent相关目录
(4)卸载cmserver和agent
(5)执行降级操作(其他agent手动执行)
| yum install cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent |
(6)将备份的scm元数据还原到数据库
| mysql -u root -p < oldmysql.dump |
还原监控管理信息到/var/lib
2.CDH升级概述
| 服务名 | 影响 | 升级方式 | 备注 |
| CDH | 集群组件需停止,将处于无法访问状态,知道升级完成,预计1h+ | Parcel | 详细操作见下 |
2.1备份
(1)备份cm
备份cm元数据库(全库备份)
通过cm管理台停止cloudera-manager
| mysqldump -u root -p -A >oldmysql.dump |
(2)备份hdfs
hdfs进入安全模式
手动触发checkpoint
cm操作或命令形式 hdfs dfsadmin -saveNamespac |
备份fsimage和MD5文件
| hdfs dfsadmin -fetchImage backup_dir |
(3)备份zk目录
| tar -zxvf home/ var/lib/zookeeper |
2.2执行操作
从parcel包界面进入升级向导
确认升级界面上hbase等操作都已做完再执行下一步

点击继续

选择完整集群重启,点击继续

点击继续,点击完成
2.3后续及验证
在最终化元数据之前,进行几天甚至几周的运行观察,确保所有任务都没有任何异常后,再进行最终化元数据。一旦进行最终化元数据后,就不能回滚到老的版本了,除非有备份数据。对HDFS的主备节点都执行最终化元数据升级操作:

2.4服务验证
(1)hdfs
1、使用dd命令生成指定大小文件dd if=/dev/zero of=test20190513 bs=1M count=10002、文件上传至hdfs dfs -put test20190513 temp3、文件上传至hdfs dfs -cat temp/test201905134、文件上传至hdfs dfs -get /temp/test20190513 |
(2)hive
use rhao; create table hive_test_20190513(id int); select count(*) from hive_test_20190513 |
(3)hbase
create 'rhao:test_20190513','a' put 'rhao:test_20190513','1111','a:age','24' scan 'rhao:test_20190513','a' disable 'rhao:test_20190513' drop 'rhao:test_20190513 |
2.5回滚
cm界面可视化操作重新激活旧版本parcel包即可(注:在HDFS未完成最终化升级可直接执行操作)






