作者:余枫


1

文档编写目的


Fayson在前面的文章中详细介绍过CDH的升级,参考《如何升级Cloudera Manager和CDH》,对于小版本的滚动升级,也有专门的一篇文章介绍,参考《​0284-CDH集群跨多版本滚动升级​》。但以前的版本都是基于CDH5,本文主要是描述如何从CDH6.1升级到CDH6.2。


  • 测试环境

1.Redhat7.4

2.采用root用户操作

3.CM/CDH6.1


2

Cloudera升级概述


你可以使用tarballs或operating system packages来升级Cloudera Manager,然后使用packages或parcels来升级CDH。同时有可能还需要安装一个新版JDK。升级Cloudera Manager的同时Cloudera Navigator也会被升级。


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。


升级时具体有如下几种选择:


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive


2.1

升级建议


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。


2.2

评估升级影响


一般需要规划一个足够长的维护窗口(停机时间)进行升级。根据需要升级的组件,集群的节点数,以及不同的硬件情况,你可能需要一整天来进行升级。开始升级之前,你需要做好一些前置条件准备以及关键数据备份,这篇文档在讲述升级步骤时也会说明。


升级之前,需要查阅Clouder官网对相关版本的发行说明(release notes),了解API更改,不推荐的功能,新的功能以及不兼容的更改。同时需要检查新版本的前置条件来确认支持的操作系统,JDK,数据库和其他组件。


一共有三种版本的升级:major,minor和maintenance。


Major升级

Major版本的升级通常有以下特征:

  • Hadoop的大版本变化,涉及很多更新内容
  • 不兼容的数据格式
  • Cloudera Manager界面的重大变化
  • Cloudera Manager的数据库schema变动,不过可以在升级过程中自动被处理
  • 需要较长的停机时间
  • 需要重新部署客户端

你也可以只升级major版本,而保持minor版本不变,比如你可以从4.8.1升级到5.8.0. 为了方便下一个major版本的升级(CDH6),我们建议您现在可以将集群升级到5.x


Minor版本升级

Minor版本升级是指基于同样的major版本将minor版本进行升级,比如从5.4.x升级到5.8.x,一般有以下特征:

  • 新的功能
  • Bug修复
  • 可能存在的数据库schema更改会在Cloudera Manager升级时自动被处理

一般来说,minor版本的升级不包括不兼容的更改或者数据格式的变化。客户端配置会被重新配置。


Maintenance版本升级

Maintenance版本升级主要是重大bug修复或者解决一些安全问题。不会有兼容性修改和新功能。


2.3

Cloudera Manager升级概述


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_02


升级Cloudera Manager包括以下步骤:

1.在CM节点上升级Cloudera Manager Server,使用操作系统的命令,比如Redhat的yum。也可以手动通过tarballs来升级。tarballs升级比较适合集群中已经有一些可以同时操作多台机器的脚本,程序或工具。


2.在所有主机上升级Cloudera Manager agent,Cloudera Manager的升级向导可以帮助你升级agent(JDK升级可选),同时也可以手动的通过tarballs升级JDK和agent。在这个过程中,CDH并不会被升级。


2.4

CDH升级概述


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_03


CDH升级包含Hadoop相关组件的升级,你可以使用Cloudera Manager来升级CDH,采用parcel或package的方式都可以。


2.4.1

使用Parcel升级(同时适用于滚动升级)


我们建议使用parcels来升级CDH,因为Cloudera Manager管理这些parcels自动下载,分发和激活。有两种方式的升级:

  • Parcels:需要重启集群才能完成升级。
  • 滚动升级:如果HDFS启用了高可用HA,可以在不重启集群的情况下进行滚动升级。为了简化升级步骤,可以考虑从package切换到parcels,这样Cloudera Manager可以大大简化升级步骤。在升级CDH5的时候你从package切换到parcels也可以。



2.4.2

使用Packages升级


使用packages升级需要你提前下载好需要升级的packages,然后手动的运行package更新命令来升级,注意所有主机都需要进行相同的操作。从Cloudera Manager5.3开始,CDH提供向导式的升级包括major版本升级(CDH5到CDH5),minor版本升级(CDH5.x到5.y)和maintenance版本升级(CDHa.b.x到CDHa.b.y)。无论你是使用parcels安装还是package都支持,但是package需要你手动安装和升级,但是parcels可以被Cloudera Manager自动安装和升级。


3

Cloudera Manager升级


3.1

升级前的准备

3.1.1

Cloudera Manager的yum源配置


1.准备要升级的版本的rpm包


https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-db-2-6.2.0-968826.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/enterprise-debuginfo-6.2.0-968826.el7.x86_64.rpm
https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm


2.将安装包放到/var/www/html/cm6.2目录下


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_04


在该目录下执行命令createrepo .

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_05


3.验证能否通过浏览器访问


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_06


4.配置cloudera-manager.repo文件


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_07


5.测试yum源是否正常


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_08


3.1.2

备份Cloudera Manager数据库


1.停止Cloudera Management Service服务


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_09


2.备份Cloudera Manager数据库


备份了如下几个数据库:

  • Cloudera Manager Server
  • Cloudera Navigator Audit Server
  • Cloudera Navigator Metadata Server
  • Activity Monitor
  • Reports Manager

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_10


可以在/etc/cloudera-scm-server/db.properties查看Cloudera Manager Server的数据库信息,其他的数据库信息在CM的管理界面的Cloudera Management Service 中的配置里获取。


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_11


3.2

升级步骤


1.停止Cloudera Manager Server和Agent

  • 停止所有服务器上的cloudera-scm-agent服务
[root@cdh234 ~]$ service cloudera-scm-agent stop


  • 在运行Cloudera Manager服务器的主机上,停止cloudera-scm-server服务
[root@cdh234 ~]$ service cloudera-scm-server stop


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_12


2.在Cloudera Manager上备份以下目录


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_13

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_14


3.运行以下命令升级Cloudera Manager Server


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_15


验证是否升级成功


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_16


4.启动Cloudera Manager Server服务


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_17


5.登录Cloudera Manager管理界面,显示升级向导


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_18


6.升级Cloudera Manager Agent软件包,选择自定义存储库


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_19


7.选择JDK


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_20


8.输入SSH登陆凭证


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_21


9.升级Cloudera Manager Agent软件包


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_22


10.升级完成后,进行主机检查


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_23


11.回到主页,重启配置过期的服务


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_24

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_25


3.3

Cloudera Manager升级验证


1.查看Cloudera Manager版本,验证版本是否为升级后的版本(6.2.0)


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_26


2.验证Agent是否向Cloudera Manager发送心跳


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_27


3.查看历史监控数据


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_28


4

CDH升级

4.1

CDH升级准备

4.1.1

准备CDH的parcels


1.下载对应版本6.2.0的parcels


https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel
https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha1
https://archive.cloudera.com/cdh6/6.2.0/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha256
https://archive.cloudera.com/cdh6/6.2.0/parcels/manifest.json


2.将下载下来的文件,放到/var/www/html/cdh6.2目录下


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_29


3.验证通过http能否访问


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_30


4.2

CDH升级流程


1.停止集群服务


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_31


2.备份NameNode上的HDFS Metastore


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_32


在NameNode节点上备份该目录到指定目录下

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_33


3.备份数据库


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_34


4.向集群中添加新版的存储库


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_35

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_36


5.运行升级向导


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_37


6.进入CDH升级向导页面


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_38


7.选择CDH升级的版本


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_39


8.分发Parcels


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_40


9.完整重启集群


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_41


10.升级集群命令


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_42


11.集群升级成功


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_43


12.最终化元数据升级

在进行最终化元数据升级之前,要观察几天甚至几周的时间,观察集群的运行是否正常,在发现所有的任务都没有任何异常后,再进行最终化元数据升级操作。一旦进行升级操作后,就无法再进行回滚,除非有数据备份。执行升级操作如下:


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_44

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_45


4.3

功能验证


1.运行MapReduce作业


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_46

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_47

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_48


2.Hive测试


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_49


3.Hue测试

创建一个Hive表


0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_50


向表中插入数据

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_51


查询表中的数据

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_52


执行Count操作

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_53


4.Hue测试Impala

向表中插入数据

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_cloudera_54


查询表中数据

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_hive_55


执行Count操作

0594-6.1.0-如何从CDH6.1.0升级到CDH6.2.0_版本升级_56


至此,从CDH6.1升级到CDH6.2完成并成功!