0008-如何卸载CDH(附一键卸载github源码)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

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

1.前置条件

本文档将介绍Cloudera Manager与CDH的卸载,并基于CDH使用parcels安装且未配置安全(AD/LDAP, Kerberos, Data Encryption)的集群,以下是本次测试环境,但不是本操作手册的硬限制:

1.操作系统版本:CENTOS6.5

2.MySQL数据库版本为5.1.73

3.CM版本:CM 5.11

4.CDH版本:CDH 5.11

5.采用root或有sudo权限用户对集群进行卸载

2.用户数据备份

2.1备份HDFS数据

  • hdfs数据备份

使用distcp进行集群之间数据复制进行hdfs数据备份,备份操作如下:

hadoop distcp hftp://namenodeA:port/xxx/ hdfs://namenodeB/xxx

注:此命令需运行在目标集群中执行,确保目标集群空间足够,以上数据目录根据自己集群的真实环境做相应的修改;

namenodeA:源集群namenode节点ip地址

port:源集群端口,默认50070

namenodeB:目标集群namenode节点ip地址

xxx:对应hdfs的数据目录

  • namenode节点元数据备份

登录namenode服务器上,进行如下操作:

#进入safemode模式

[root@ip-172-31-3-217 ~]# sudo -u hdfs hadoop dfsadmin  -safemode ente

DEPRECATED: Use of this script to execute hdfs command is  deprecated.

Instead use the hdfs command for it.

Safe mode is ON

#将所有edits修改flush到fsimage

[root@ip-172-31-3-217 ~]# sudo -u hdfs hadoop dfsadmin –saveNamespace

DEPRECATED: Use of this script to execute hdfs command is  deprecated.

Instead use the hdfs command for it.

Save namespace successful

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

[root@ip-172-31-3-217 ~]# mkdir namenode_back
[root@ip-172-31-3-217 ~]# cd namenode_back/
[root@ip-172-31-3-217 ~]# cd /dfs/nn/
#将nn目录下所有文件压缩至/root/namenode_back/nn_back.tar.gz目录下
[root@ip-172-31-3-217 nn]# tar -czvf  /root/namenode_back/nn_back.tar.gz .
./
./current/
./current/fsimage
./current/fstime
./current/VERSION
./current/edits
./image/
./image/fsimage

2.2备份MySQL元数据

  • 在Mysql安装的服务器上,执行如下操作,备份hive元数据信息

注:如果有hue,sentry,Navigator数据库可以同样备份

2.3备份CDH集群配置数据

通过Cloudera Manager提供的API接口,导出一份JSON文档,该文档包含Cloudera 管理器实例的配置数据,可以通过这份JSON文档备份或恢复Cloudera管理器的部署。

  • 备份集群配置数据
  • 登录到Cloudera Manager所在服务器
  • 运行如下命令:
[root@ip-172-31-3-217 ~]# curl -u admin_username:admin_pass "http://cm_server_host:7180/api/v16/cm/deployment" > path_to_file/cm-deployment.json

admin_username: 登录到ClouderaManager的用户名

admin_pass: 对应admin_username用户的密码

cm_server_host: 是ClouderaManager服务器的主机名

path_to_file: 保存配置文件的路径

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

导出截图:

  • 恢复集群配置数据

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

1.首先进入Cloudera Manager管理平台,进入如下操作

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

2.登录到Cloudera Manager所在的服务器

3.执行如下命令

curl --upload-file path_to_file/cm-deployment.json -u admin_uname:admin_pass http://cm_server_host:7180/api/v16/cm/deployment?deleteCurrentDeployment=true

admin_uname: 登录到ClouderaManager的用户名

admin_pass: 对应admin_uname用户的密码

cm_server_host: 是ClouderaManager服务器的主机名

path_to_file:JSON配置文件的路径

2.4Zookeeper数据目录备份

  • 备份所有Zookeeper服务器的数据目录,以172.31.3.217为例操作如下:
[root@ip-172-31-3-217 ~]# mkdir zookeeper_back

[root@ip-172-31-3-217 ~]# scp -r /var/lib/zookeeper/ /root/zookeeper_back/zookeeper_1

2.5备份用户数据目录

以下路径为Cloudera默认安装目录下个组件用户数据:

/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_driver_path为集群环境部署时设置的目录,根据自己环境进行调整

data_drive_path/dfs

data_drive_path/mapred

data_drive_path/yarn

如需备份相关组件数据,可参考2.4进行数据备份。

3.停止所有服务

3.1打开Cloudera Manager控制台

3.2关闭集群

停止CDH集群,如下图所示操作

点击确认操作,如下图所示

等待所有服务器停止操作成功,如下图所示

3.3关闭Cloudera Management Service

停止Cloudera Manager Service,如下图所示

点击确认对话框,如下图所示

等待服务停止成功,如下图所示

4.解除并移除Parcels

在Cloudera Manager管理界面,进行如下操作

点击上图标识功能,进入如下界面

点击上图标识,选择【仅限停用状态】,点击【确定】

停用后,状态变为“激活”,如下图所示

点击“激活”旁菜单,选择“从主机删除”,如下图所示

点击确认,如下图所示

删除成功后显示如下

5.删除集群

点击Clouder Manager进入主页,如下图所示

删除集群,如下操作

点击“删除”操作,如下图所示

删除成功后显示如下

6.卸载Cloudera Manager Server

6.1停止Cloudera Manager Server和数据库

在集群master服务器上执行如下命令

[root@ip-172-31-3-217 ~]# service cloudera-scm-server stop

#如果使用内置db postgresql需要停止该服务,没有则忽略

[root@ip-172-31-3-217 ~]# service cloudera-scm-server-db stop

6.2卸载Cloudera Manager Server和数据库

使用yum卸载cloudera-scm-server和cloudera-scm-server-db-2,命令如下

[root@ip-172-31-3-217 ~]# yum remove cloudera-manager-server

#如果使用内置db postgresql需要移除该服务,没有则忽略

[root@ip-172-31-3-217 ~]# yum remove cloudera-manager-server-db-2

7.卸载Cloudera Manager Agent和Managed Software

在集群所有的机器上进行如下操作,卸载Cloudera Manager Agent 和Managed Software。

7.1停止Cloudera Manager Agent

在所有服务器上使用如下命令停止Cloudera Manager Agent 服务

[root@ip-172-31-3-217 ~]# sudo service cloudera-scm-agent hard_stop

7.2卸载软件

在集群所有节点执行如下操作:

[root@ip-172-31-3-217 ~]# yum remove 'cloudera-manager-*' avro-tools crunch flume-ng hadoop-hdfs-fuse hadoop-hdfs-nfs3 hadoop-httpfs hadoop-kms hbase-solr hive-hbase hive-webhcat hue-beeswax hue-hbase hue-impala hue-pig hue-plugins hue-rdbms hue-search hue-spark hue-sqoop hue-zookeeper impala impala-shell kite llama mahout oozie pig pig-udf-datafu search sentry solr-mapreduce spark-core spark-master spark-worker spark-history-server spark-python sqoop sqoop2 whirr hue-common oozie-client solr solr-doc sqoop2-client zookeeper

7.3运行清除命令

在集群所有节点执行如下操作:

[root@ip-172-31-3-217 ~]# yum clean all

8.移除Cloudera Manager和用户数据

8.1杀死 Cloudera Manager和Managed进程

在集群所有节点执行如下操作,将所有服务器的Cloudera Manager和Managed进程杀死,命令如下:

8.2移除Cloudera Manager数据

在集群所有节点执行如下命令,删除所有Cloudera Manager数据

umount cm_processes

rm –rf /usr/share/cmf /var/lib/cloudera* /var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera* /etc/cloudera* /usr/lib64/cmf

8.3移除Cloudera Manager Lock File

在集群中所有节点执行如下命令,删除Cloudera Manager Lock File

rm –rf /tmp/.scm_prepare_node.lock

8.4移除用户数据

此步骤将永久删除所有用户数据。为了备份数据,在启动卸载过程之前,使用distcp命令将其复制到另一个集群中。在集群中所有节点执行如下命令,删除用户所有数据:

8.5停止并移除外部数据库

在安装mysql的服务器上进行操作。

  • 停止mysql数据库,操作如下:
service mysqld stop
  • 卸载mysql数据库,操作如下
yum remove mysql*
  • 删除mysql数据目录,操作如下
rm –rf /var/lib/mysql

9.一键卸载脚本说明(GitHub地址)

  • 卸载脚本说明:

autouninstall.sh:自动卸载脚本

components.list:集群所有安装的组件列表

delete.list:需要删除的目录列表,列表中已配置大部分CDH安装默认目录,用户需要对列表末尾的hdfs目录根据自己集群环境进行目录进行相应调整,如下图所示:

node.list:集群所有节点,根据集群环境进行节点配置

user.list:集群所有组件安装时所使用的用户名

  • 脚本使用

注:脚本是在第五步操作完成后,在namenode节点进行一键卸载

运行截图

源码地址:

https://github.com/javaxsky/cdh-shell

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
6月前
|
设计模式 Java 程序员
太爆了!阿里最新出品2023版JDK源码学习指南,Github三天已万赞
最近后台收到很多粉丝私信,说的是程序员究竟要不要去读源码?当下行情,面试什么样的薪资/岗位才会被问到源码? 对此,我的回答是:一定要去读,并且要提到日程上来! 据不完全统计,现在市面上不管是初级,中级,还是高级岗,面试的时候都有可能会问到源码中的问题,它已经成为程序员常规必备的一个技术点。如果你当下想通过一个面试,或者想把中级薪资要到相对于比较高的话,源码这块就必须要会。
69 0
|
3月前
|
缓存 开发工具 git
GitHub标星36k+的超火高质量Git中文教程,源码、实战一把抓
高质量的 Git 中文教程,源于国外社区的优秀文章和个人实践
|
3月前
|
Java 容器
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
你为什么要学习多线程?是因为理想吗?是因为热爱吗? 哦~原来是为了面试打基础、做准备啊!没错,这真的很现实!
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
|
4月前
|
小程序 开发工具 iOS开发
Github小程序客户端源码-Gitter
Github小程序客户端源码-Gitter
33 0
|
4月前
|
Dubbo Java 应用服务中间件
制霸GitHub热榜的Spring Cloud Alibaba源码笔记,果然是阿里传出的
6年前面试最常问的并且可以顺利拿到高薪的技能是 Dubbo 2年前面试,只要你简历上有Spring Cloud 项目的相关经验,肯定会打动面试官,现在呢?恐怕简历上有Dubbo和简单的Spring Cloud技术和经验是无法让面试官高看你的。
|
4月前
|
设计模式 Java 程序员
又搞事!阿里员工竟把上司的400页JDK并发源码指南拿去GitHub置顶
不知道大家闲下来的时候有没有去阅读过JDK源码,虽然看源码有点找虐的感觉,但作为一名程序员,在闲暇时看一下jdk源码,有利于对自己日常的开发环境了解得更加深刻。而且还有以下五点好处。
|
4月前
|
存储 算法 安全
“字节”再次起跳!内部651页剖析HotSpot 源码手册,GitHub开源
阿嘴记得2年前开始研究Java虚拟机时,查遍了网上所有的资料,凡是能遇到一点好的关于Java虚拟机的资料,我都会认真读、一遍读不懂没关系,阿嘴都会搬到自己的日志中记录下来,后面就是对这些日志进行分类整理,然后加上我的理解后不断加工,最后内化成自己的东西。现在市面上系统介绍Java虚拟机的书籍非常少,细致全面的书籍更是市场空白,所以我把我这几年的所学写成了这本“深入剖析Java虚拟机源码剖析与实例详解(基础卷)”,本书以通俗易懂的语言详细介绍Java虚拟机HotSpot的源码实现,可以帮助读者系统掌握类的生命周期和垃圾回收等基本组件的相关知识。对于想全面了解HotSpot虚拟机工作原理和源码实现
|
6月前
|
安全 Java 数据安全/隐私保护
爆肝了!阿里最新版的这份Spring Security源码手册,狂揽GitHub榜首
写在前面 自从 Spring Boot、Spring Cloud 火起来之后,Spring Security 也跟着沾了一把光! 其实我一直觉得 Spring Security 是一个比 Shiro 优秀很多的权限管理框架,但是重量级、配置繁琐、门槛高这些问题一直困扰着 Spring Security 的开发者,也让很多初学者望而却步。直到 Spring Boot 横空出世,这些问题统统都得到缓解。 在 Spring Boot 或者 Spring Cloud 中,如果想选择一个权限管理框架,几乎毫无疑问的选择 Spring Security,Shiro 在这个环境下已经不具备优势了。 但
103 0
|
7月前
|
安全 Java 程序员
火爆全网的Spring Security手册及源码笔记,在Github上标星103K
Spring Security 是一个基于 Spring AOP 和 Servlet 过滤器的安全框架,它提供了安全性方面的解决方案 Spring Security作为非常强大的框架,作为程序员是非常热爱的,我这里整理了四份Spring Security手写笔记及实战手册分享给大家
|
9月前
|
Java 程序员 容器
拿捏了!阿里2023最新JDK源码深度解析小册,Github全站热榜第二
前几日闲来无事逛微信公众号时有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做过多的赘述了,我这篇主要跟大家说说怎么去看源码。