Hadoop的HA机制
一、 概述
1、HA机制介绍
HA机制是从hadoop2.0开始引入的,之前的版本中是没有HA机制的。所谓HA,即高可用(7*24小时不中断服务),实现高可用最关键的是消除单点故障,Hadoop-HA严格来说应该分为各个组件的HA机制-HDFS的HA、Yarn的HA。
2、HA机制详解
通过双namenode消除单点故障,双namenode协调工作的要点:
A、元数据管理方式需要改变:
内存中各自保存一份元数据
Edits日志只能有一份,只有Active状态的namenode节点可以做写操作
两个namenode都可以读取edits
共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)
B、需要一个状态管理功能模块
实现了一个zkfailover,常驻在每一个namenode所在的节点
每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识
当需要进行状态切换时,由zkfailover来负责切换
切换时需要防止brain split现象的发生
二、 Hadoop-HA结构图
三、HADOOP-HA部署
软件准备:
hadoop-2.6.5
jdk1.8
硬件准备及配置规划:
3台主机
zookeeper集群配置步骤
1、 配置IP地址
2、 主机名与IP映射
3、 ssh免密码登录
4、 按照jdk并配置环境变量
5、 关闭防火墙
配置Hadoop核心配置文件
a.vi core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.5/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>jredu002:2181,jredu003:2181,jredu004:2181</value>
</property>
</configuration>
b.vi hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<