现象描述
- HDFS进入安全模式,HDFS服务不可用
- HDFS服务页面块丢失项的值大于0
- HDFS服务启动失败,角色实例启动成功
可能原因
- 数据节点硬盘故障,或节点故障可能导致数据副本丢失
- HDFS在如下情况进入安全模式
1.当NameNode启动且等待DataNode上报副本
2.NameNode所在磁盘空间不足。
3.恢复NameNode数据后,元数据与业务数据无法匹配 - HDFS对应的副本全部丢失
定位思路
1.检查FushionInsight Manager告警界面是否有节点,硬盘故障告警
2.检查NameNode的块丢失阈值"dfs.name.safemode.threshold-pct"是否配置过高
处理步骤
1.登录FushionInsight Manager管理界面,选择“运维>告警>告警”,检查是否存在HDFS告警、节点故障、硬盘故障等告警
2.安装客户端程序,以"hdfs"用户使用HDFS客户端工具执行fsck检查文件系统中文件是否完整。
命令实例:
hdfs fsck /
3.若fsck校验仅显示副本丢失,而不是文件丢失(看已有副本数是否大于0),则执行hdfs dfsadmin -safemode leave
退出HDFS安全模式,即可修复。
4.若文件块丢失,检查是否执行恢复了NameNode数据操作。
-是,表示找不到元数据对应的业务数据块,执行hdfs dfsadmin -safemode leave
退出HDFS安全模式,然后执行步骤5
-否,表示文件丢失,执行步骤5
5.若有文件丢失,检查丢失文件的文件路径,并检查文件是否为重要文件
- MapReduce类文件是非常重要的,对非重要文件,退出安全模式后,可执行删除操作。
命令实例:
hdfs fsck [path-to-file] -delete
- 恢复NameNode数据可能导致元数据与业务数据无法匹配,需要执行删除操作
hdfs fsck / -delete
6.检查NameNode的块丢失阈值是否配置过高。
在FushionInsight Manager管理界面,选择“集群>待操作集群的名称>服务>HDFS>配置>全部配置”,选择“NameNode>高可用性”,设置"dfs.namenode.safemode.threshold-pct"值。
集群中只有三个节点时,建议将NameNode的块丢失阈值"dfs.namenode.safemode.threshold-pct"参数值配置为"0.66"
7.重启HDFS服务
网友评论