前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0725-5.16.2-如何卸载CDH5.16.2

0725-5.16.2-如何卸载CDH5.16.2

作者头像
Fayson
发布2019-11-09 17:20:48
8240
发布2019-11-09 17:20:48
举报
文章被收录于专栏:Hadoop实操Hadoop实操

文档编写目的

Fayson在两年前的文章中介绍过CDH的卸载,参考《0008-如何卸载CDH(附一键卸载github源码)V1.2》,《0609-6.1.0-如何卸载CDH6.1》和《0621-6.2.0-如何卸载CDH6.2》。除非你是使用Cloudera官方提供的一键安装脚本安装的CDH,否则并没有现成的一键卸载的脚本供使用。

为了更好的理解CDH的卸载,这里再次简单介绍一下CDH的安装,CDH的安装分为Cloudera Manager或Agent的安装以及CDH的Parcel的安装,Manager和Agent我们一般是使用rpm安装的,而CDH的安装则使用Parcel。我们在卸载CDH的时候一般会先从Cloudera Manager里停止集群,删除集群,以及移除所有相关的Parcel;然后在各台机器移除Cloudera Manager和Agent相关的rpm以及安装的依赖包;最后删除各台机器上与CDH相关的目录,要理解CDH的各个安装目录,可以参考Fayson之前的文章《0509-深入分析CDH的安装目录》。本文Fayson主要介绍如何卸载Cloudera Manager5.16.2以及CDH5.16.2。

  • 测试环境

1.Redhat7.4

2.采用root用户操作

3.CM/CDH5.16.2

用户数据备份

2.1 备份HDFS数据

常见的备份HDFS数据有如下办法:

1.使用distcp将数据拷贝到另外一个Hadoop集群。

2.将数据拷贝到其他存储设备。

3.将数据分批导出到各台主机的各个磁盘上

以上三种方法你也可以只使用于关键数据,具体使用哪种方法,大家根据自己集群的规模和数据量大小可以具体选择。

2.2 备份NameNode元数据

1.登录到Active NameNode节点,将HDFS进入安全模式,并且将所有edits修改都flush到fsimage。

代码语言:javascript
复制
#因为集群启用了Kerberos,所以需要使用HDFS的keytab登录到hdfs用户才能执行管理员相关的操作
[root@ip-172-31-6-83 ~]# klist

#进入safemode模式
[root@ip-172-31-6-83 ~]# hdfs dfsadmin -safemode enter 
Safe mode is ON

#将所有edits修改flush到fsimage
[root@ip-172-31-6-83 ~]# hdfs dfsadmin -saveNamespace
Save namespace successful

2.将NameNode元数据进行备份,根据自己集群NameNode目录进行如下操作:

代码语言:javascript
复制
[root@ip-172-31-6-83 ~]# mkdir namenode_back
You have new mail in /var/spool/mail/root
[root@ip-172-31-6-83 ~]# cd namenode_back/
[root@ip-172-31-6-83 namenode_back]# tar czvf nn_bak.tar.gz /dfs/nn/*

2.3 备份MySQL数据

代码语言:javascript
复制
[root@ip-172-31-13-38 ~]# mkdir mysql_back
[root@ip-172-31-13-38 ~]# cd mysql_back

#-u后面是mysql用户名,-p单引号中是用户对应的密码,metastore为库名,metastore.sql为备份输出文件
[root@ip-172-31-13-38 mysql_back]# mysqldump -uroot -p'123456' metastore > metastore.sql
[root@ip-172-31-13-38 mysql_back]# mysqldump -uroot -p'123456' cm > cm.sql
[root@ip-172-31-13-38 mysql_back]# mysqldump -uroot -p'123456' rm > rm.sql

#执行完成后,产生如下sql文件
[root@ip-172-31-13-38 mysql_back]# ll
total 68416
-rw-r--r-- 1 root root 66226334 Oct 31 07:54 cm.sql
-rw-r--r-- 1 root root    62494 Oct 31 07:54 metastore.sql
-rw-r--r-- 1 root root  3762416 Oct 31 07:54 rm.sql [root@ip-172-31-13-38 mysql_back]#

注:如果有Hue,Sentry,Navigator数据库可以同样备份。

2.4 备份CDH集群配置数据

通过Cloudera Manager提供的API接口,导出一份JSON文件,该文件包含Cloudera Manager所有与部署相关的所有信息如:所有主机,集群,服务,角色,用户,设置等等。可以通过这份JSON文件备份或恢复Cloudera Manager的整个部署。

  • 备份集群配置数据

1.登录到Cloudera Manager所在服务器,运行如下命令:

代码语言:javascript
复制
[root@ip-172-31-13-38 mysql_back]# curl -u admin:admin "http://172.31.13.38:7180/api/v19/cm/deployment" > ./cm-deployment.json
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  100k    0  100k    0     0   401k      0 --:--:-- --:--:-- --:--:--  402k
[root@ip-172-31-13-38 mysql_back]# ll cm-deployment.json
-rw-r--r-- 1 root root 102525 Oct 31 07:58 cm-deployment.json
[root@ip-172-31-13-38 mysql_back]#

admin: 登录到Cloudera Manager的用户名

admin: 对应admin_username用户的密码

172.31.13.38: 是Cloudera Manager服务器的主机IP

./cm-deployment.json: 保存配置文件的路径和文件名

将上述提到的四个参数修改当前集群对应的信息即可

  • 恢复集群配置数据

注意:此功能只有Cloudera许可证才可以使用

1.进入Cloudera Manager管理平台,停止集群服务。

注意:如果在进行API调用操作之前未停止集群,那么API调用将在运行作业之前停止所有集群服务,任何运行的作业和数据都会丢失。

2.登录到Cloudera Manager所在的服务器执行以下命令。

代码语言:javascript
复制
[root@ip-172-31-13-38 mysql_back]# curl -H "Content-Type: application/json" --upload-file ./cm-deployment.json -u admin:admin http://172.31.13.38:7180/api/v19/cm/deployment?deleteCurrentDeployment=true

注意:卸载CDH并不需要执行这一步骤还原集群相关配置,放在这里仅供参考。

记录用户数据目录

在后面的章节正式开始卸载时,各个组件的用户数据目录会删除。主要包括如/var/lib/flume-ng /var/lib/hadoop* /var/lib/hue /var/lib/navigator /var/lib/oozie /var/lib/solr /var/lib/sqoop* /var/lib/zookeeper data_drive_path/dfs data_drive_path/mapred data_drive_path/yarn,默认配置是在这些路径下。但是有些时候,你可能通过Cloudera Manager重新进行了配置。如果卸载集群时需要完全删除这些数据目录,或者为了保证你卸载后马上重新安装能成功,一旦你进行了个性化配置,你需要在Cloudera Manager中仔细检查这些目录配置并记录。

停止所有服务

4.1 停止集群服务

1.登录到Cloudera Manager,并停止整个集群服务。

2.点击“停止”

3.等待所有服务都正常被停止。

4.2 停止Cloudera Management Service

1.登录到Cloudera Manager,并停止CMS服务。

停用并移除所有Parcel

1.登录Cloudera Manager主页,并进入Parcel页面。

2.“停用”CDH5的Parcel。

3.“从主机删除”CDH5的Parcel

4.“删除”CDH5的Parcel。

成功后,CDH5.16.2的Parcel是“下载”状态,如下图所示。

注:如果你的集群中还有其他Parcel,比如Kudu,Kafka,CDSW或者Spark,你需要将上面的步骤都做一遍,即“停用”->“从集群中删除”->“删除”。

删除集群

1.登录到Cloudera Manager,并删除整个集群。

2.删除成功后,通过Cloudera Manager已经看不到集群。

卸载Cloudera Manager Server

1.登录到Cloudera Manager节点,然后停止CM Server服务。

代码语言:javascript
复制
[root@ip-172-31-13-38 ~]# systemctl stop cloudera-scm-server

2.移除Cloudera Manager Server相关包。

代码语言:javascript
复制
[root@ip-172-31-13-38 ~]# yum -y remove cloudera-manager-server

卸载Cloudera Manager Agent和其管理的软件

1.在所有节点停止Cloudera Manager Agent服务

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list  "systemctl stop cloudera-scm-agent"

2.在所有节点运行清除Cloudera所管理软件的命令。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum -y remove 'cloudera-manager-*'"

3.所有节点运行clean命令。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "yum clean all"

移除Cloudera Manager和用户数据

9.1 Kill Cloudera Manager和相关服务的进程

1.在所有节点执行以下脚本。

代码语言:javascript
复制
for u in cloudera-scm flume hadoop hdfs hbase hive httpfs hue impala llama mapred oozie solr spark sqoop sqoop2 yarn zookeeper;
do 
sudo kill $(ps -u $u -o pid=); 
done

注:如果按照前面的步骤都是正常停止CDH相关服务,该步骤可以不用执行。

9.2 移除Cloudera Manager数据

1.在所有节点执行umount命令,以下采用批量脚本执行。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "umount cm_processes"
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "df -hl"    

注:可能要多次执行或者要稍微等待一会才能umount成功。

2.在所有节点删除Cloudera Manager数据。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -Rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/cloudera* /var/log/cloudera* /var/run/cloudera*"

9.3 移除Cloudera Manager Lock文件

1.在所有节点执行删除命令,以下采用批量脚本执行。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm /tmp/.scm_prepare_node.lock"

9.4 移除用户数据

1.在所有节点执行删除命令,以下采用批量脚本执行。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm /tmp/.scm_prepare_node.lock"

2.在所有节点执行删除Hadoop相关数据命令,以下采用批量脚本执行。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -rf /dfs /yarn /impala"

注:根据实际情况,该步骤每台数据节点可能会有多个DataNode或者YARN临时文件或者Impala临时文件目录,完全卸载需要都删除。

3.在所有节点删除/etc下的配置文件。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -rf /etc/cloudera* /etc/flume* /etc/hadoop* /etc/zookeeper* /etc/hive* /etc/hue /etc/impala /etc/sqoop* /etc/oozie /etc/hbase* /etc/kafka /etc/kudu /etc/mahout /etc/spark* /etc/llama /etc/solr /etc/sentry"

4.在所有节点删除/var/log下的日志文件夹。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -rf /var/log/cloudera* /var/log/hadoop* /var/log/hbase /var/log/hive /var/log/hue* /var/log/impala* /var/log/kudu /var/log/oozie /var/log/spark* /var/log/zookeeper /var/log/kafka"

5.在所有节点删除/opt/cloudera下的安装文件。

代码语言:javascript
复制
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -rf /opt/cloudera*"

6.卸载外部数据库MySQL,并删除相关数据。

代码语言:javascript
复制
[root@ip-172-31-13-38 ~]# systemctl stop mariadb  
[root@ip-172-31-13-38 ~]# yum -y remove maria*
[root@ip-172-31-13-38 ~]# rm -rf /var/lib/mysql*

至此:CDH5.16.2卸载完毕。

参考:

代码语言:javascript
复制
https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/cm_ig_uninstall_cm.html
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档