Apache Hadoop 2.9.2 的HDFS High Available 模式部署

                                        作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

  我们知道,当NameNode进程挂掉后,可以通过SecondName进行补救,我们可以快速进行恢复操作。但是其效率极低,可能等你启动集群成功后,半小时就过去了,会严重影响业务!这个时候我们就需要对NameNode做高可用。我们可以通过双NameNode消除单点故障。

 

 

一.HA概述

1>.所谓High Available,简称HA,即高可用(7*24小时不中断服务)。

2>.实现高可用最关键对策略是消除单点故障。HA严格来说应该分成各个组建对HA机制:HDFS对HA和YARN的HA。

3>.Hadoop2.0版本之前,在HDFS集群中NameNode存在单点故障(SPOF)

4>.NameNode主要在以下两个方面影响HDFS集群:

  第一:NameNode机器发生意外,如宕机,集群将无法使用,知道管理员重启。

  第二:NameNode机器需要升级,包括软件,硬件升级,此时集群也将无法使用。

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

 

二.HDFS HA工作机制

1>.HDFS HA工作要点

一.元数据管理方式需要改变:
  1>.内存中各自保存一份元数据;
  2>.Edits日志只有Active状态的namenode节点可以做写操作;
  3>.两个namenode都可以读取edits;
  4>.共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现);


二.需要一个状态管理功能模块   实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。

三.必须保证两个NameNode之间能够ssh无密码登录。

四.隔离(Fence)
  即同一时刻仅仅有一个NameNode对外提供服务

2>.HDFS HA 自动故障转移工作机制

  我们知道使用命令hdfs haadmin -failover手动进行故障转移,在该模式下,即使 Active NameNode已经失效,系统也不会自动从Active NameNode转移到 Standby NameNode,下面学习如何配置部署HA自动进行故障转移。自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程。

  ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。HA的自动故障转移依赖于ZooKeeper的以下功能:     故障检测:       集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。     Active NameNode选择:       ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前 Active NameNode崩溃,另一个节点(Standby NameNode)可能从ZooKeeper获得特殊的排外锁以表明它应该成为 Active NameNode。
  ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责:     健康监测:       ZKFC使用一个健康检查命令定期地ping与之在相同主机的NameNode,只要该NameNode及时地回复健康状态,ZKFC认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。     ZooKeeper会话管理:       当本地NameNode是健康的,ZKFC保持一个在ZooKeeper中打开的会话。如果本地NameNode处于active状态,ZKFC也保持一个特殊的znode锁,该锁使用了ZooKeeper对短暂节点的支持,如果会话终止,锁节点将自动删除。     基于ZooKeeper的选择:       如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为active。故障转移进程与前面描述的手动故障转移相似,首先将之前Active NameNode进行降级操作,然后本地NameNode转换为active状态。这样做的好处就是防止脑裂,换句话说,尽管之前的Actice NameNode进程启动成功,它也依旧无法成为Active,而是乖乖的做Standby状态,当另一个Activ节点挂掉时它才会发生状态变化。

 

三.搭建zookeeper集群

1>.下载zookeeper软件(下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

[root@node101.yinzhengjie.org.cn ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
--2019-04-12 08:48:40--  https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 37676320 (36M) [application/x-gzip]
Saving to: ‘zookeeper-3.4.14.tar.gz’

100%[============================================================================================================================================>] 37,676,320  7.57MB/s   in 4.5s   

2019-04-12 08:48:45 (7.94 MB/s) - ‘zookeeper-3.4.14.tar.gz’ saved [37676320/37676320]

[root@node101.yinzhengjie.org.cn ~]# 
[root@node101.yinzhengjie.org.cn ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

相关文章:

  • 2021-09-25
  • 2021-05-06
  • 2022-02-19
  • 2022-12-23
  • 2021-06-14
  • 2022-02-22
  • 2021-08-08
猜你喜欢
  • 2021-05-31
  • 2021-12-02
  • 2021-08-12
  • 2022-01-23
  • 2022-01-22
  • 2021-07-28
  • 2021-11-28
相关资源
相似解决方案