我了解到在MRv2中,所有的datanodes都会向多个namenodes报告心跳块。这个datanodes到底是在哪里报告的,以便将它保存在所有namenodes中?如果任何namenode崩溃,集群会丢失一些块信息吗?
发布于 2015-06-09 21:43:42
如您所知,在Hadoop2.x系列实现中,在活动备用配置中有一对namenodes。
如果活动namenode失败,则备用将接管活动namenode的职责。
active namenode和备用namenode 共享它们的编辑日志的,因此当备用namenode接管时,它一直读取到共享编辑日志的末尾,以使其状态与active namenode同步。
此外,Datanodes还必须向两个namenodes发送块报告,以便两个namenodes都知道最新的块映射。
因此,在失败的情况下,备用可以知道块映射和最新的编辑日志,因此standy可以非常快地接管。
发布于 2015-06-09 21:21:23
您正在讨论HDFS中的联邦和高可用性概念。请参阅"Hadoop最终指南“中的第3章HDFS概念。简单地说,名称空间意味着,当我们添加更多的namenodes(原因缩放)时,每个名称空间都有一个名称空间,namenode负责这个名称空间。块池,具有特定于该特定命名空间的所有块。名称空间是独立的。概念类似于xml命名空间。
https://stackoverflow.com/questions/30739305
复制相似问题