【大数据】HDFS高可用

 

Quorum Journal Manager实现高可用

主备

HDFS高可用性功能通过提供在具有热备用的主动/被动配置中在同一群集中运行两个冗余NameNode的选项来解决。这样可以在机器崩溃的情况下快速故障转移到新的NameNode,或者出于计划维护的目的由管理员发起的正常故障转移。在典型的HA群集中,将两个单独的计算机配置为NameNode。在任何时间点,一个NameNode都恰好处于活动状态,而另一个则处于Standby状态。Active NameNode负责集群中的所有客户端操作,而Standby则仅充当从属,并保持足够的状态以在必要时提供快速故障转移。

数据同步

为了使备用节点保持其状态与活动节点同步,两个节点都与一组称为“ JournalNodes”(JN)的单独守护程序进行通信。当活动节点执行任何名称空间修改时,它会持久地将修改记录记录到这些JN的大多数中。Standby节点能够从JN中读取编辑内容,并不断监视它们是否有编辑日志的更改。当“备用节点”看到编辑内容时,会将其应用到自己的名称空间。发生故障转移时,备用服务器将确保在将自身升级为活动状态之前,已从JounalNodes读取所有编辑内容。这样可以确保在发生故障转移之前,名称空间状态已完全同步。

顺序切换(nameNodes-standby和dataNodes之间保持心跳)

为了提供快速的故障转移,备用节点还必须具有有关集群中块位置的最新信息。为了实现这一点,DataNodes被配置了两个NameNodes的位置,并向两者发送块位置信息和心跳信号。

只能有一个active(防止脑裂)

对于HA群集的正确操作至关重要,一次只能有一个NameNode处于活动状态。否则,名称空间状态将在两者之间迅速分散,从而有数据丢失或其他不正确结果的风险。为了确保此属性并防止所谓的“裂脑情况”,JournalNode将仅一次允许单个NameNode成为作者。在故障转移期间,将变为活动状态的NameNode将仅承担写入JournalNodes的角色,这将有效地防止其他NameNode继续处于活动状态,从而使新的Active可以安全地进行故障转移。

 

 

 

zookeeper自动故障转移

自动故障转移为HDFS部署添加了两个新组件:ZooKeeper仲裁和ZKFailoverController进程(缩写为ZKFC)。

Apache ZooKeeper是一项高可用性服务,用于维护少量协调数据,将数据中的更改通知客户端并监视客户端的故障。HDFS自动故障转移的实现依赖ZooKeeper进行以下操作:

  • 故障检测 -群集中的每个NameNode计算机都在ZooKeeper中维护一个持久会话。如果计算机崩溃,则ZooKeeper会话将终止,通知另一个NameNode应触发故障转移。

  • 活动的NameNode选举 -ZooKeeper提供了一种简单的机制来专门选举一个节点为活动的节点。如果当前活动的NameNode崩溃,则另一个节点可能会在ZooKeeper中采取特殊的排他锁,指示它应成为下一个活动的NameNode。

ZKFailoverController(ZKFC)是一个新组件,它是一个ZooKeeper客户端,还可以监视和管理NameNode的状态。运行NameNode的每台机器还运行ZKFC,该ZKFC负责:

  • 运行状况监视 -ZKFC使用运行状况检查命令定期ping通其本地NameNode。只要NameNode以健康状态及时响应,ZKFC就会认为该节点健康。如果该节点已崩溃,冻结或以其他方式进入不正常状态,则运行状况监视器将其标记为不正常。

  • ZooKeeper会话管理 -当本地NameNode运行状况良好时,ZKFC会在ZooKeeper中保持打开的会话。如果本地NameNode处于活动状态,则它还将持有一个特殊的“锁定” znode。该锁使用ZooKeeper对“临时”节点的支持。如果会话到期,则锁定节点将被自动删除。

  • 基于ZooKeeper的选举 -如果本地NameNode运行状况良好,并且ZKFC看到当前没有其他节点持有锁znode,则它本身将尝试获取该锁。如果成功,则它“赢得了选举”,并负责运行故障转移以使其本地NameNode处于活动状态。故障转移过程类似于上述的手动故障转移:首先,如有必要,将先前的活动节点围起来,然后将本地NameNode转换为活动状态。

 

 

来源:https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

 

posted @ 2020-02-29 17:49  得记点什么了  阅读(364)  评论(0编辑  收藏  举报