一、目的
在海豚跑定时跑kettle的从Kafka到HDFS的任务时,由于Linux服务器的某个文件磁盘空间满了,导致Hadoop的NodeName进入安全模式,此时光执行hdfs dfsadmin -safemode leave命令语句没有效果(虽然显示Safe mode is OFF,但没效果,一旦执行还是报错)
二、报错详情
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/root/3f334a0c-3fb1-44fd-97fe-55a4f5787d39. Name node is in safe mode.
Resources are low on NN. Please add or free up more resourcesthen turn off safe mode manually. NOTE: If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use “hdfs dfsadmin -safemode leave” to turn safe mode off. NamenodeHostName:hurys22
三、NameNode进入安全模式的原因
服务器文件夹的磁盘空间不足,要么加资源扩容,要么删除或转移对应的文件
四、解决措施
(一)第一步,查看磁盘的容量以及当前使用情况
可以看到,磁盘满溢的文件夹是/dev/mapper/centos-root,已用100%,怪不得namenode进入安全模式
而容量最大的是/dev/mapper/centos-home,这个文件夹有241G,但目前只用了4%而已
(二)第二步,查看哪个文件夹的文件大: du -sh /*
可以看到,opt文件夹最大,为31G.因为我之前安装各种工具以及它们的安装包都在这个opt目录
(三)第三步,对文件大的文件夹,要么删除多余文件,要么迁移相关文件
对磁盘满溢的文件夹的文件要么删除,要么迁移到容量大但是使用率低的文件夹/dev/mapper/centos-home
经过一番删除迁移后,最后磁盘的目前情况是
[root@hurys22 soft]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.9G 0 3.9G0% /dev
tmpfs3.9G 0 3.9G0% /dev/shm
tmpfs3.9G 9.7M 3.9G1% /run
tmpfs3.9G 0 3.9G0% /sys/fs/cgroup
/dev/mapper/centos-root50G39G12G78% /
/dev/sda11014M 185M 830M19% /boot
/dev/mapper/centos-home 241G 9.7G 232G5% /home
tmpfs1.6G 4.0K 1.6G1% /run/user/529
tmpfs1.6G 0 1.6G0% /run/user/0
(四)第四步,执行命令语句退出NameNode安全模式
# hdfs dfsadmin -safemode leave
Safe mode is OFF
(五)第五步,验证一下,NameNode是否退出安全模式
[root@hurys22 ~]# hdfs dfsadmin -safemode get
Safe mode is OFF