咱们的Cloudera Manager和cdh版本是5.14,如今公司须要升级到cdh6.2
须要先升级Cloudera Manager,而后升级cdh。html
(参考
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_upgrade.html)
升级以前先肯定linux的版本已经升级到Cloudera Manager6.2支持的版本java
###查看数据库信息node
$ sudo cat /etc/cloudera-scm-server/db.properties
获得相似以下信息:python
... com.cloudera.cmf.db.type=... com.cloudera.cmf.db.host=database_hostname:database_port com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.password=SOME_PASSWORD
Create a top level backup directory.mysql
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
Back up the Agent directory and the runtime state.linux
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock /etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
Back up the existing repository directory.sql
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
在安装了Service Monitor 的机器上执行:数据库
$ sudo cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-`date +%F`-CM5.14
在安装了Host Monitor 的机器上执行:apache
$ sudo cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-`date +%F`-CM5.14
在安装了Event Server的机器上执行:vim
$ sudo cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-`date +%F`-CM5.14
$ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql
Create a top-level backup directory.
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
$ Back up the Cloudera Manager Server directories:
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-server.tar /etc/cloudera-scm-server /etc/default/cloudera-scm-server
Back up the existing repository directory.
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
登录Cloudera Manager Server节点,删除原有yum源
$ sudo rm /etc/yum.repos.d/cloudera*manager.repo*
建立新的yum源文件
$ sudo vim /etc/yum.repos.d/cloudera-manager.repo
[cloudera-manager] # Packages for Cloudera Manager name=Cloudera Manager baseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/ gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-cloudera gpgcheck=1
在server的配置文件中配置java_home:
在/etc/default/cloudera-scm-server
增长JAVA_HOME
export JAVA_HOME="/usr/java/jdk1.8.0_162"
1.登陆Cloudera Manager Server主机。
2.中止Cloudera管理服务。 (要点:此时不中止Cloudera Management Service可能会致使管理角色崩溃或Cloudera Manager Server可能没法从新启动。)
步骤:
3.中止Cloudera Manager Server.
$ sudo service cloudera-scm-server stop
4.中止Cloudera Manager Agent.
$ sudo service cloudera-scm-agent stop
5.升级Cloudera packages.
$ sudo yum clean all $ sudo yum upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent -y
6.确认下包安装好了
$ rpm -qa 'cloudera-manager-*'
7.启动Cloudera Manager Agent.
$ sudo service cloudera-scm-agent start
8.启动Cloudera Manager Server.
$ sudo service cloudera-scm-server start
启动过程当中若是有问题能够参考日志文件:
$ tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log $ tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log $ tail -f / var / log / messages
9.正常的话打开cdh升级页面就能够看到升级的状况了
http://cloudera_Manager_server_hostname:7180/cmf/upgrade
a.使用CDH界面升级
点击 Cloudera Manager Agent软件包
选项1:选择agent存储库
咱们使用公共库就能够了
选择 Public Cloudera Repository
2.安装JDK
已经安装了就不用选择了
3.安装agent
配置一下root或者sudo帐号就能够了,须要能访问全部agent节点的权限
选项2:使用命令升级
清除老的repo文件
$ sudo rm /etc/yum.repos.d/cloudera*manager.repo*
新建repo文件:
$ sudo vim /etc/yum.repos.d/cloudera-manager.repo
repo文件内容:
[cloudera-manager] # Packages for Cloudera Manager name=Cloudera Manager baseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/ gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-cloudera gpgcheck=1
中止Cloudera Manager agent服务
$ sudo service cloudera-scm-agent stop
升级Cloudera Manager agent
$ sudo yum clean all $ sudo yum repolist $ sudo yum upgrade cloudera-manager-daemons cloudera-manager-agent -y
等到因此机器都完成了以后,每一个agent节点执行
$ sudo service cloudera-scm-agent start
查看
http://192.168.0.254:7180/cmf/upgrade
显示全部机器的agent都已经升级,且都有心跳
点击 Host Inspector,检测一下节点的状况
完成以后点击 显示检查器结果,查看有问题的项,修复。
显示的问题中有个比较重要的:若是后续要运行CDH6,hue须要使用python2.7,先记着,暂时无论。
而后,启动Cloudera Management Service
若是升级失败,须要还原,能够参考官方的步骤:
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_downgrade.html
升级以前先肯定linux的版本已经升级到CDH6.2支持的版本,java版本为1.8
登陆到CDH管理页面,启动hdfs服务
而后运行如下命令检查集群状况
若是有问题则修复
检查hdfs:
$ sudo -u hdfs hdfs fsck / -includeSnapshots $ sudo -u hdfs hdfs dfsadmin -report
检查hbase表中的一致性:
$ sudo -u hdfs hbase hbck
若是使用了kudu,检查kudu:
$ sudo -u kudu kudu cluster ksck <master_addresses>
如下服务在6.0.0中已经没有了,升级以前,须要中止而且删除这些服务
Accumulo
Sqoop 2
MapReduce 1
Spark 1.6
Record Service
如下CDH组件不须要备份:
·MapReduce
·YARN
·Spark
·Pig
·Impala
升级CDH前完成如下备份的步骤
1.Back Up Databases
咱们使用mysql,因此以mysq为例
1)若是还没有中止,请中止服务。若是Cloudera Manager指示存在依赖服务,则还要中止依赖服务。
2)备份各个服务(Sqoop, Oozie, Hue,Hive Metastore ,Sentry)的数据库。替换数据库名称,主机名,端口,用户名和备份目录路径,而后运行如下命令:
$ mysqldump --databases database_name --host = database_hostname --port = database_port -u database_username -p> backup_directory_path / database_name -backup -`date +%F`-CDH 5.14 .sql
2.Back Up ZooKeeper
在每台zookeeper节点,备份cdh中配置的zookeeper的数据存储目录,如
$ sudo cp -rp /var/lib/zookeeper/ /var/lib/zookeeper-backup-`date +%F`CM-CDH5.14
3.Back Up HDFS
(命令中的数据路径根据cdh中实际配置更改)
$ sudo cp -rp /data/dfs/jn /data/dfs/jn-CM-CDH5.14
$ mkdir -p /etc/hadoop/conf.rollback.namenode $ cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-NAMENODE\$" | head -1` $ cp -rp * /etc/hadoop/conf.rollback.namenode/ $ rm -rf /etc/hadoop/conf.rollback.namenode/log4j.properties $ cp -rp /etc/hadoop/conf.rollback.namenode/log4j.properties /etc/hadoop/conf.rollback.namenode/
这些命令建立临时回滚目录。若是稍后须要回滚到CDH 5.x,则回滚过程要求您修改此目录中的文件。
$ mkdir -p /etc/hadoop/conf.rollback.datanode/ $ cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-DATANODE\$" | head -1` $ cp -rp * /etc/hadoop/conf.rollback.datanode/ $ rm -rf /etc/hadoop/conf.rollback.datanode/log4j.properties $ cp -rp /etc/hadoop/conf.cloudera.hdfs/log4j.properties /etc/hadoop/conf.rollback.datanode/
4.Back Up Key Trustee Server and Clients
服务没有使用
5.Back Up HSM KMS
服务没有使用
6.Back Up Navigator Encrypt
服务没有使用
7.Back Up HBase
因为回滚过程还会回退HDFS,所以HBase中的数据也会回滚。此外,存储在ZooKeeper中的HBase元数据将做为ZooKeeper回滚过程的一部分进行恢复。
8.Back Up Search
服务没有使用
9.Back Up Sqoop 2
服务没有使用
10.Back Up Hue
在运行Hue Server角色的全部主机上,备份app注册表文件
$ mkdir -p /opt/cloudera/parcels_backup $ cp -rp /opt/cloudera/parcels/CDH/lib/hue/app.reg /opt/cloudera/parcels_backup/app.reg-CM-CDH5.14
对于centos6版本的系统:
须要在hue的节点安装python2.7
Enable the Software Collections Library:
$ sudo yum install centos-release-scl
$ Install the Software Collections utilities:
$ sudo yum install scl-utils
$ Install Python 2.7:
$ sudo yum install python27
Verify that Python 2.7 is installed:
$ source /opt/rh/python27/enable $ python --version
1.HBase 2.0 不支持PREFIX_TREE数据块编码,升级前须要先删除,不然hbase2.0没法启动
若是你已经安装了CDH6.那么经过运行如下工具来确保全部表或快照都不使用PREFIX_TREE数据块编码:
$ hbase pre-upgrade validate-dbe $ hbase pre-upgrade validate-hfile
2.升级协处理器类
外部协处理器不会自动升级。有两种方法能够处理协处理器升级:
在继续升级以前,请手动升级协处理器jar。
暂时取消协处理器的设置并继续升级。
手动升级后,能够重置它们。
尝试在不升级协处理器jar的状况下进行升级可能会致使不可预测的行为,例如HBase角色启动失败,HBase角色崩溃,甚至数据损坏。
若是您已经安装了CDH 6,则能够经过运行来确保您的协处理器与升级兼容 hbase pre-upgrade validate-cp 工具。
当使用Cloudera Manager Backup and Disaster Recovery (BDR)将集群从Cloudera Manager 5.13或更低版本升级到CDH 6.0或更高版本时,使用Cloudera Manager Backup and Disaster Recovery (BDR)备份数据将不起做用。
用于执行升级的次要版本的Cloudera Manager必须等于或大于CDH次要版本。要升级Cloudera Manager
注意:
使用滚动从新启动(仅限次要升级)升级CDH时:
自动故障转移不会影响滚动从新启动操做。
升级完成后,若是当前正在运行MapReduce或Spark做业,请不要删除旧的块。这些做业仍使用旧的块,必须从新启动才能使用新升级的块。
确保Oozie工做是幂等的。
不要使用Oozie Shell Actions来运行与Hadoop相关的命令。
不支持滚动升级Spark Streaming做业。升级完成后从新启动流做业,以便开始使用新部署的版本。
必须将运行时库打包为Spark应用程序的一部分。
您必须使用分布式缓存从客户端网关计算机传播做业配置文件。
不要构建包含第三方依赖项或CDH类的“超级”或“胖”JAR文件,由于这些文件可能与Yarn,Oozie和其余服务自动添加到CLASSPATH的类冲突。
在不捆绑CDH JAR的状况下构建Spark应用程序。
在cloudera manager升级以前咱们备份了一次,在升级以后还须要备份一次。
$ cat /etc/cloudera-scm-server/db.properties
例如:
com.cloudera.cmf.db.type=... com.cloudera.cmf.db.host=database_hostname:database_port com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.password=SOME_PASSWORD
在每台agent节点上执行:
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
备份agent目录和运行时状态
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock /etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
备份Cloudera Management Service
在Service Monitor节点执行
$ sudo cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-`date +%F`-CM5.14
在Host Monitor节点上执行
$ sudo cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-`date +%F`-CM5.14
在Event Server节点上执行
$ sudo cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-`date +%F`-CM5.14
在CDH管理界面中中止Cloudera Management Service,选择:
Clusters->Cloudera Management Service.
Actions > Stop.
中止 Cloudera Manager Server:
$ sudo service cloudera-scm-server stop
$ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql
数据库信息为刚才第一步中查看文件中获取的信息
在Cloudera Manager Server节点执行:
1.建立一个备份目录:
$ export CM_BACKUP_DIR="`date +%F`-CM5.14" $ echo $CM_BACKUP_DIR $ mkdir -p $CM_BACKUP_DIR
2.备份 Cloudera Manager Server的目录
$ sudo -E tar -cf $CM_BACKUP_DIR/cloudera-scm-server.tar /etc/cloudera-scm-server /etc/default/cloudera-scm-server
3.备份当前repo目录
4.
$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
要在升级过程当中避免没必要要的警报,请在开始升级以前在群集上进入维护模式。 进入维护模式会中止发送电子邮件警报和SNMP陷阱,但不会中止检查和配置验证。完成升级后,请务必退出维护模式以从新启用Cloudera Manager警报。
1.确保在升级完成以前,不会将新应用程序(如MapReduce或Spark应用程序)提交到群集。
2.打开CDH管理界面,进入到要升级的YARN服务
3.在 实例 选项卡上,选择全部NodeManager角色。这能够经过过滤角色类型下的角色来完成
4.点击 已选定的操做 -> 解除受权
若是群集运行CDH 5.9或更高版本并由Cloudera Manager 5.9或更高版本管理,而且您配置了正常解除受权,则会启动超时倒计时。
平滑退役开始中止使用过程以前提供了一个超时。超时会建立一个时间窗口,以便从系统中消耗已经运行的工做负载,并容许它们运行完成。在YARN服务的Configuration选项卡上搜索Node Manager Graceful Decommission Timeout字段,并将该属性设置为大于0的值以建立超时。
5.等到解除受权完成。完成后,NodeManager的状态为 中止,受权状态 为 解除受权。
6.选中全部NodeManagers,点击 已选定的操做 -> 从新受权。
(6这一步不作的话后面升级过程当中会报错,并且很难找到缘由,会在yarn升级的过程当中报这样的一个:
Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): Requested replication factor of 0 is less than the required minimum of 1 for /user/yarn/mapreduce/mr-framework/3.0.0-cdh6.2.0-mr-framework.tar.gz)
查询语法,DDL语法和Hive API都有变化。在升级以前,您可能须要在应用程序工做负载中编辑HiveQL代码。
sentry
若是群集使用Sentry策略文件受权,则必须先将策略文件迁移到数据库支持的Sentry服务,而后再升级到CDH 6。
若是群集使用Hue,请执行如下步骤(维护版本不须要)。这些步骤清理Hue使用的数据库表,能够帮助提升升级后的性能。
1.备份Hue数据库。
2.链接到Hue数据库。
3.检查desktop_document,desktop_document2,oozie_job,beeswax_session,beeswax_savedquery和beeswax_queryhistory表的大小以得到参考点。若是其中任何行超过10万行,请运行清理。
1.打开CDH管理界面,点击 主机 -> Parcels -> 配置
2.使用如下远程parcel存储库URL更新CDH的Parcel存储库:
a.在 远程 Parcel 存储库 URL 部分中,单机 "+"图标添加上面的url,单击 保存更改
b.在表中找到包含新CDH parcel的行,而后单击“ 下载”按钮。
c.下载包后,单击“ 分配”按钮。
d.分发完全部包裹后,点击 升级 按钮。
1.进入升级向导后,会运行一些集群的check,check的结果可能会出现一些问题,会影响到后续的升级,先把这些问题解决。还会有备份数据库的提示。若是都已经ok了,点击 是,我已执行这些步骤,而后点击 继续。
2.点击 完整群集重启 (群集的所有停机时间),点击 继续。(这个步骤会重启全部服务)
升级过程当中Oozie异常提示:
1.E0103: Could not load service classes, Cannot create PoolableConnectionFactory (Table 'oozie.validate_conn' doesn't exist)
解决方案:
2.“java.lang.ClassNotFoundException:org.cloudera.log4j.redactor.RedactorAppender”找不到类。
参考这篇文章,把缺乏的logredactor-2.0.7.jar建一个软链接从/opt/cloudera/parcels/CDH/lib/oozie/lib到/opt/cloudera/parcels/CDH/lib/oozie/libtools目录下
3.ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
缘由是log4j.xml没有配置致使异常信息没法显示,一样考一份log4j.xml的模版放到/opt/cloudera/parcels/CDH/lib/oozie/libtools目录下便可。
用于在CDH 5中提交Spark 2做业的命令(spark2-submit)在CDH 6中删除,
替换为 spark-submit。在具备内置Spark 1.6服务和Spark 2服务的CDH 5集群中,spark-submit 与Spark 1.6服务一块儿使用,和spark2-submit与Spark 2服务一块儿使用。升级到CDH 6后,spark-submit 使用CDH内置的Spark 2服务, spark2-submit再也不起做用。确保使用这些命令更新提交Spark做业的任何工做流。
impala主要用于即时查询,不用于线上任务,因此重要性没有那么高,参考官网
https://www.cloudera.com/documentation/enterprise/upgrade/topics/impala_upgrading.html便可。