Kas*_*hei 5 hadoop hdfs namenode
我有一个名称节点,在紧急情况下必须关闭,该节点已经 9 个月没有获取 FSImage,并且有大约 5TB 的编辑文件需要在下次重新启动时处理。从大约 9 个月前开始,辅助名称节点就没有运行过(或执行过任何检查点操作),因此 FSImage 已经存在 9 个月了。
HDFS集群中大约有780万个inode。该机总内存约为260GB。
我们已经尝试了 Java 堆大小、GC 算法等的几种不同组合...但无法找到一种组合,可以让重新启动完成,而不会最终因 FGC 而减慢速度。
我有两个问题: 1. 有没有人找到一个名称节点配置,允许成功完成如此大的编辑文件积压?
我们能够使用我在原始帖子的问题 (2) 中建议的版本来处理 5TB 积压的编辑文件。这是我们经历的过程:
dfs.namenode.name.dir名称节点hdfs-site.xml文件属性上配置的位置之外的位置。dfs.namenode.name.dir位置。如果您不熟悉 FSImage 和编辑文件的命名约定,请查看下面的示例。它有望澄清下一个编辑文件子集的含义。seen_txid以包含您在步骤 (3) 中复制的子集中的最后编辑文件所表示的最后事务的值。因此,如果最后编辑的文件是edits_0000000000000000011-0000000000000000020,您需要将 的值更新seen_txid为20。这实际上愚弄了名称节点,让其认为该子集是整个编辑文件集。Startup ProgressHDFS Web UI 的选项卡,您将看到名称节点将以最新的 FSImage 启动,处理现有的编辑文件,创建一个新的 FSImage 文件,然后在等待时进入安全模式数据节点上线。edits_inprogress_########创建一个文件作为占位符。除非这是要处理的最后一组编辑文件,否则删除此文件。假设我们有 FSImagefsimage_0000000000000000010和一堆编辑文件:edits_0000000000000000011-0000000000000000020
edits_0000000000000000021-0000000000000000030
edits_0000000000000000031-0000000000000000040
edits_0000000000000000041-0000000000000000050
edits_0000000000000000051-0000000000000000060
...
edits_0000000000000000091-0000000000000000100
按照上述步骤操作:
dfs.namenode.name.dir另一个位置,例如:/tmp/backupedits_0000000000000000011-0000000000000000020并edits_0000000000000000021-0000000000000000030移动到该dfs.namenode.name.dir位置。seen_txid为包含值,30因为这是我们将在本次运行期间处理的最后一个事务。Startup Progress选项卡确认它是否正确用作fsimage_0000000000000000010起点,然后进行edits_0000000000000000011-0000000000000000020处理edits_0000000000000000021-0000000000000000030。然后它创建了一个新的 FSImage 文件 fsimage_0000000000000000030` 并进入安全模式,等待数据节点出现。edits_inprogress_########,因为这不是要处理的最终编辑文件集。| 归档时间: |
|
| 查看次数: |
1743 次 |
| 最近记录: |