CDH集群跨多版本滚动升级

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的


现生产环境的集群版本为5.12.1,开发环境的CDH集群版本为5.10.0过低,需要将开发环境的CDH集群滚动升级至5.12.1版本,与生产环境版本一致。Fayson在前面的文章也有介绍《如何升级Cloudera Manager和CDH版本》,本篇文章Fayson主要介绍跨多个版本滚动升级。

  • 内容概述

1.升级准备

2.数据备份

3.升级Cloudera Manager和滚动升级CDH

4.功能验证

  • 测试环境

1.CM和CDH版本为5.10.0

2.集群已启用Kerberos

  • 前置条件

1.集群的HDFS和YARN已启用高可用

2.集群升级说明


1.原Cloudera Manager和CDH的版本为5.10.0

2.Cloudera Manager和CDH的目标升级版本为5.10.2

3.集群已开启NameNode高可用

4.集群已开启Resource Manager高可用

升级前CM和CDH集群版本为

3.升级前准备


1.Cloudera Manager的Yum源配置

  • 下载Cloudera Manager的RPM安装包
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-agent-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-daemons-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-server-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/cloudera-manager-server-db-2-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/enterprise-debuginfo-5.12.1-1.cm5121.p0.6.el7.x86_64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/jdk-6u31-linux-amd64.rpm
http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.12.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm

(可左右滑动)

  • 将Cloudera Manager的7个RPM包下载至/var/www/html/cm5.12.1目录下,目录不存在则创建
  • 在/var/www/html/cm5.12.1目录下执行如下命令
[root@ip-172-31-2-37 cm5.12.1]# pwd
/var/www/html/cm5.12.1
[root@ip-172-31-2-37 cm5.12.1]# createrepo .

(可左右滑动)

  • 浏览器访问验证是否部署成功
  • 修改Cloudera Manager服务所在节点的/etc/yum.repo.d/cm.repo文件,内容如下:
[root@ip-172-31-2-37 ~]# vim /etc/yum.repos.d/cm.repo 
[CM5.12.1]
name=Cloudera Manager-5.12.1
baseurl=http://ip-172-31-2-37.ap-southeast-1.compute.internal/cm5.12.1/
gpgcheck=false
enabled=true

(可左右滑动)

  • 在命令行执行如下命令查看CM的yum源是否配置成功
[root@ip-172-31-2-37 etc]# rm -rf /etc/yum.repos.d/cloudera-manager.repo
[root@ip-172-31-2-37 etc]# yum clean all
[root@ip-172-31-2-37 etc]# yum repolist

(可左右滑动)

如上图所示截图则说明CM的yum源配置成功。

2.部署CDH Parcel安装包

  • 下载CDH Parcle安装包
http://archive.cloudera.com/cdh5/parcels/5.12.1/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
http://archive.cloudera.com/cdh5/parcels/5.12.1/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.12.1/manifest.json

(可左右滑动)

  • 将3个安装包下载至/var/www/html/cdh5.12.1目录下,目录不存在则创建
  • 在浏览器访问CDH安装包是否部署成功

如上图所示则表示部署成功。

4.升级Cloudera Manager


1.停止服务并备份数据库

  • 通过CM查看Cloudera Management服务使用到的元数据库

记录Cloudera Management Service服务所用到的元数据库名称,后面备份数据时会使用到。

  • 停止Cloudera Management Service服务

服务已停止

  • 停止集群所有节点的cloudera-scm-agent服务
[root@ip-172-31-2-37 shell]# sh ssh_do_all.sh node.list "systemctl stop cloudera-scm-agent"

(可左右滑动)

  • 停止cloudera-scm-server服务
[root@ip-172-31-2-37 cmdb_bak]# systemctl stop cloudera-scm-server
[root@ip-172-31-2-37 cmdb_bak]# systemctl status cloudera-scm-server

(可左右滑动)

浏览器访问7180端口不通则表示服务停止成功

  • 执行如下命令,备份元数据库
[root@ip-172-31-2-37 cmdb_bak]# mysqldump -uroot -p --databases cm >cm.dump
[root@ip-172-31-2-37 cmdb_bak]# mysqldump -uroot -p --databases am >am.dump
[root@ip-172-31-2-37 cmdb_bak]# mysqldump -uroot -p --databases rm >rm.dump

(可左右滑动)

2.升级cloudera-manager-server

  • 使用root或sudo权限用户登录Cloudera Manager所在服务器,执行如下命令升级
[root@ip-172-31-2-37 ~]# yum -y upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent

(可左右滑动)

检查cloudera-manager-server版本是否升级到5.12.1

[root@ip-172-31-2-37 ~]# rpm -qa |grep cloudera-

(可左右滑动)

  • 启动cloudera-scm-server服务
[root@ip-172-31-2-37 ~]# systemctl start cloudera-scm-server
[root@ip-172-31-2-37 ~]# netstat -apn |grep 7180

(可左右滑动)

如上截图则表示cloudera-scm-server服务启动成功。

  • 向CDH集群提交一个MapReduce作业
INPUT_HDFS=/benchmarks/wordcount/input
DATASIZE=10737418240
hadoop fs –rm -r ${INPUT_HDFS} || true
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar randomtextwriter -Dmapreduce.randomtextwriter.totalbytes=${DATASIZE} ${INPUT_HDFS}

(可左右滑动)

  • 使用管理员账号登录Cloudera Manager控制台,进入升级向导界面
  • 点击“继续”,输入CM的部署地址
  • 点击“继续”,JDK选择
  • 点击“继续”,输入OS的账号和密码
  • 点击“继续”,升级所有的Cloudera Manager Agent服务

Cloudera Manger Agent服务升级成功

  • MapReduce作业正常运行
  • 点击“继续”,检查主机正确性
  • 点击“继续”,进入升级成功界面
  • 点击“完成”,进入审核更改界面
  • 点击“继续”,选择重启Cloudera Management Service服务
  • 点击“继续”,重启Cloudera Management Service服务
  • 重启成功,点击“完成”

到此就完成Cloudera Manager的升级,CDH集群的各个服务均正常。

  • 升级前提交的作业任在正常运行

作业执行成功

成功的生成了50GB的测试数据

3.Cloudera Manager升级验证

  • 查看Cloudera Manager的版本,版本为升级后的版本
  • 查看集群监控信息,历史监控数据未丢失,只有在升级Cloudera Manager Agent时段内无数据
  • 集群Agent服务检查,监控心跳在15s内,Cloudera Manager Agent服务正常

5.通过Cloudera Manager滚动升级CDH


1.运行一个测试的MR作业,用于测试集群滚动是否影响到作业运行

  • 准备测试脚本mr_wordcount.sh,内容如下
[root@ip-172-31-2-37 ~]# vim mr_wordcount.sh 
#!/bin/bash
INPUT_HDFS=/benchmarks/wordcount/input
OUTPUT_HDFS=/benchmarks/wordcount/output
NUM_REDS=12
hadoop fs -rmr $OUTPUT_HDFS || true
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount \
        -Dmapreduce.input.fileinputformat.split.minsize=1073741824 \
        -Dmapreduce.reduce.tasks=${NUM_REDS} ${INPUT_HDFS} ${OUTPUT_HDFS} >wordcount.log 2>&1 &

(可左右滑动)

  • 向集群提交MapReduce作业
[root@ip-172-31-2-37 ~]# sh mr_wordcount.sh

(可左右滑动)

作业运行完成

运行结果统计:

WordCount作业运行耗时:21mins, 56sec

平均每个Map耗时:4mins, 10sec

2.备份HDFS元数据

  • 使用如下命令备份HDFS元数据信息
kinit hdfs/admin@FAYSON.COM
klist
hadoop dfsadmin -fetchImage ./hdfs_metastore_bak/

(可左右滑动)

3.使用Cloudera Manager滚动升级CDH

  • 登录CM,配置CDH5.12.1版本的Parcel库地址

保存更改,如下图所示配置成功

  • 点击“下载”,等待下载成功
  • 点击“分配”,等待分配成功
  • 向集群提交MapReduce作业
[root@ip-172-31-2-37 ~]# kinit fayson
[root@ip-172-31-2-37 ~]# klist
[root@ip-172-31-2-37 ~]# sh mr_wordcount.sh 
[root@ip-172-31-2-37 ~]# tail -f wordcount.log

(可左右滑动)

  • 点击“升级”,进入升级向导页面
  • 点击“继续”,勾选已准备好升级的前置准备工作
  • 点击“继续”,准备升级CDH集群
  • 点击“继续”,进行主机正确性检查
  • 点击“继续”,选择滚动升级,根据需要设置参数
  • 点击“继续”,进入滚动升级流程

执行滚动重启

  • 等待滚动升级命令完成,点击“继续”
  • CDH升级完成
  • MR作业运行成功

作业运行耗时:22mins, 54sec

  • 最终化元数据

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

6.集群功能验证


1.进入Cloudera Manager控制台主页,查看集群是否正常

2.向集群提交一个MR作业

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 10

作业运行成功

3.使用Hue进行SQL测试

创建一个Hive表

向表中插入数据

查询test表中数据

执行Count操作

6.集群功能验证


  • Cloudera Manager升级不会影响CDH集群的正常使用,在升级的过程中作业依然可以正常运行。
  • CDH5.10.0版本支持Spark2.0.0版本,在升级到CDH5.12.1后默认不支持Spark2.0.0版本,如果集群中安装有Spark2.0.0版本需要将Spark版本升级至更高版本后再升级CDH集群
  • CDH集群的NameNode和ResourceManager启用了高可用用后,从CDH5.10.0到CDH5.12.1的升级是支持滚动升级的。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏分布式系统和大数据处理

安装和配置Hadoop集群(3节点)

在 安装和配置Hadoop(单节点) 这篇文章中,已经进行了Hadoop单机伪集群模式的部署。生产环境中,Hadoop都是以集群方式进行安装和部署的,否则,就不...

5723
来自专栏王小雷

Spark学习之在集群上运行Spark(6)

Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力。 2. Spark既能...

21010
来自专栏牛肉圆粉不加葱

【容错篇】Spark Streaming的还原药水——Checkpoint

一个 Streaming Application 往往需要7*24不间断的跑,所以需要有抵御意外的能力(比如机器或者系统挂掉,JVM crash等)。为了让这成...

802
来自专栏开源项目

码云推荐 | 基于 Hadoop 的 Kafka On Yarn

该项目用于把 Kafka 运行在 Yarn 的辅助项目,项目依赖: kafka, kafka-offset-console. 见 kafka-yarn.prop...

47112
来自专栏cloudskyme

Hadoop使用(一)

hadoop框架 Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,J...

3204
来自专栏分布式系统和大数据处理

安装和配置Hadoop集群(3节点)

在 安装和配置Hadoop(单节点) 这篇文章中,已经进行了Hadoop单机伪集群模式的部署。生产环境中,Hadoop都是以集群方式进行安装和部署的,否则,就不...

3445
来自专栏编程

大数据入门基础系列之浅谈Hive的用户接口

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 在前面的博文里,我已经介绍了 Hive 对外提供了三种服务模式来达到用户接口,即 : (1) H...

1919
来自专栏大数据学习笔记

Spark2.x学习笔记:4、Spark程序架构与运行模式

4、 Spark程序架构与运行模式 4.1 Spark程序最简架构 所有的Spark程序运行时,主要由两大类组件Driver和Excutor构成。 每个Spar...

3169
来自专栏个人分享

Hadoop on Yarn 各组件详细原理

  运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台。ApplicationMaster和相应...

1511
来自专栏Hadoop实操

如何降级Cloudera Manager和CDH

在前面的文章中,Fayson介绍过《如何升级Cloudera Manager和CDH》,在实际使用过程中,我们往往会碰到将集群升级到一个较新的版本后,会出现一些...

1.3K5

扫码关注云+社区

领取腾讯云代金券