上次Checkpoint以来事务总数说明

2022-08-19 11:19:52 浏览数 (2)

问题描述:namenode长时间未做checkpoint

原因:

  • standby NameNode被停止或实例运行状态异常。
  • standby NameNode合并新的FsImage失败。
  • standby或active NameNode数据目录空间不足。
  • standby NameNode推送FsImage到active NameNode失败。

可能影响:

  • HDFS元数据checkpoint功能异常,Editlog会一直增长,重启HDFS 主nameNode,要加载Editlog非常多,导致启动耗时很长
  • Namenode的HA机制失效,主Namenode故障,HDFS服务将不可用

处理建议:

HDFS的元数据信息存储在NameNode数据目录(由配置项“dfs.namenode.name.dir”指定)中的FsImage文件中。standby NameNode会周期将已有的FsImage和JournalNode中存储的Editlog合并生成新的FsImage,然后推送到active NameNode的数据目录。这个周期由HDFS的配置项“dfs.namenode.checkpoint.period”指定,默认为3600秒,即1个小时。如果active NameNode数据目录的FsImage没有更新,则说明HDFS元数据合并功能异常,需要修复

  • 查看standby NameNode是否被停止或实例运行状态是否正常。

      1、EMR控制台首页,选择“集群服务>HDFS>角色管理” ,查看standby namenode的“健康状态”是否为“良好”,若为否,执行2

      2、在“角色管理”界面 选中standby namenode项,点击“重启服务”,等待启动完成。若启动失败,执行4;若成功,执行3

      3、等待1个NameNode合并元数据的周期时间(EMR的 namenode checkpoint周期为默认值3600秒)后,执行“集群巡检”,检查告警是否恢复

  • standby NameNode合并新的FsImage是否失败。

      5、在“集群服务>HDFS>配置管理”,选中hdfs-site.xml文件,获取配置项“dfs.namenode.name.dir”的值,emr默认为“/data/emr/hdfs/namenode”,该值即为standby的NameNode的FsImage存储目录。

      6、在“集群服务>HDFS>角色管理”,获取namenode 主备IP地址

      7、用hadoop用户登录standby namenode机器,进入到FsImage存储目录,查看最新的FsImage的生成时间,如下,与当前机器系统时间(执行date命令查看)相减,若小于合并周期,执行4;若大于,执行8

查看最新的FsImage的生成时间

代码语言:javascript复制
cd /data/emr/hdfs/namenode/current
stat -c %y $(ls -t | grep "fsimage_[0-9]*$" | head -1)

      8、备NameNode合并元数据的功能异常。执行以下命令查看是否为存储空间不足造成。

            进入到FsImage存储目录,查看最近一个的FsImage的大小(单位为MB),如下。

查看最近一个的FsImage的大小

代码语言:javascript复制
cd  /data/emr/hdfs/namenode/current/current
du -m $(ls -t | grep "fsimage_[0-9]*$" | head -1) | awk '{print $1}'

        9、执行命令查看备NameNode的磁盘剩余空间(单位为MB),若剩余空间不能存储一个FsImage文件,执行10,若大于,执行4

代码语言:javascript复制
df -m ./ | awk 'END{print $4}'

       10、清理该目录所在磁盘的冗余文件,以便给元数据存放预留足够的空间。空间清理完毕后等待1个NameNode合并元数据的周期时间,执行“集群巡检”,检查告警是否恢复。

  • 查看standby NameNode推送FsImage到active NameNode是否失败。

       11、使用root用户如下命令查看standby NameNode是否能将文件推送到active NameNode上。若成功,执行4,若失败,排查安全组问题

        tmpFile=/tmp/tmp_test_$(date %s)

        echo "test" > $tmpFile

         scp $tmpFile activeNameNode的业务IP:/tmp

  • 查看active NameNode数据目录空间是否不足。

          参考步骤8~10

emr

0 人点赞