本文介绍NameNode或JournalNode的editlogs目录占用较大磁盘空间的解决方案。
问题原因
HDFS依赖FsImage Checkpoint进行editlogs合并,当FsImage Checkpoint出现异常时,会导致editlogs无法合并,通常异常情况是由于FsImage目录写满或磁盘异常等情况引起的,此时NameNode重启时间也会变得很长。NameNode FsImage Checkpoint失败后,该FsImage目录默认不会再次使用,需要设置开启FsImage目录自恢复功能。
解决方案
手动开启FsImage目录自恢复选项。
su - hdfs hdfs dfsadmin -restoreFailedStorage true
说明手动开启FsImage目录自恢复选项,重启后失效。
开启成功后,NameNode后续自动FsImage Checkpoint时,会先尝试恢复FsImage目录。
restoreFailedStorage is set to true
可选:手动NameNode Checkpoint,详情请参见手动进行NameNode checkpoint。
手动Checkpoint后会立刻触发editlogs合并,可以快速减少editlogs产生的磁盘占用,但是需要NameNode进入到SafeMode,并会造成短暂的HDFS不可用。
默认开启FsImage目录自恢复功能。
在E-MapReduce控制台的HDFS服务页面,选择dfs.namenode.name.dir.restore,值为true的自定义配置,下次重启NameNode后FsImage目录自恢复功能会自动打开。
,添加参数为
文档内容是否对您有帮助?