Hadoop高可用

HA 概述

(1)所谓 HA(High Availablity),即高可用(7*24 小时不中断服务)。
(2)实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA
机制:HDFS 的 HA 和 YARN 的 HA。
(3)NameNode 主要在以下两个方面影响 HDFS 集群
➢ NameNode 机器发生意外,如宕机,集群将无法使用,直到管理员重启
➢ NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用
HDFS HA 功能通过配置多个 NameNodes(Active/Standby)实现在集群中对 NameNode 的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将 NameNode 很快的切换到另外一台机器。

一、HA模式下的信息同步

fsimage信息同步

NameNode 更新很频繁,为了保持主备数据的一致性,为了支持快速Failover, StandbyNameNode 持有集群中Blocks 的最新位置是非常必要的。为了达到这一目的,DataNodes上需要同时配置所有NameNode的地址,同时和它们都建立心跳连接,并把 block 位置发送给它们。

fsimage 数据一致性: #存放名称空间和块设备的映射信息(数据的位置信息);
1》存储数据时,客户端先切分数据,然后访问NameNode1;
2》NameNode1返回给客户端数据存储的位置信息;
3》客户端将数据存储在对应的DataNode节点上;
4》DataNode完成数据的存储后,将存储成功的信息,发送给NameNode1和NameNode2, NameNode1和NameNode2将数据的位置信息存储在fsimage中;

为了让 Standby NameNode与 Active NameNode 保持同步,NameNode都与一组称为 JNS 的互相独立的进程保持通信(Journal Nodes);
当Active NameNode 更新了,它将记录修改日志发送给 Journal Node,Standby Node 将会从 Journal Node 中读取这些日志,将日志变更应用在自己的数据中,并持续关注它们对日志的更新;

fsedtis 数据一致性: #存放NN修改日志信息
1》Active NameNode 为在HDFS集群中使用的NameNode节点;
2》Standby NameNode 为在HDFS集群中备用的NameNode节点;
3》当修改数据时,Active NameNode将修改的请求写入到fsedits中,为了实现fsedits的高可用,将fsedits存储在JNS(Journal node)上【日志服务器】;
4》Standby NameNode 从JNS上【日志服务器】读取这些更新日志,合并到自己的fsimages中;

HA模式下通过添加一个新Journal Nodes节点实现NameNode之间的数据一致性

主从转换

当 Failover 发生时,Standby 首先读取 Journal node 中所有的日志,并将它应用到自己的数据中;
获取 Journal Node 写权限;对于 Journal node 而言,任何时候只允许一个 NameNode 作为writer; 在 Failover 期间,原来的 Standy NameNode 将会接管 Active 的所有职能,并负责向 Journal node 写入日志记录;并提升自己为Active;

二、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.自动故障转移

工作机制

自动故障转移为 HDFS 部署增加了两个新组件:ZooKeeper 和 ZKFailoverController
(ZKFC)进程,如图所示。ZooKeeper 是维护少量协调数据,通知客户端这些数据的改变
和监视客户端故障的高可用服务。
集群规划

node1node2node3
NameNodeNameNodeNameNode
JournalNodeJournalNodeJournalNode
DataNodeDataNodeDataNode
ZookeeperZookeeperZookeeper
ZKFCZKFCZKFC

HDFS-HA故障转移机制
在这里插入图片描述

三、YARN-HA

核心问题

a .如果当前 active rm 挂了,其他 rm 怎么将其他 standby rm 上位
核心原理跟 hdfs 一样,利用了 zk 的临时节点
b. 当前 rm 上有很多的计算程序在等待运行,其他的 rm 怎么将这些程序接手过来接着跑
rm 会将当前的所有计算程序的状态存储在 zk 中,其他 rm 上位后会去读取,然后接
着跑

工作机制

在这里插入图片描述
每个ResourceManager都会在ZooKeeper上抢先注册一个临时节点,当该节点被注册后,其他的RM就不能够再进行注册,只能够与ZK保存心跳联系,当Active的RM挂掉后就会由Standby的RM挣抢注册临时节点成为Active。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aimyon_36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值