Hadoop集群 HDFS HA

1.我们为什么使用hadoop集群

一般在生产中,机器出现故障是难以避免的,那么如果nn节点宕机了,这个时候就不能对外提供服务
当时如果我们采用hadoop集群,那么一个nn节点挂了,我们另外的一个nn节点就会从standby切换到active状态,对外去提供服务

2.HDFS HA

Hadoop NameNode 高可用 (High Availability) ,也就是说在我们的生产中,一个挂了另外一个还能够继续使用,继续提供服务

HDFS NameNode 高可用整体架构
HDFS NameNode 高可用整体架构
从上图中,我们可以看出 NameNode 的高可用架构主要分为下面几个部分:

Active NameNode 和 Standby NameNode:两台 NameNode 形成互备,一台处于 Active 状态,为主 NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务。

主备切换控制器 ZKFailoverController:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。

Zookeeper 集群:为主备切换控制器提供主备选举支持。

JounalNode:共享存储系统是实现 NameNode 的高可用最为关键的部分,共享存储系统保存了 NameNode 在运行过程中所产生的 HDFS 的元数据。主 NameNode 和NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候,新的主 NameNode 在确认元数据完全同步之后才能继续对外提供服务。

DataNode 节点:除了通过共享存储系统共享 HDFS 的元数据信息之外,主 NameNode 和备 NameNode 还需要共享 HDFS 的数据块和 DataNode 之间的映射关系。DataNode 会同时向主 NameNode 和备 NameNode 上报数据块的位置信息

HA是为了解决单点问题,
通过JN集群共享状态,
通过ZKFC 选举active,
监控状态,自动备援。
DN会同时向active standby nn发送心跳。

ActiveNN:操作记录写到自己的editlog,
同时JN集群也会写一份;
接收 DN的心跳和blockreport
StandbyNN: 接收JN集群的日志,
先是读取执行log操作(重演),使得自己的元数据和activenn节点保持一致;
接收 DN的心跳和blockreport;

JounalNode: 用于 active standby nn节点的同步数据,
部署是2n+1个(3个/5个–>7个)

ZKFC: 单独的进程
监控NN的健康状态
向ZK定期发送心跳,使自己可以被选举;当自己被ZK选举为主的时候,
zkfc进程通过RPC调用使NN的状态变为active,对外提供实时服务,无感知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值