HDFS备NameNode长期故障,如何客户端手动checkpoint

举报
xxlla 发表于 2022/04/23 16:33:33 2022/04/23
【摘要】 适用版本6.5.x。问题背景与现象在备NameNode长期异常的情况下,会积攒大量的editlog,此时如果重启HDFS或者主NameNode,主NameNode会读取大量的未合并的editlog,导致耗时启动较长,甚至启动失败。原因分析备NameNode会周期性做合并editlog,生成fsimage文件的过程叫做checkpoint。备NameNode在新生成fsimage后,会将fsi...

适用版本

6.5.x。

问题背景与现象

在备NameNode长期异常的情况下,会积攒大量的editlog,此时如果重启HDFS或者主NameNode,主NameNode会读取大量的未合并的editlog,导致耗时启动较长,甚至启动失败。

原因分析

备NameNode会周期性做合并editlog,生成fsimage文件的过程叫做checkpoint。备NameNode在新生成fsimage后,会将fsimage传递到Active NameNode。

说明:

由于“备NameNode会周期性做合并editlog”,因此当备NameNode异常时,无法合并editlog,因此主NameNode在下次启动的时候,需要加载较多editlog,需要大量内存,并且耗时较长。

合并元数据的周期由以下参数确定,即如果NameNode运行30分钟或者HDFS操作100万次,均会执行checkpoint。

  • dfs.namenode.checkpoint.period:checkpoint周期,默认1800s。

  • dfs.namenode.checkpoint.txns:执行指定操作次数后执行checkpoint,默认1000000。

解决办法

在重启前,主动执行异常checkpoint合并主NameNode的元数据。

  1. 停止业务。

  2. 获取主NameNode的主机名。

  3. 在客户端执行如下命令:

    source /opt/client/bigdata_env

    kinit admin

    说明:/opt/client 需要换为实际客户端的安装路径

  4. 执行如下命令,让主NameNode进入安全模式,其中linux22换为主NameNode的主机名。

    hdfs dfsadmin -fs linux22:25000 -safemode enter

  5. 执行如下命令,在主NameNode,合并editlog。

    hdfs dfsadmin -fs linux22:25000 -saveNamespace

  6. 执行如下命令,让主NameNode离开安全模式。

    hdfs dfsadmin -fs linux22:25000 -safemode leave

  7. 检查是否真的合并完成。

    cd /srv/BigData/namenode/current

    检查先产生的fsimage是否是当前时间的,是的话表示已经合并完成

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。