hadoop3.x ha高可用-脑裂问题、数据同步问题、namenode单点故障

心跳

在 集群中,各个服务会每间隔一段时间,向对方发送数据,证明自己存在,运行良好,这个就叫 心跳

相当于 军事电影,分散的特战队员,会间隔一段时间,通过对讲机播报自己的位置、状态,如果不播报,就证明出现以外了

HA系统常见问题 - 脑裂问题

在 HA 集群中,通信正常的 主备节点 的 心跳 断开了,本来为一个整体、动作协调的 HA 系统,就分成 2个独立的节点,整个集群处于混乱状态

类比

特战队 由:队长、副队长、多个队员组成

当通信顺畅时,所有人都能收到 队长的命令,都听队长指挥

当通信不顺畅时,队长、副队长不能通信,造成以下结果:

  • 队长、副队长都会等待对方命令,无人下命令
  • 队长、副队长都会下命令,整个特战队员不知道听谁的命令

造成的后果

  • 集群无主:都认为对方是状态好的,自己是备份角色,结果无服务

  • 集群多主:都认为对方出故障了,自己是主角色。互相争抢资源,导致集群混乱,数据损坏。

解决的关键

任意时刻,保持 系统 有且只有一个主角色 提供服务

HA系统常见问题 - 数据同步问题

主备切换保证服务持续可用性的前提是:主备节点之间的状态、数据是一致的

即:备份服务器的数据,与 主服务器的数据,几乎一致,这样,主服务器出现故障,切换备用服务器时,才能正常运行

解决

数据同步,通过 日志重演操作记录

主服务器提供服务时,发生的事务性操作记录成日志,备用服务器 读取日志重演操作

namenode单点故障

在 hadoop 集群中,只有一个 namenode,多个 datanode,所以:

  • datanode 不会发生单点故障
  • namenode 只有一个,会发生单点故障,一旦出现问题,整个 HDFS 集群不可用

解决

hadoop 1.x之前,没有官方解决方案,需要自行解决

hadoop 2.x,在集群中最多可运行 2个 NameNode,实现 ha高可用

hadoop 3.x,在集群中可运行 多个 NameNode,实现 ha高可用


原文出处:/show_1IX26HUJr3Af.html