hdfs—Hadoop2.0名称节点、辅助节点和检查点节点,实现高可用性

0h4hbjxa  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(610)

在阅读了apachehadoop文档之后,在理解辅助节点和检查点节点的职责时有一点混乱
我清楚namenode的角色和职责:
namenode将对文件系统的修改存储为附加到本机文件系统文件edits的日志。当namenode启动时,它从图像文件fsimage读取hdfs状态,然后应用编辑日志文件中的编辑。然后,它将新的hdfs状态写入fsimage,并使用空的edits文件开始正常操作。由于namenode仅在启动时合并fsimage并编辑文件,因此在繁忙的集群中,编辑日志文件可能会随着时间的推移变得非常大。更大的编辑文件的另一个副作用是namenode的下一次重新启动需要更长的时间。
但是我在理解次要namenode和check point namenode职责时有一点困惑。
次要名称节点:
secondary namenode定期合并fsimage和edits日志文件,并将编辑日志大小保持在限制范围内。它通常在与主namenode不同的计算机上运行,因为它的内存需求与主namenode的顺序相同。
检查点节点:
检查点节点定期创建命名空间的检查点。它从活动namenode下载fsimage和编辑,在本地合并它们,然后将新映像上载回活动namenode。检查点节点通常在与namenode不同的计算机上运行,因为它的内存需求与namenode的顺序相同。checkpoint节点由配置文件中指定的节点上的bin/hdfs namenode-checkpoint启动。
似乎次要namenode和checkpoint节点之间的责任并不明确。两人都在做编辑工作。那么最终谁来修改呢?
另一方面,我在jira中创建了两个bug,以消除理解这些概念时的歧义。

issues.apache.org/jira/browse/HDFS-8913 
issues.apache.org/jira/browse/HDFS-8914
x759pob2

x759pob21#

namenode—也称为主节点。namenode存储元数据,即块的数量、位置、副本和其他详细信息。这些元数据可以在主数据的内存中使用,以便更快地检索数据。namenode维护和管理从属节点,并为其分配任务。它应该部署在可靠的硬件上,因为它是hdfs的核心。namenode使用以下两个文件保存其命名空间:
fsimage:fsimage是一个“图像文件”。它包含整个文件系统名称空间,并作为文件存储在namenode的本地文件系统中。
editlogs:它包含最近对文件系统所做的关于最新fsimage的所有修改。
检查点节点-检查点节点是定期创建命名空间检查点的节点。hadoop中的checkpoint节点首先从活动namenode下载fsimage和编辑。然后在本地合并它们(fsimage和edits),最后将新图像上传回活动namenode。检查点节点在目录中存储最新的检查点。它的结构与namenode的目录相同。它允许namenode读取检查点图像。
备份节点—备份节点提供与检查点节点相同的检查点功能。在hadoop中,备份节点在内存中保存文件系统名称空间的最新副本,该副本始终与活动namenode状态同步。备份节点不需要从活动namenode下载fsimage和编辑文件来创建检查点,这与检查点节点或辅助namenode的要求相同,因为它在内存中已经具有名称空间状态的最新状态。备份节点检查点过程更高效,因为它只需要将名称空间保存到本地fsimage文件并重置编辑。namenode一次支持一个备份节点。如果正在使用备份节点,则不能注册任何检查点节点。

n53p2ov0

n53p2ov02#

名称节点(主)
namenode存储hdfs的元数据。hdfs的状态存储在一个名为fsimage的文件中,是元数据的基础。在运行时,修改只会写入一个名为edits的日志文件。在namenode的下一次启动时,状态从fsimage读取,编辑所做的更改将应用于该状态,新状态将写回fsimage。在此之后,编辑被清除并包含新的日志条目。
检查点节点
为了解决namenode的缺点,引入了一个检查点节点。在运行时,更改只是写入编辑,而不是合并到fsimage。如果namenode运行了一段时间,那么编辑量会很大,下一次启动将花费更长的时间,因为必须对状态应用更多的更改才能确定元数据的最后一个状态。
检查点节点定期从namenode获取图像和编辑并合并它们。产生的状态称为检查点。完成后,将结果上载到namenode。
还有一种类似的节点类型叫做“secondary node”,但它没有“upload to namenode”功能。因此namenode需要从辅助namenode获取状态。这也让人感到困惑,因为名称表明,如果namenode失败,则secondary namenode接受请求,而事实并非如此。
备份节点
备份节点提供与检查点节点相同的功能,但与namenode同步。它不需要周期性地获取更改,因为它接收大量的文件系统编辑。从namenode。它将当前状态保存在内存中,只需将其保存到图像文件中即可创建新的检查点。

相关问题