Hadoop Namenode故障转移过程如何工作?
Hadoop的defintive指南说 -Hadoop Namenode故障转移过程如何工作?
每个的Namenode运行一个轻量级的故障转移控制器的过程,其 工作是监视其故障(使用简单 心跳机制)NameNode和触发故障切换应在namenode 失败。
怎么一个namenode可以运行某些东西来检测自己的失败?
谁给谁发心跳?
这个过程在哪里运行?
它如何检测namenode失败?
它通知过渡的人?
的ZKFailoverController(ZKFC)是一种新的组分,它是一个动物园管理员客户端也监视和管理名称节点的状态。每一个运行在的NameNode的机器还运行ZKFC,那ZKFC负责:
健康监测 - 有定期的ZKFC坪当地的NameNode健康检查命令。只要NameNode以及时响应且健康状态,认为节点健康。如果节点崩溃,冻结或以其他方式进入不健康状态,则健康监视器会将其标记为不健康。
ZooKeeper的会话管理 - 当本地NameNode的是健康的,在ZKFC持有ZooKeeper的开放的会话。如果本地NameNode处于活动状态,则它还包含一个特殊的“锁”znode。此锁使用ZooKeeper对“短暂”节点的支持;如果会话过期,锁定节点将被自动删除。
基于ZooKeeper的选 - 如果本地NameNode的是健康的,而ZKFC认为没有其他节点当前持有锁Z序节点,它会自己尝试获取锁。如果成功,则它有“赢得选举”,并负责运行故障转移以使其本地NameNode处于活动状态。
看一看这个Apache PDF是从
http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum
幻灯片16部分:
自动的Namenode故障转移过程Hadoop:
在典型的HA群集中,两*立的机器配置为NameNode。在任何时候,只有一个NameNodes处于Active状态,另一个处于Standby状态。活动NameNode负责群集中的所有客户端操作,而Standby仅充当从服务器,并保持足够的状态以在必要时提供快速故障转移。
为了使待机的Namenode,以保持其与Active的Namenode同步状态,两个节点与一组独立的守护进程称为JournalNodes(JNS)进行通信。
当活动节点执行任何名称空间修改时,它会将修改记录持久记录到大多数这些JN中。备用节点从JN读取这些编辑并应用于其自己的名称空间。
如果发生故障切换,备用服务器将确保在将自己提升为活动状态之前,它已从JounalNodes中读取所有编辑。这确保了在故障转移发生之前命名空间状态已完全同步。
对于HA群集而言,一次只有一个名称节点处于活动状态是至关重要的。 ZooKeeper已用于避免裂脑情况,以便名称节点状态不会因故障转移而发散。
幻灯片8从:http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
总结:名称节点是守护进程&故障切换控制器是守护进程。如果名称节点守护进程失败,故障转移控制器守护进程将检测并采取纠正措施。即使整个机器崩溃,ZooKeeper服务器检测到它,锁定将过期,其他备用名称节点将被选为活动名称节点。
Awsome!谢谢。我认为书本文本不合适,它想convay每个namenode **(机器)**运行一个轻量级故障转移控制器进程,其工作是监视其名称节点**(守护进程)**失败 – K246
我建议编辑您的问题更加通用,如:Hadoop Name节点故障转移过程如何工作? –