1、 在HDFS 高可用主要解决的是nn的单点故障问题,在该架构中,snn 已不存在
2、为了保持 nn 对外提供的服务一致,就必须让2个 nn 的元数据一致,我们可以通过 日志集群 进行数据同步。
active nn负责往 QJM 写日志,standby nn负责读取 QJM 的日志。JournalNode 一般是奇数台,当存储的数据达到一半以上,则认为写入日志成功。
3、dn只允许有一个能够管理它的 nn,其内部保存了该管理 nn 的序列号和 active 状态,当 nn 切换状态时,会通知 dn 最新的序列号和 active 状态。
4、FailoverController也叫ZKFC,包含了三个组件:
- HealthMonitor(监控NN健康状况)
- ActiveStandbyElector(监控NN在ZK中的状态记录)
- ZKFailoverController(改变NN状态[activity/standby],防止fancing脑裂)
5、在生产环境中,伪分布式转全分布式,不需要format(一旦format HDFS上的数据就会丢失)。