0482-HDFS上一次检查点异常分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢

1

问题重现

1.通过Ambari界面看到HDFS有如下警告

点开来具体查看发现Active NameNode和Stanby NameNode都有上一次检查点的告警。

2

问题解决

1.执行以下命令手动保存一次HDFS的检查点

[root@ip-172-31-4-109 ~]# sudo -u hdfs hdfs dfsadmin -safemode enter
Safe mode is ON in ip-172-31-4-109.ap-southeast-1.compute.internal/172.31.4.109:8020
Safe mode is ON in ip-172-31-1-163.ap-southeast-1.compute.internal/172.31.1.163:8020
[root@ip-172-31-4-109 ~]# sudo -u hdfs hdfs dfsadmin -saveNamespace
Save namespace successful for ip-172-31-4-109.ap-southeast-1.compute.internal/172.31.4.109:8020
Save namespace successful for ip-172-31-1-163.ap-southeast-1.compute.internal/172.31.1.163:8020
[root@ip-172-31-4-109 ~]# sudo -u hdfs hdfs dfsadmin -safemode leave
Safe mode is OFF in ip-172-31-4-109.ap-southeast-1.compute.internal/172.31.4.109:8020
Safe mode is OFF in ip-172-31-1-163.ap-southeast-1.compute.internal/172.31.1.163:8020
[root@ip-172-31-4-109 ~]#

2.在Ambari界面上检查警告已经消失

3

总结

1.首先通过Ambari查看以下两个参数:

dfs.namenode.checkpoint.period

–两次检查点创建之间的固定时间间隔,默认3600,即1小时。

dfs.namenode.checkpoint.txns

–未检查的事务数量。若没检查事务数达到这个值,也触发一次checkpoint,1,000,000。

一个是21600秒,即6小时,一个是默认值100万。

2.Fayson在执行手动保存检查点之前,看了下Active NameNode和Stanby NameNode上保存的fsimage的checkpoint的情况如下:

符合预期都是在之前6小时就保存了一次checkpoint

3.手动保存checkpoint后,发现最旧的一条被冲掉了,是因为这个受另外一个参数影响:

dfs.namenode.num.checkpoints.retained

–在namenode上保存的fsimage的数目,超出的会被删除。默认保存2个。

4.Fayson的集群环境因为几天没开机了,所以导致HDFS会有这个警告(可能是之前直接关服务器导致),理论如果过6小时,应该可以自动恢复,当然你的集群如果允许停机一会,也可以按照本文描述的方式手动进行保存检查点。

4

附录:checkpoint的过程

以下内容完全转载自网络:

https://blog.csdn.net/amber_amber/article/details/47003589

HDFS将文件系统的元数据信息存放在fsimage和一系列的edits文件中。在启动HDFS集群时,系统会先加载fsimage,然后逐个执行所有Edits文件中的每一条操作,来获取完整的文件系统元数据。

4.1

Edits&fsimage文件

HDFS的存储元数据是由fsimage和edits文件组成。fsimage存放上次checkpoint生成的文件系统元数据,Edits存放文件系统操作日志。checkpoint的过程,就是合并fsimage和Edits文件,然后生成最新的fsimage的过程。

1.Edits文件: 在配置了HA的hadoop2.x版本中,active namenode会及时把HDFS的修改信息(创建,修改,删除等)写入到本地目录,和journalnode上的Edits文件,每一个操作以一条数据的形式存放。Edits文件默认每2分钟产生一个。正在写入的Edits文件以edits_inprogress_*格式存在。

2.fsimage文件: fsimage里保存的是HDFS文件系统的元数据信息。每次checkpoint的时候生成一个新的fsimage文件,fsimage文件同步保存在active namenode上和standby namenode上。是在standby namenode上生成并上传到active namenode上的。

4.2

checkpoint过程

配置了HA的HDFS中,有active和standby namenode两个namenode节点。他们的内存中保存了一样的集群元数据信息,这个后续我会详细用一篇文章介绍HA,所以这里就不多说了。因为standby namenode已经将集群状态存储在内存中了,所以创建检查点checkpoint的过程只需要从内存中生成新的fsimage。

详细过程如下: (standby namenode=SbNN, active namenode=ANN)

  1. SbNN查看是否满足创建检查点的条件:

(1) 距离上次checkpoint的时间间隔 >= ${dfs.namenode.checkpoint.period}

(2) Edits中的事务条数达到${dfs.namenode.checkpoint.txns}限制

这两个条件任何一个被满足了,就触发一次检查点创建。

  1. SbNN将内存中当前的状态保存成一个新的文件,命名为fsimage.ckpt_txid。其中txid是最后一个edit中的最后一条事务的ID(transaction ID)。然后为该fsimage文件创建一个MD5文件,并将fsimage文件重命名为fsimage_txid。

  2. SbNN向active namenode发送一条HTTP GET请求。请求中包含了SbNN的域名,端口以及新fsimage的txid。

  3. ANN收到请求后,用获取到的信息反过来向SbNN再发送一条HTTP GET请求,获取新的fsimage文件。这个新的fsimage文件传输到ANN上后,也是先命名为fsimage.ckpt_txid,并为它创建一个MD5文件。然后再改名为fsimage_txid。fsimage过程完成。

参考:

https://blog.csdn.net/amber_amber/article/details/47003589

https://community.hortonworks.com/questions/36634/namenode-last-checkpoint-script-alert-definition-d.html

提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值