HDFS故障处理
HDFS 常规故障处理
HDFS块丢失
现象/事件
NameNode监控出现Block Missing告警
可能原因
数据节点硬盘故障,或节点故障可能导致数据副本丢失。
HDFS对应文件的副本全部丢失。
影响范围
任务读取文件异常
处理步骤
执行hdfs fsck [异常文件路径],查看异常文件block健康状况,观察副本数是否大于0,找出异常block信息。
根据异常block信息,查看NameNode业务日志,找出该Block的数据分布情况,即分布在哪些数据节点。
登录这些节点查看DN日志,若日志显示该Block已存在,则依次重启DN服务,观察Block是否能正常汇报给NN服务并恢复该Block。
是,操作结束。
否,则执行步骤4。
联系技术支持,与用户确认是否可以删除。
若可以删除,则执行删除操作:hdfs fsck [异常文件路径] -delete。
NameNode服务卡顿
现象描述
NameNode服务卡顿
可能原因
删除大量文件。
频繁调用getContentSummary接口。
其他异常情况。
定位思路
登录监控系统,查看NameNode RPC请求时间及总文件数。
登录Grafana监控系统,查看OP操作的调用时间。
处理步骤
登录监控系统,查看NameNode RPC请求时间是否有延迟,总文件数是否骤降。
是,观察NameNode是否能恢复。
否,执行步骤2。
登录Grafana监控系统,查看OP操作的调用时间,判断哪些接口调用出现延迟。
从NN的审计日志中过滤这类OP操作,确认这些操作的请求来源IP和目录(文件)。
如果可以根据这些目录(文件)直接判断出具体的作业(结合YARN的WebUI),可以直接杀掉相关任务。
如果请求的IP来自Hadoop集群内部,且较为分散,说明大概率是并发作业引起的;如果请求的IP集中在某一个或几个服务器上,说明较大可能是调度集群或者用户客户端作业引起。
使用该IP登录到服务器上,确认有哪些任务启动时间与异常出现的时间匹配;或者逐个关停可疑问题,来观察是否有缓解性能问题。
与业务方沟通最近发生的作业变更,甚至关停特定作业流或者客户端(调度机) 。
对于非NN内部的问题,如DNS服务、LDAP服务、Ranger服务,需要根据其他方式来确认(如根据jstack或者jvisualvm进行故障排查),并及时重启相关服务。
NameNode元数据损坏
现象/事件:
NameNode进程退出并且无法重启恢复
影响范围:
NameNode服务不可用
故障恢复:
1.主NN异常通过主备切换尝试恢复;
如果无法恢复,修复元数据后重启NameNode服务
2. 备NN:修复元数据后重启NameNode服务
NameNode持续出现处理大量元数据变更请求
现象/事件
NN的审计日志中出现大量的元数据变更请求,如create/mkdir/complete/delete/rename/。
影响范围
会导致NN出现频繁对整个目录树加锁,导致客户端或服务端请求变慢,甚至出现明显卡顿。
故障恢复
从审计日志中判断操作用户和IP,进而判断到相应的作业app,找到相关负责人处理。一般是先停掉作业。
JournalNode节点无法启动
现象/事件
JournalNode由于长时间宕机/磁盘满导致服务异常后,无法启动,报错:java.io.IOException: Can’t scan a pre-transactional edit log
影响范围
单个JN节点异常对NN服务无影响,2/3 JN均异常后,NN服务不可用
故障恢复
备份异常节点的JournalNode本地目录,以测试环境为例,备份:/mnt/dfs/2/hadoop/hdfs/journal/bdms-test2/current目录
将正常运行的JN节点上的目录拷贝至异常节点,并按照原目录权限进行授权
重新启动JournalNode
NameNode机器宕机无法恢复
现象/事件:
Active NameNode机器宕机无法恢复
影响范围
NameNode服务主备切换,存在短时间的任务执行卡顿,数据无丢失
故障恢复
宕机机器上的NameNode迁移,并修改所有服务、客户端配置
HDFS核心数据误删
现象/事件:
误操作删除hdfs数仓核心数据
影响范围:
HDFS服务不可用,数据丢失
操作步骤:
1 关停NameNode服务
2 备份NameNode JournalNode元数据
3 清理NameNode、JournalNode元数据路径下edit相关文件
4 清理NameNode删除数据期间生成的fsimage相关文件,保留删除前的simage相关文件
5 恢复Journalnode服务
6 恢复NameNode服务,待NN完成block上报手动退出safemode
7 将坏文件move到临时路径
以上内容对您是否有帮助?