集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
基本语法:
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
非正常关闭hadoop集群,如直接关闭虚拟机,导致hdfs中有些块丢失了或者损坏。这时hadoop就会进入安全模式。
发生这种情况:要先手动退出安全模式,再处理坏的数据块。
1、退出安全模式:
第一种:正常退出安全模式
hdfs dfsadmin -safemode leave
如提示Safe mode is OFF,那就说明退出成功,但有时候这个命令也没办法退出安全模式,就需要使用强制退出。
第二种:强制退出安全模式
hdfs dfsadmin -safemode forceExit
2、处理坏的数据块:
方法一、直接删除坏的数据块
方法二、修复坏的数据块
① 检测路径下是否有坏块:
bin/hdfs fsck /
② 删除路径下的坏块:
bin/hdfs fsck / -delete
③ 修复坏块:
hdfs debug recoverLease -path / -retries 5
###retries 为重试次数
########Corrupt blocks表示坏掉的块
④ 坏的数据块:
/vul/file/old/9/file: MISSING 1 blocks of total size 10315 B.Status: CORRUPT
Total size: 596245766 B
Total dirs: 570
Total files: 758
Total symlinks: 0
Total blocks (validated): 660 (avg. block size 903402 B)
UNDER MIN REPL’D BLOCKS: 660 (100.0 %)
dfs.namenode.replication.min: 1
CORRUPT FILES: 660
MISSING BLOCKS: 660
MISSING SIZE: 596245766 B
CORRUPT BLOCKS: 660
Minimally replicated blocks: 0 (0.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 0.0
Corrupt blocks: 660
Missing replicas: 0
Number of data-nodes: 1
Number of racks: 1
FSCK ended at Tue Dec 31 10:02:48 CST 2019 in 2844 milliseconds
The filesystem under path ‘/’ is CORRUPT
———————————————————
用 df -h命令查看集群空间的使用情况
df -h
发现:磁盘被占用100%,空间被占用。
当硬盘使用超过90%时,namenode就会进入安全模式,强制退出也不行。
发生这种情况:
1、检查并杀死无用进程,释放资源
① 在 /opt 目录下执行 lsof |grep delete 查看对应的进程号,使用 kill -9 进程号,杀掉对应进程即可;
② ps -a (或使用top命令)查看所有进程,使用 kill -9 进程号,杀掉无用进程。
2、删除硬盘中的某些文件,释放空间
3、对硬盘进行扩容