告警解释
HDFS的元数据信息存储在NameNode数据目录(由配置项“dfs.namenode.name.dir”指定)中的FsImage文件中。备NameNode会周期将已有的FsImage和JournalNode中存储的Editlog合并生成新的FsImage,然后推送到主NameNode的数据目录。这个周期由HDFS的配置项“dfs.namenode.checkpoint.period”指定,默认为3600秒,即1个小时。如果主NameNode数据目录的FsImage没有更新,则说明HDFS元数据合并功能异常,需要修复。
在主NameNode节点上,系统每5分钟检测其上的FsImage文件的信息。如果在三个合并周期没有新的FsImage文件生成,则系统产生该告警。
当新的FsImage文件生成并成功推送到主NameNode,说明HDFS元数据合并功能恢复正常,告警自动恢复。
告警属性
告警ID | 告警级别 | 是否自动清除 |
---|---|---|
14013 | 重要 | 是 |
告警参数
参数名称 | 参数含义 |
---|---|
来源 | 产生告警的集群名称。 |
服务名 | 产生告警的服务名称。 |
角色名 | 产生告警的角色名称。 |
主机名 | 产生告警的主机名。 |
NameService名 | 产生告警的NameService名称。 |
对系统的影响
如果主NameNode数据目录的FsImage没有更新,则说明HDFS元数据合并功能异常,需要修复。如不修复,HDFS在运行一段时间后,Editlog会一直增长。此时如果重启HDFS,由于要加载非常多的Editlog,会导致启动非常耗时。另外,该告警的产生也说明备NameNode功能异常,导致NameNode的HA机制失效。一旦主NameNode故障,则整个HDFS服务将不可用。
可能原因
- 备NameNode被停止。
- 备NameNode实例运行状态异常。
- 备NameNode合并新的FsImage失败。
- 备NameNode数据目录空间不足。
- 备NameNode推送FsImage到主NameNode失败。
- 主NameNode数据目录空间不足。
处理步骤
1.在FusionInsight Manager首页,选择“运维 > 告警 > 告警”,在告警列表中单击此告警。
2.在告警详情区域,查看“定位信息”,获取告警产生的主NameNode的主机名和所在的NameService名称。
3.选择“集群 > 待操作集群的名称 > 服务 > HDFS > 实例”,在实例列表中找到该NameService的备NameNode实例,查看其“配置状态”是否为“已同步”。
- 是,执行步骤6。
- 否,执行步骤4。
4.勾选该备NameNode实例,单击“启动实例”,等待启动完成。
5.等待1个NameNode合并元数据的周期时间后,查看告警是否清除。
- 是,处理完毕。
- 否,执行步骤6。
查看备NameNode实例运行状态是否正常
6.查看该备NameNode实例的“运行状态”是否为“良好”。
- 是,执行步骤9。
- 否,执行步骤7。
7.勾选该备NameNode实例,单击“更多 > 重启实例”,等待启动完成。
8.启动完成后,等待1个NameNode合并元数据的周期时间,然后查看告警是否清除。
- 是,处理完毕。
- 否,执行步骤30。
备NameNode合并新的FsImage是否失败
9.在FusionInsight Manager首页,选择“集群 > 待操作集群的名称 > 服务 > HDFS > 配置 > 全部配置”,搜索并获取“dfs.namenode.checkpoint.period”的值,该值即为NameNode合并元数据的周期。
10.选择“集群 > 待操作集群的名称 > 服务 > HDFS > 实例”,获取产生该告警的NameService的主、备NameNode节点的业务IP地址。
11.单击“NameNode( xx ,备)”,单击“实例配置”,获取配置项“dfs.namenode.name.dir”的值,该值即为备NameNode的FsImage存储目录。
12.以root或omm用户登录备NameNode节点。
13.进入到FsImage存储目录,查看最新的FsImage的生成时间。
cd 备NameNode存储目录 /current
stat -c %y $(ls -t | grep "fsimage_[0-9]*$" | head -1)
14.执行date命令获取系统当前时间。
15.计算最新FsImage的生成时间和当前时间的时间差,判断该时间差是否大于元数据合并周期的三倍。
- 是,执行步骤16。
- 否,执行步骤20。
16.备NameNode合并元数据的功能异常。执行以下命令查看是否为存储空间不足造成。
进入到FsImage存储目录,查看最近一个的FsImage的大小(单位为MB)。
cd 备NameNode存储目录 /current
du -m $(ls -t | grep "fsimage_[0-9]*$" | head -1) | awk '{print $1}'
17.执行命令查看备NameNode的磁盘剩余空间(单位为MB)。
df -m ./ | awk 'END{print $4}'
18.对比FsImage的大小和目录剩余空间大小,看剩余空间是否还能存储一个FsImage文件。
- 是,执行步骤7。
- 否,执行步骤19。
19.清理该目录所在磁盘的冗余文件,以便给元数据存放预留足够的空间。空间清理完毕后等待1个NameNode合并元数据的周期时间,查看告警是否清除。
- 是,处理完毕。
- 否,执行步骤20。
查看备NameNode推送FsImage到主NameNode是否失败
20.以root用户登录备NameNode节点。
21.执行su - omm命令切换到omm用户。
22.使用如下命令查看备NameNode是否能将文件推送到主NameNode上。
tmpFile=/tmp/tmp_test_$(date +%s)
echo "test" > $tmpFile
scp $tmpFile 主NameNode的业务IP : /tmp
- 是,执行步骤24。
- 否,执行步骤23。
23.联系系统管理员,处理在omm用户下备NameNode无法推送数据到主NameNode的原因。故障恢复后等待1个NameNode合并元数据的周期时间,查看告警是否清除。
- 是,处理完毕。
- 否,执行步骤24。
查看主NameNode数据目录空间是否不足
24.在FusionInsight Manager首页,选择“集群 > 待操作集群的名称 > 服务 > HDFS > 实例”,单击产生告警的NameService的主NameNode,单击“实例配置”,获取配置项“dfs.namenode.name.dir”的值,该值即为主NameNode的FsImage存储目录。
25.以root或omm用户登录主NameNode节点。
26.进入到FsImage存储目录,查看最近一个的FsImage的大小(单位为MB)。
cd 主NameNode存储目录 /current
du -m $(ls -t | grep "fsimage_[0-9]*$" | head -1) | awk '{print $1}'
27.执行如下命令查看主NameNode的磁盘剩余空间(单位为MB)。
df -m ./ | awk 'END{print $4}'
28.对比FsImage的大小和目录剩余空间大小,看剩余空间是否还能存储一个FsImage文件。
- 是,执行步骤30。
- 否,执行步骤29。
29.清理该目录所在磁盘的冗余文件,以便给元数据存放预留足够的空间。空间清理完毕后等待1个NameNode合并元数据的周期时间,查看告警是否清除。
- 是,处理完毕。
- 否,执行步骤30。
收集故障信息
30.在FusionInsight Manager首页,选择“运维 > 日志 > 下载”。
31.在“服务”中勾选待操作集群的“NameNode”。
32.单击右上角的设置日志收集的“开始时间”和“结束时间”分别为告警产生时间的前后30分钟,单击“下载”。
33.请联系运维人员,并发送已收集的故障日志信息。
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
无。