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元数据合并功能异常,需要修复
1、EMR控制台首页,选择“集群服务>HDFS>角色管理” ,查看standby namenode的“健康状态”是否为“良好”,若为否,执行2
2、在“角色管理”界面 选中standby namenode项,点击“重启服务”,等待启动完成。若启动失败,执行4;若成功,执行3
3、等待1个NameNode合并元数据的周期时间(EMR的 namenode checkpoint周期为默认值3600秒)后,执行“集群巡检”,检查告警是否恢复
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的生成时间
cd /data/emr/hdfs/namenode/current
stat -c %y $(ls -t | grep "fsimage_[0-9]*$" | head -1)
8、备NameNode合并元数据的功能异常。执行以下命令查看是否为存储空间不足造成。
进入到FsImage存储目录,查看最近一个的FsImage的大小(单位为MB),如下。
查看最近一个的FsImage的大小
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。
df -m ./ | awk 'END{print $4}'
10、清理该目录所在磁盘的冗余文件,以便给元数据存放预留足够的空间。空间清理完毕后等待1个NameNode合并元数据的周期时间,执行“集群巡检”,检查告警是否恢复。
11、使用root用户如下命令查看standby NameNode是否能将文件推送到active NameNode上。若成功,执行4,若失败,排查安全组问题
tmpFile=/tmp/tmp_test_$(date +%s)
echo "test" > $tmpFile
scp $tmpFile activeNameNode的业务IP:/tmp
参考步骤8~10
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。