文档编写目的
Fayson在两年前的文章中介绍过CDH的卸载,参考《如何卸载CDH(附一键卸载github源码)》,《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。
![7433675a7cdbb2b59afddba2f5f28407.png](https://img-blog.csdnimg.cn/img_convert/7433675a7cdbb2b59afddba2f5f28407.png)
2.将NameNode元数据进行备份,根据自己集群NameNode目录进行如下操作:
![a67af01f06442039d50f42141f54ea67.png](https://img-blog.csdnimg.cn/img_convert/a67af01f06442039d50f42141f54ea67.png)
2.3 备份MySQL数据
![2ad59a6b106f576ede4bd73b5f53c4c6.png](https://img-blog.csdnimg.cn/img_convert/2ad59a6b106f576ede4bd73b5f53c4c6.png)
注:如果有Hue,Sentry,Navigator数据库可以同样备份。
2.4 备份CDH集群配置数据
通过Cloudera Manager提供的API接口,导出一份JSON文件,该文件包含Cloudera Manager所有与部署相关的所有信息如:所有主机,集群,服务,角色,用户,设置等等。可以通过这份JSON文件备份或恢复Cloudera Manager的整个部署。
- 备份集群配置数据
1.登录到Cloudera Manager所在服务器,运行如下命令:
![c1d31755d8b0de5e1cd4a97109f8596f.png](https://img-blog.csdnimg.cn/img_convert/c1d31755d8b0de5e1cd4a97109f8596f.png)
admin: 登录到Cloudera Manager的用户名
admin: 对应admin_username用户的密码
172.31.13.38: 是Cloudera Manager服务器的主机IP
./cm-deployment.json: 保存配置文件的路径和文件名
将上述提到的四个参数修改当前集群对应的信息即可
- 恢复集群配置数据
注意:此功能只有Cloudera许可证才可以使用
1.进入Cloudera Manager管理平台,停止集群服务。
![17abecf32b0b02585953ba157a8a6174.png](https://img-blog.csdnimg.cn/img_convert/17abecf32b0b02585953ba157a8a6174.png)
![e218faacf9b39a9c0c3eba2d89ffbb33.png](https://img-blog.csdnimg.cn/img_convert/e218faacf9b39a9c0c3eba2d89ffbb33.png)
注意:如果在进行API调用操作之前未停止集群,那么API调用将在运行作业之前停止所有集群服务,任何运行的作业和数据都会丢失。
2.登录到Cloudera Manager所在的服务器执行以下命令。
![82c76052f357d4888c2f8b1fd8442dca.png](https://img-blog.csdnimg.cn/img_convert/82c76052f357d4888c2f8b1fd8442dca.png)
注意:卸载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,并停止整个集群服务。
![827c14fab64095c1193bb272f94e9cd1.png](https://img-blog.csdnimg.cn/img_convert/827c14fab64095c1193bb272f94e9cd1.png)
2.点击“停止”
![27dbfbb8f6440304d09b018a318fe2d8.png](https://img-blog.csdnimg.cn/img_convert/27dbfbb8f6440304d09b018a318fe2d8.png)
![57d5d4743830034e95bb9bd45521d982.png](https://img-blog.csdnimg.cn/img_convert/57d5d4743830034e95bb9bd45521d982.png)
3.等待所有服务都正常被停止。
![1322359b15212c2b758be4f0a224ae83.png](https://img-blog.csdnimg.cn/img_convert/1322359b15212c2b758be4f0a224ae83.png)
4.2 停止Cloudera Management Service
1.登录到Cloudera Manager,并停止CMS服务。
![d13c5415652254722dd17f7acd8a0771.png](https://img-blog.csdnimg.cn/img_convert/d13c5415652254722dd17f7acd8a0771.png)
![dd76917aca5ab47a2934dbaf5a06c8dd.png](https://img-blog.csdnimg.cn/img_convert/dd76917aca5ab47a2934dbaf5a06c8dd.png)
![102221679c2e742207941ec9d860265c.png](https://img-blog.csdnimg.cn/img_convert/102221679c2e742207941ec9d860265c.png)
![71d15ae8ff0506154ac3aeac996397e8.png](https://img-blog.csdnimg.cn/img_convert/71d15ae8ff0506154ac3aeac996397e8.png)
停用并移除所有Parcel
1.登录Cloudera Manager主页,并进入Parcel页面。
![e7212630b0509bfa4c450f34cfa37963.png](https://img-blog.csdnimg.cn/img_convert/e7212630b0509bfa4c450f34cfa37963.png)
![98022329dc5e131f7036d9cbe4773709.png](https://img-blog.csdnimg.cn/img_convert/98022329dc5e131f7036d9cbe4773709.png)
2.“停用”CDH5的Parcel。
![495b1bb3e96d57ae288d14a0e8d41bb5.png](https://img-blog.csdnimg.cn/img_convert/495b1bb3e96d57ae288d14a0e8d41bb5.png)
3.“从主机删除”CDH5的Parcel
![4ca271ae499c33d7b8e0c6910738d020.png](https://img-blog.csdnimg.cn/img_convert/4ca271ae499c33d7b8e0c6910738d020.png)
![c6a924701391a1c767b6d21db042d58e.png](https://img-blog.csdnimg.cn/img_convert/c6a924701391a1c767b6d21db042d58e.png)
4.“删除”CDH5的Parcel。
![17054f64eafb5624247fed5916544471.png](https://img-blog.csdnimg.cn/img_convert/17054f64eafb5624247fed5916544471.png)
![b9f5d1e12b1b0bbb5928e673f6d6ffe1.png](https://img-blog.csdnimg.cn/img_convert/b9f5d1e12b1b0bbb5928e673f6d6ffe1.png)
成功后,CDH5.16.2的Parcel是“下载”状态,如下图所示。
![d227ad084cdc1fe6080a91cc6c171366.png](https://img-blog.csdnimg.cn/img_convert/d227ad084cdc1fe6080a91cc6c171366.png)
注:如果你的集群中还有其他Parcel,比如Kudu,Kafka,CDSW或者Spark,你需要将上面的步骤都做一遍,即“停用”->“从集群中删除”->“删除”。
删除集群
1.登录到Cloudera Manager,并删除整个集群。
![7bc6224a0468013e80fa48488b663243.png](https://img-blog.csdnimg.cn/img_convert/7bc6224a0468013e80fa48488b663243.png)
![f743b8defcd010ffa94bce68e64101ca.png](https://img-blog.csdnimg.cn/img_convert/f743b8defcd010ffa94bce68e64101ca.png)
2.删除成功后,通过Cloudera Manager已经看不到集群。
![b9a10ad3376cb0cc712fea1692addb90.png](https://img-blog.csdnimg.cn/img_convert/b9a10ad3376cb0cc712fea1692addb90.png)
卸载Cloudera Manager Server
1.登录到Cloudera Manager节点,然后停止CM Server服务。
2.移除Cloudera Manager Server相关包。
![0d1c5ec5094dd598f6b32f418c48bce5.png](https://img-blog.csdnimg.cn/img_convert/0d1c5ec5094dd598f6b32f418c48bce5.png)
卸载Cloudera Manager Agent和其管理的软件
1.在所有节点停止Cloudera Manager Agent服务
![cbba97613f8456e9653312f80bec61dc.png](https://img-blog.csdnimg.cn/img_convert/cbba97613f8456e9653312f80bec61dc.png)
2.在所有节点运行清除Cloudera所管理软件的命令。
![5458279f52445d622b2693bc49aef0cf.png](https://img-blog.csdnimg.cn/img_convert/5458279f52445d622b2693bc49aef0cf.png)
3.所有节点运行clean命令。
![afe5ffe762c3118b047340906dbe9b4b.png](https://img-blog.csdnimg.cn/img_convert/afe5ffe762c3118b047340906dbe9b4b.png)
移除Cloudera Manager和用户数据
9.1 Kill Cloudera Manager和相关服务的进程
1.在所有节点执行以下脚本。
注:如果按照前面的步骤都是正常停止CDH相关服务,该步骤可以不用执行。
9.2 移除Cloudera Manager数据
1.在所有节点执行umount命令,以下采用批量脚本执行。
![2d33cbf65687959eb2bc6b0b070a8cbd.png](https://img-blog.csdnimg.cn/img_convert/2d33cbf65687959eb2bc6b0b070a8cbd.png)
注:可能要多次执行或者要稍微等待一会才能umount成功。
2.在所有节点删除Cloudera Manager数据。
![6ff88ce43eb9e250f16195088b0b0930.png](https://img-blog.csdnimg.cn/img_convert/6ff88ce43eb9e250f16195088b0b0930.png)
9.3 移除Cloudera Manager Lock文件
1.在所有节点执行删除命令,以下采用批量脚本执行。
![46d1273a253b732f5ba68c2c0b54a0bb.png](https://img-blog.csdnimg.cn/img_convert/46d1273a253b732f5ba68c2c0b54a0bb.png)
9.4 移除用户数据
1.在所有节点执行删除命令,以下采用批量脚本执行。
![2c41d18aa60edc0803e752966d4daa3e.png](https://img-blog.csdnimg.cn/img_convert/2c41d18aa60edc0803e752966d4daa3e.png)
2.在所有节点执行删除Hadoop相关数据命令,以下采用批量脚本执行。
![3ed618fad10fb1d3c13f7d0358d9349b.png](https://img-blog.csdnimg.cn/img_convert/3ed618fad10fb1d3c13f7d0358d9349b.png)
注:根据实际情况,该步骤每台数据节点可能会有多个DataNode或者YARN临时文件或者Impala临时文件目录,完全卸载需要都删除。
3.在所有节点删除/etc下的配置文件。
[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"
![65d5066ac423e506b26116e99552839b.png](https://img-blog.csdnimg.cn/img_convert/65d5066ac423e506b26116e99552839b.png)
4.在所有节点删除/var/log下的日志文件夹。
![896de6a3a9aa0fd74a39fbdbb7df8f7b.png](https://img-blog.csdnimg.cn/img_convert/896de6a3a9aa0fd74a39fbdbb7df8f7b.png)
5.在所有节点删除/opt/cloudera下的安装文件。
[root@ip-172-31-13-38 shell]# sh ssh_do_all.sh node.list "rm -rf /opt/cloudera*"
![cb76aa220888c3e4e55678b9756f932f.png](https://img-blog.csdnimg.cn/img_convert/cb76aa220888c3e4e55678b9756f932f.png)
6.卸载外部数据库MySQL,并删除相关数据。
[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*
![8497d19ea9183b451b6f51df325ac1ab.png](https://img-blog.csdnimg.cn/img_convert/8497d19ea9183b451b6f51df325ac1ab.png)
至此:CDH5.16.2卸载完毕。
参考:
https://docs.cloudera.com/documentation/enterprise/5-16-x/topics/cm_ig_uninstall_cm.html