千家信息网

cdh版本升级(5.14 -> 6.2)

发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,我们的Cloudera Manager和cdh版本是5.14,现在公司需要升级到cdh7.2需要先升级Cloudera Manager,然后升级cdh。1.Cloudera Manager升级(参考h
千家信息网最后更新 2024年11月12日cdh版本升级(5.14 -> 6.2)

我们的Cloudera Manager和cdh版本是5.14,现在公司需要升级到cdh7.2
需要先升级Cloudera Manager,然后升级cdh。

1.Cloudera Manager升级

(参考
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_upgrade.html)
升级之前先确定linux的版本已经升级到Cloudera Manager6.2支持的版本

1.1备份

1.1.1备份Cloudera Manager Agent

###查看数据库信息

$ sudo cat /etc/cloudera-scm-server/db.properties

得到类似如下信息:

...com.cloudera.cmf.db.type=...com.cloudera.cmf.db.host=database_hostname:database_portcom.cloudera.cmf.db.name=scmcom.cloudera.cmf.db.user=scmcom.cloudera.cmf.db.password=SOME_PASSWORD
在每台安装了Cloudera Manager agent 的机器都执行以下的备份操作:

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 Agent directory and the runtime state.

$ 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.

$ sudo -E tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d

1.1.2备份Cloudera Manager 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

1.1.3备份 Cloudera Manager Databases

$ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql

1.1.2备份 Cloudera Manager Server

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

1.2升级Cloudera Manager Server

1.2.1建立软件的访问权限(替换yum源)

登陆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 Managername=Cloudera Managerbaseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-clouderagpgcheck=1

1.2.2安装or配置java8

在server的配置文件中配置java_home:
在/etc/default/cloudera-scm-server
增加JAVA_HOME
export JAVA_HOME="/usr/java/jdk1.8.0_162"

1.2.3升级Cloudera Manager Server

1.登录Cloudera Manager Server主机。
2.停止Cloudera管理服务。 (要点:此时不停止Cloudera Management Service可能会导致管理角色崩溃或Cloudera Manager Server可能无法重新启动。)
步骤:

  • a.Log in to the Cloudera Manager Admin Console.
  • b.Select Clusters > Cloudera Management Service.
  • c.Select Actions > Stop.
  • 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

1.2.4升级Cloudera Manager Agent

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 Managername=Cloudera Managerbaseurl=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/gpgkey=https://archive.cloudera.com/cm6/6.2.0/redhat6/yum/RPM-GPG-KEY-clouderagpgcheck=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

到此就完成了Cloudera Manager的升级,后面进行cdh的升级

如果升级失败,需要还原,可以参考官方的步骤:
https://www.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_downgrade.html

2.CDH升级

升级之前先确定linux的版本已经升级到CDH6.2支持的版本,java版本为1.8

2.1.准备工作

登录到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 

以下服务在6.0.0中已经没有了,升级之前,需要停止并且删除这些服务
Accumulo
Sqoop 2
MapReduce 1
Spark 1.6
Record Service

2.2备份cdh

以下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中实际配置更改)

a.备份journal数据,在每台JournalNode上执行

$ sudo cp -rp /data/dfs/jn /data/dfs/jn-CM-CDH5.14

b.备份每台namenode的运行时目录,运行:
$ 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,则回滚过程要求您修改此目录中的文件。

c.备份每台datanode的运行时目录
$ 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

2.3服务更改:

hue:

对于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

hbase:

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 工具。

2.4升级集群

注意事项

当使用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应用程序。

2.4.1备份cloudera manager

在cloudera manager升级之前我们备份了一次,在升级之后还需要备份一次。

1.查看数据库信息
$ cat /etc/cloudera-scm-server/db.properties

例如:

com.cloudera.cmf.db.type=...com.cloudera.cmf.db.host=database_hostname:database_portcom.cloudera.cmf.db.name=scmcom.cloudera.cmf.db.user=scmcom.cloudera.cmf.db.password=SOME_PASSWORD
2.备份 Cloudera Manager Agent

在每台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
  • 备份当前repo目录
    $ 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
    3.停止Cloudera Manager Server & Cloudera Management Service

    在CDH管理界面中停止Cloudera Management Service,选择:
    Clusters->Cloudera Management Service.
    Actions > Stop.
    停止 Cloudera Manager Server:

    $ sudo service cloudera-scm-server stop
    4.备份Cloudera Manager数据库
    $ mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.14.sql

    数据库信息为刚才第一步中查看文件中获取的信息

    5.备份Cloudera Manager Server

    在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

2.4.2进入维护模式

要在升级过程中避免不必要的警报,请在开始升级之前在群集上进入维护模式。 进入维护模式会停止发送电子邮件警报和SNMP陷阱,但不会停止检查和配置验证。完成升级后,请务必退出维护模式以重新启用Cloudera Manager警报。

2.4.3完成升级前的迁移步骤

  • yarn
    Decommission and recommission the YARN NodeManagers but do not start the NodeManagers.
    A decommission is required so that the NodeManagers stop accepting new containers, kill any running containers, and then shutdown.(把YARN的NodeManagers给Decommission掉,再recommission,但不启动NodeManagers,需要Decommission以便NodeManagers停止接受新容器,终止所有正在运行的容器,然后关闭。)
    操作步骤:

    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-cdh7.2.0-mr-framework.tar.gz)

重要说明:不要启动选中所有NodeManager。

  • hive

查询语法,DDL语法和Hive API都有变化。在升级之前,您可能需要在应用程序工作负载中编辑HiveQL代码。

  • sentry
    如果群集使用Sentry策略文件授权,则必须先将策略文件迁移到数据库支持的Sentry服务,然后再升级到CDH 6。

  • spark
    如果群集使用Spark或Spark Standalone,则必须执行几个步骤才能确保安装了正确的版本。
    删除spark standalone
    升级后,如果安装了spark2,则spark2-submit被替换为spark-submit,需要在提交作业之前替换提交作业的命令

2.4.4运行Hue文档清理

如果群集使用Hue,请执行以下步骤(维护版本不需要)。这些步骤清理Hue使用的数据库表,可以帮助提高升级后的性能。
1.备份Hue数据库。
2.连接到Hue数据库。
3.检查desktop_document,desktop_document2,oozie_job,beeswax_session,beeswax_savedquery和beeswax_queryhistory表的大小以获得参考点。如果其中任何行超过10万行,请运行清理。

2.4.5下载和分发包裹

1.打开CDH管理界面,点击 主机 -> Parcels -> 配置
2.使用以下远程parcel存储库URL更新CDH的Parcel存储库:

https://archive.cloudera.com/cdh7/6.2.0/parcels/

a.在 远程 Parcel 存储库 URL 部分中,单机 "+"图标添加上面的url,单击 保存更改
b.在表中找到包含新CDH parcel的行,然后单击" 下载"按钮。
c.下载包后,单击" 分配"按钮。
d.分发完所有包裹后,点击 升级 按钮。

2.4.6运行升级CDH向导

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目录下即可。

2.4.7升级完成之后的迁移

1.spark
  • 升级到CDH 6后,可能配置了多个Spark服务,每个服务都有自己的一组配置,包括事件日志位置。确定要保留哪个服务,然后手动合并这两个服务。
  • 用于在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作业的任何工作流。

  • 通过执行以下步骤手动合并Spark服务:
    1.将所有相关配置从要删除的服务复制到您要保留的服务。要查看和编辑配置:
    a.在Cloudera Manager Admin Console中,转到要删除的Spark服务。
    b.单击" 配置"选项卡。
    c.记录配置。
    d.转到您要保留的Spark服务并复制配置。
    e.单击保存更改。
    要保留历史事件日志:
    确定要删除的服务的事件日志的位置:
    在Cloudera Manager Admin Console中,转到要删除的Spark服务。
    单击" 配置"选项卡。
    搜索:spark.eventLog.dir
    注意路径。
    登录到群集主机并运行以下命令:
    hadoop fs -mv / * /。
    使用Cloudera Manager,停止并删除您选择删除的Spark服务
    重新启动剩余的Spark服务:单击Spark服务旁边的下拉箭头,然后选择" 重新启动"。
    2.impala

    impala主要用于即时查询,不用于线上任务,所以重要性没有那么高,参考官网
    https://www.cloudera.com/documentation/enterprise/upgrade/topics/impala_upgrading.html
    即可。

升级 服务 备份 运行 数据 配置 版本 目录 文件 数据库 步骤 节点 命令 过程 作业 处理 处理器 角色 问题 检查 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝海骆驼网络技术有限公司 疫情期间的网络技术 三十一岁开始做软件开发 清理数据库碎片sql语句 机网络技术有限公司 excel是软件开发 美国最新网络安全战略报告 大话手游忘记服务器名称 南京白鸥网络技术公司怎么样 部队网络安全周新闻 如何打开王者语音服务器 网络安全情况自查表怎么填写 服务器的无线接收器怎么用 网络安全广州培训 如何查询一些药物临床数据库 数据库导出excel表 中学生网络安全竞赛 严格把关网络安全意识 亿点成金网络技术股份有限公司 抢票软件开发语言 护苗网络安全走进洪湖 明日之后秋日森林服务器卖东西 酒店网络技术专业 湖南长沙牛耳软件开发的地址 浙江安卓软件开发哪家可靠 校园网络安全工作会议讲话 iptables外网服务器端口 软件开发与设计专业考研学校 亿点智堂武汉网络技术有限公司 服务器乱丢垃圾
0