解决namenode一直处于安全模式的问题

问题:hadoop集群的namenode一直处于安全模式。

现象:开启hive时报错:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): 
Cannot create directory /tmp/hive/xxx/01ce6751-cfbf-4120-9d63-0a2432187af2. Name node is in safe mode.

解决:

1、手动关闭安全模式,但是下一次还是会处于安全模式。 

(1)bin/hdfs dfsadmin -safemode get		(功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter  	(功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave	(功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait	(功能描述:等待安全模式状态)

2、具体解决如下:

(1)查看当前的hdfs的blocks的状态

hdfs fsck -blocks

发现有损坏的块:

 

(2)手动关掉安全模式

hadoop dfsadmin -safemode leave

刷新namenode界面,可看到:

 

(3)hadoop fs -rm -r -f 删掉损坏的blocks

hadoop fs -rm -r -f /tmp/logs/xxx/logs-tfile/application_1639968661551_0015/hadoop102_40775

(4)再次查看blocks的状态

hdfs fsck -blocks

 出现下面的界面:Status: HEALTHY 

Status: HEALTHY
 Number of data-nodes:  1
 Number of racks:               1
 Total dirs:                    160
 Total symlinks:                0

Replicated Blocks:
 Total size:    401578760 B
 Total files:   621
 Total blocks (validated):      538 (avg. block size 746428 B)
 Minimally replicated blocks:   538 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       538 (100.0 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    3
 Average block replication:     1.0
 Missing blocks:                0
 Corrupt blocks:                0
 Missing replicas:              1076 (66.666664 %)

Erasure Coded Block Groups:
 Total size:    0 B
 Total files:   0
 Total block groups (validated):        0
 Minimally erasure-coded block groups:  0
 Over-erasure-coded block groups:       0
 Under-erasure-coded block groups:      0
 Unsatisfactory placement block groups: 0
 Average block group size:      0.0
 Missing block groups:          0
 Corrupt block groups:          0
 Missing internal blocks:       0
FSCK ended at Wed Dec 08 16:51:54 CST 2021 in 20 milliseconds


The filesystem under path '/' is HEALTHY

查看hadoopweb端口:

 安全模式关闭

块也正常了

 

要让HadoopNameNode退出安全模式,通常需要通过以下步骤: 1. **确认原因**:首先,你需要确定NameNode进入安全模式的原因。可能是由于数据损坏、系统重启或者长时间无更新。查看NameNode的日志(`hadooplogs/namenode/`目录下的`journal.out`和`editlog`)可以帮助找到问题的线索。 2. **停止服务**:如果NameNode正在运行并且你计划手动退出安全模式,那么先停止`namenode`服务。对于Hadoop 2.x及以后版本: ```shell sudo stop hdfs-namenode ``` 3. **清理日志**:在某些情况下,删除或归档旧的日志可能会帮助NameNode更快地结束安全模式。但是请注意,这应该谨慎操作,因为日志可能包含重要的调试信息: ```shell rm -rf /path/to/hadoop/logs/current/* ``` 4. **清除缓存和状态**:在Hadoop 2.x中,你可以尝试清空`fsimage`和`edits`文件来强制NameNode进入非安全模式,但这只适用于没有丢失太多数据的场景: ```shell hdfs namenode -bootstrapStandby ``` 5. **检查并恢复**:检查NameNode的状态和元数据是否完整。如果有损坏的数据,可能需要执行`fsck`检查和修复(例如 `hdfs fsck -verifyData` 和 `hdfs fsck -recover lost+found`),然后再次尝试启动NameNode。 6. **启动服务**:完成上述步骤后,重新启动NameNode服务: ```shell sudo start hdfs-namenode ``` 7. **监控并确认退出**:NameNode会自动尝试退出安全模式。你需要密切关注其状态,直到看到"Safe mode exited"的消息,表示已经退出安全模式。 请注意,以上步骤应由熟悉Hadoop环境的管理员执行,并且备份数据是必要的,以防万一出现问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值