用于高可用性的Hadoop 2.0名称节点,辅助节点和检查点节点

Rav*_*abu 9 hadoop high-availability hdfs hadoop2

阅读Apache Hadoop文档后,了解辅助节点和检查点节点的职责存在一些小问题

我很清楚Namenode的角色和职责:

  • NameNode将对文件系统的修改存储为附加到本机文件系统文件的日志进行编辑.当NameNode启动时,它从图像文件fsimage读取HDFS状态,然后从编辑日志文件中应用编辑.然后它将新的HDFS状态写入fsimage并使用空的编辑文件开始正常操作.由于NameNode仅在启动期间合并fsimage和编辑文件,因此编辑日志文件可能会在繁忙的群集上随着时间的推移而变得非常大.较大的编辑文件的另一个副作用是下次重新启动NameNode需要更长的时间.

但是在理解辅助名称节点和检查点名称节点职责方面我有一点困惑.

Secondary NameNode:

  • 辅助NameNode定期合并fsimage和编辑日志文件,并使编辑日志大小保持在限制范围内.它通常在与主NameNode不同的机器上运行,因为它的内存要求与主NameNode的顺序相同.

检查点节点:

  • Checkpoint节点定期创建命名空间的检查点.它从活动的NameNode下载fsimage和编辑,在本地合并它们,并将新映像上传回活动的NameNode.Checkpoint节点通常在与NameNode不同的机器上运行,因为它的内存要求与NameNode的顺序相同.Checkpoint节点由配置文件中指定的节点上的bin/hdfs namenode -checkpoint启动.

似乎辅助namenode和Checkpoint节点之间的责任不明确.两者都在进行编辑.那么谁最终会修改?

另外,我在jira中创建了两个错误,以消除理解这些概念的模糊性.

issues.apache.org/jira/browse/HDFS-8913 
issues.apache.org/jira/browse/HDFS-8914 
Run Code Online (Sandbox Code Playgroud)

jav*_*bee 13

的NameNode(小学)

NameNode存储HDFS的元数据.HDFS的状态存储在名为fsimage的文件中,是元数据的基础.在运行时期间,修改只会写入名为edits的日志文件.在NameNode的下一次启动时,将从fsimage读取状态,编辑的更改将应用​​于该状态,新状态将写回fsimage.清除此编辑后,现在已准备好包含新的日志条目.

检查点节点

引入了一个Checkpoint Node来解决NameNode的缺点.更改只是写入编辑,而不是在运行时合并到fsimage.如果NameNode运行一段时间,则编辑变得很大,下一次启动将花费更长时间,因为必须对状态应用更多更改以确定元数据的最后状态.

Checkpoint节点定期从NameNode获取fsimage和编辑并合并它们.结果状态称为检查点.之后将结果上传到NameNode.

还有一种类似的节点称为"辅助节点",但它没有"上传到NameNode"功能.因此NameNode需要从Secondary NameNode获取状态.它也很令人困惑,因为名称表明,如果NameNode失败,则Secondary NameNode接收请求,而不是这种情况.

备份节点

备份节点提供与检查点节点相同的功能,但与NameNode同步.它不需要定期获取更改,因为它接收到一系列文件系统编辑.来自NameNode.它将当前状态保存在内存中,只需将其保存到映像文件即可创建新的检查点.