一、HA 概述
所谓 HA (High Availablity),即高可用 (7*24 小时不中断服务) 。实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA。
机制:HDFS 的 HA 和 YARN 的 HA。
NameNode 主要在以下两个方面影响 HDFS 集群
- NameNode 机器发生意外,如宕机,集群将无法使用,直到管理员重启
- NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用
HDFS HA 功能通过配置多个 NameNodes (Active/Standby) 实现在集群中对 NameNode 的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将 NameNode 很快的切换到另外一台机器。
二、HDFS-HA 集群搭建
当前 HDFS 集群的规划
HA 的主要目的是消除 NameNode 的单点故障,需要将 HDFS 集群规划成以下模样
HDFS-HA 核心问题
1)怎么保证三台 NameNode 的数据一致
A、Fsimage : 让一台 nn 生成数据,让其他机器 nn 同步
B、Edits : 需要引进新的模块 JournalNode 来保证 edtis 的文件的数据一致性
2)怎么让同时只有一台 nn 是 active,其他所有是 standby 的
A、手动分配
B、自动分配
3)2nn 在 HA 架构中并不存在,定期合并 fsimage 和 edtis 的活谁来干
由 standby 的 nn 来干
4)如果 nn 真的发生了问题,怎么让其他的 nn 上位干活
A、手动故障转移
B、自动故障转移