HDFS NameNode HA(高可用)

网友投稿 273 2022-11-17

HDFS NameNode HA(高可用)

1.NameNode HA概述

所谓HA(High Availablity [əˌveɪlə’bɪləti] ),即高可用(7*24小时服务不中断)。通过主备NameNode解决,如果主NameNode发生故障,则切换到备NameNode上,从而解决NameNode单点故障的问题。

实现高可用最关键的目的是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。Hadoop1.x在HDFS集群中NameNode存在单点故障;Hadoop2.0+可以通过NameNode HA解决单点故障的问题。Hadoop2.x中支持两个NameNode做HA,一个主,一个备。Hadoop3.x中支持两个或两个以上的NameNode做HA,一主一备,或一主多备。NameNode主要在以下两个方面影响HDFS集群

NameNode机器发生意外,如宕机,集群将无法使用,直到管理员修复重启后。NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

2.手动NameNode HA概述

dfs.namenode.checkpoint.period 1小时dfs.namenode.checkpoint.txns 100 0000事务dfs.namenode.checkpoint.check.period 3s

一个NameNode进程处于Active状态,另1个NameNode进程处于Standby状态。Active的NameNode负责处理客户端的请求。Active的NN修改了元数据之后,会在JNs的半数以上的节点上记录这个日志。Standby状态的NameNode会监视任何对JNs上edit log的更改。一旦edits log出现更改,Standby的NN就会根据edits log更改自己记录的元数据。当发生故障转移时,Standby主机会确保已经读取了JNs上所有的更改来同步它本身记录的元数据,然后手动完成由Standby状态切换为Active状态。为了确保在发生故障转移操作时拥有相同的数据块位置信息,DNs向所有NN发送数据块位置信息和心跳数据。JNS只允许一台NameNode向JNs写edits log数据,这样就能保证不会发生“脑裂”。手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合

3.自动NameNode HA概述

主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换所有DataNode同时向两个NameNode汇报数据块信息(位置)JNN:集群(属性)同步edits logstandby:备,完成了fsimage+edits.log文件的合并产生新的fsimage,推送回ANN自动切换:基于Zookeeper自动切换方案ZooKeeper Failover Controller:监控NameNode健康状态,并向Zookeeper注册NameNode。NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring data jpa @Query注解中delete语句报错的解决
下一篇:HDFS Federation联邦
相关文章

 发表评论

暂时没有评论,来抢沙发吧~