前言
再看本文章之前,请先确保已经看过CentOS下hadoop的分布式搭建和分布式协作服务框架Zookeeper安装部署两篇文章,因为本文章是建立在它们基础之上的。
一、HA相关介绍
1、为什么出现HA架构
Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)(也就是namenode单点宕机导致集群不可用的问题)。
NameNode主要在以下两个方面影响HDFS集群:
NameNode机器发生意外
,如宕机,集群将无法使用,直到管理员重启NameNode机器需要升级
,包括软件、硬件升级,此时集群也将无法使用
HDFS HA功能通过配置Active/Standby两个NameNode结点实现在集群中对NameNode元数据的备份来解决上述问题。如果出现故障或者机器需要升级维护,这时可以通过此种方式将NameNode切换到另一台机器。
2、HDFS HA设计
上面两个图展示了HA设计的逻辑图。通过上图可以看出我们的edits是存储在namenode结点中的。而编辑日志记录所有的信息,每次关闭集群edits都会和fsimage合并成新的fsimage,而重启集群的时候,系统会读取fsimage,并生成新的edits。因此HA架构的关键性是保证两个NameNode的edits一致,同时保证edits的安全性,这可以用journalnode实现。同时我们客户端访问HDFS的时候,不再是直接访问NameNode,因为客户端事先不知道哪个NameNode是Active状态,因此我们需要通过代理访问HDFS。除此之外,现在集群中出现了两个NameNode,集群启动的时候可能会出现冲突情况(即两个NameNode都是Active状态),为此我们还需要隔离两个NameNode,确保同一时刻只能有一个NameNode是活跃状态。
综上所述,HA的配置要点如下:
- 共享edits
- 配置两个NameNode
- 客户端通过Proxy访问
- 隔离两个NameNode
二、HA配置
1、规划集群
Hadoop1 | Hadoop2 | Hadoop3 |
---|---|---|
NameNode | NameNode | |
Journ |