先达到极限,而后再冲破它

HA高可用

HA概述

  1. 所谓HA(High Available),即高可用(7*24小时不中断服务)。
  2. 实现高可用最要害的策略是打消单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。
  3. Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。
  4. NameNode次要在以下两个方面影响HDFS集群

    NameNode机器发生意外,如宕机,集群将无奈应用,直到管理员重启

    NameNode机器须要降级,包含软件、硬件降级,此时集群也将无奈应用

    HDFS HA性能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果呈现故障,如机器解体或机器须要降级保护,这时可通过此种形式将NameNode很快的切换到另外一台机器。

HDFS-HA工作要点

1.元数据管理形式须要扭转

内存中各自保留一份元数据;Edits日志只有Active状态的NameNode节点能够做写操作;两个NameNode都能够读取Edits;共享的Edits放在一个共享存储中治理(qjournal和NFS两个支流实现);

2.须要一个状态治理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控本人所在NameNode节点,利用zk进行状态标识,当须要进行状态切换时,由zkfailover来负责切换,切换时须要避免brain split景象的产生。

3.必须保障两个NameNode之间可能ssh无明码登录

4.隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务

HDFS-HA主动故障转移工作机制

手动转移命令

hdfs haadmin -failover

然而手动转移不够不便,咱们须要配置主动故障转移,主动故障转移为HDFS部署减少了两个新组件ZooKeeper和ZKFailoverController(ZKFC)过程

HA的主动故障转移依赖于ZooKeeper的以下性能:

  • 故障检测:集群中的每个NameNode在ZooKeeper中保护了一个长久会话,如果机器解体,ZooKeeper中的会话将终止,ZooKeeper告诉另一个NameNode须要触发故障转移。
  • 现役NameNode抉择:ZooKeeper提供了一个简略的机制用于惟一的抉择一个节点为active状态。如果目前现役NameNode解体,另一个节点可能从ZooKeeper取得非凡的排外锁以表明它应该成为现役NameNode。

    ZKFC是主动故障转移中的另一个新组件,是ZooKeeper的客户端,也监督和治理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC过程,ZKFC负责;

  • 衰弱监测:ZKFC应用一个健康检查命令定期地ping与之在雷同主机的NameNode,只有该NameNode及时地回复衰弱状态,ZKFC认为该节点是衰弱的。如果该节点解体,解冻或进入不衰弱状态,衰弱监测器标识该节点为非衰弱的。
  • ZooKeeper会话治理:当本地NameNode是衰弱的,ZKFC放弃一个在ZooKeeper中关上的会话。如果本地NameNode处于active状态,ZKFC也放弃一个非凡的znode锁,该锁应用了ZooKeeper对短暂节点的反对,如果会话终止,锁节点将主动删除。
  • 基于ZooKeeper的抉择:如果本地NameNode是衰弱的,且ZKFC发现没有其它的节点以后持有znode锁,它将为本人获取该锁。如果胜利,则它曾经博得了抉择,并负责运行故障转移过程以使它的本地NameNode为Active。故障转移过程与后面形容的手动故障转移类似,首先如果必要爱护之前的现役NameNode,而后本地NameNode转换为Active状态。

相干材料