一、HDFS-HA架构原理介绍

二、HDFS-HA详细配置

1、基础配置情况

hadoop01 hadoop02 hadoop03
namenode namenode
datanode datanode datanode
journalnode journalnode journalnode
zkfc zkfc

2、备份之前的hadoop集群配置(三台hadoop都做备份)

  • 备份hadoop文件夹

  • 备份tmp文件,创建新的tmp文件

注意:tmp目录里是生成的dfs目录

3、配置HDFS-HA

官方文档 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

  • 配置hdfs-site.xml

  • 配置core-site.xml

三、HDFS-HA服务启动及自动故障转移测试

1、将hadoop01中的配置分发到hadoop02和hadoop03

2、启动journalnode(三台hadoop)

hdfs格式化之前一定要先启动journalnode服务,要不然会报错

3、在hadoop01上格式化hdfs,并启动hdfs

4、在hadoop02(nn2)上,同步hadoop01(nn1)的元数据信息


5、启动hadoop02上的namenode服务

6、将nn1或nn2切换为Active状态

7、停止服务,重启服务

8、设置Acive节点

9、创建文件夹并上传文件

10、模拟nn1宕机

  • 使用jps查看namenode进程PID

  • 使用kill命令结束hadoop01上面的namenode进程(nn1上的namenode进程)

  • 开启nn2上的ACTIVE


这里出现了一个问题,就是当nn1出现宕机的时候,并不能自动切换到nn2,还需要手动active很麻烦。
所以可以使用zookeeper进行自动切换

11、zookeeper自动故障转移

  • 修改hdfs-site.xml,添加如下

将改动后的文件scp到hadoop02上

12、自动故障转移测试

  • 关闭所有HDFS服务

  • 启动Zookeeper集群

  • 初始化HA在Zookeeper中的状态

  • 启动HDFS服务

  • 在各个NameNode节点上启动DFSZK Failover Controller,先在哪台机器启动,哪个机器的NameNode就是Active NameNode(namenode都需要启动)

  • 打开浏览器发现,自动为nn1做了active

  • 模拟故障测试,关闭nn1