前言
我的学习环境,不需要保留数据库与集群数据,下次更新集群数据保留与数据库数据保留文章,本文章用途可用在特定的场景中:服务器数量缩减后转做他用,不需要保留任何大数据相关的残留。
卸载前集群状态如下,需要全部卸载而后转做他用:
主机名 | 私网IP | 节点状态 |
---|---|---|
cdh1 | 192.168.5.11 | 主节点、mysql数据库 |
cdh2 | 192.168.5.12 | 从节点 |
cdh3 | 192.168.5.13 | 从节点 |
cdh4 | 192.168.5.14 | 从节点 |
1. 关闭CM服务
1.1 主节点
systemctl stop cloudera-scm-server
systemctl stop cloudera-scm-agent
systemctl stop mysql
1.2 从节点
systemctl stop cloudera-scm-agent
2. 卸载CDH包
yum -y remove cloudera*
3. 卸载MySQL数据库
yum -y remove mysql* MySQL*
4. 删除Linux目录
4.1 用户与组ID存在规范
例如如下规则:
-
大数据所属的用户ID从1501~2000
-
大数据所属的用户ID与组ID保持相等
find / -uid +1500 -a -uid -2001 -exec rm -rf {} \;
或
find / -uid +1500 -a -uid -2001 | xargs rm -rf
4.2 用户与组ID不存在规范
需要用非常危险的办法来删除与CDH相关的目录与文件,不建议使用,方法如下:从根目录开始查找(排除制定的部分目录)与命名模糊匹配的文件夹与文件,而后进行强制删除,如果有必要可以从工作目录搜寻而非根目录
#通过文件夹或文件名匹配
find / \( -path /var/www/html \
-o -path /boot \
-o -path /proc \
-o -path /bin \
-o -path /dev \
-o -path /etc \
-o -path /lib \
-o -path /lib64 \
-o -path /sbin \
-o -path /sys \) -prune \
-o \( -name "*cloudera-scm*" \
-o -name "*zookeeper*" \
-o -name "*hdfs*" \
-o -name "*yarn*" \
-o -name "*mapred*" \
-o -name "*oozie*" \
-o -name "*hue*" \
-o -name "*hive*" \
-o -name "*impala*" \
-o -name "*flume*" \
-o -name "*kudu*" \
-o -name "*hbase*" \
-o -name "*kafka*" \
-o -name "*pig*" \
-o -name "*mysql*" \
-o -name "*solr*" \
-o -name "*llama*" \
-o -name "*sqoop*" \
-o -name "*sentry*" \
-o -name "*spark*" \
-o -name "*hadoop*" \) \
-print | xargs rm -rf
#删除既没有属主又没有属组的文件(这样的文件通常很危险)
find / -nogroup -a -nouser -print |xargs rm -rf
5. 删除user与group
#杀除用户的进程,而后删除用户及其组
for i in \
cloudera-scm \
zookeeper \
hdfs \
yarn \
mapred \
oozie \
hue \
hive \
impala \
flume \
hbase \
kafka \
pig \
mysql \
solr \
llama \
sqoop \
sqoop2 \
sentry \
kudu \
spark \
spark2; do kill $(ps -u $i -o pid=);userdel -r ${i};groupdel ${i}; done
#删除既没有属主又没有属组的文件(这样的文件通常很危险)
find / -nogroup -a -nouser -print |xargs rm -rf
6. 检查
6.1 用户与组
#检查用户
for i in cloudera-scm zookeeper hdfs yarn mapred oozie hue hive impala flume hbase kafka pig mysql solr llama sqoop sqoop2 sentry kudu spark spark2;do cat /etc/passwd |grep -i ${i} ;done
#检查组
for i in cloudera-scm zookeeper hdfs yarn mapred oozie hue hive impala flume hbase kafka pig mysql solr llama sqoop sqoop2 sentry kudu spark spark2;do cat /etc/group |grep -i ${i} ;done
6.2 数据目录
for i in /data01 /data02 /data03 ;do ls -lrt ${i} ; done #按照自己集群的配置查找
……
6.3 文件目录
ls -lrt / #按照自己的理解查询
find / -nogroup -o -nouser -print #查找没有用户或组的文件
find / /proc -prune -o -uid +1500 -a -uid -2001 -print -exec ls -lrt {} \; #排除/proc目录,查找用户ID大于1500且小于2001的文件