Hadoop-2.7.3高可用配置
简介
前一篇文章已经大致介绍了安装Hadoop需要的一些环境准备工作,这篇文章就来进行下原生Hadoop(完全分布式+高可用)的安装与配置。
Hadoop Namenode存在单点故障问题,Hadoop2.0版本以后可以开启两个Namenode来解决这个问题,一个为Active Namenode管理集群,一个为Standby Namenode作为热备份。
Standby Namenode节点与Active Namenode节点之间数据的同步依赖于JournalNode服务。
Zookeeper和ZKFC(ZKFailoverController)服务可以保证集群中有且只有一个Active状态的Namenode。
本文同时配置了NameNode和Resource Manager的高可用(HA)。
Zookeeper下载:点击进入下载Zookeeper
Hadoop下载:点击进入下载Hadoop
注:本文使用的
Zookeeper版本为3.4.10
Hadoop版本为2.7.3
Zookeeper安装与配置
需要部署奇数(2N+1)个Zookeeper服务,至少3个,3个节点应该具有相同的硬件配置。
解压
# tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/hadoop/
配置环境变量
# vim /etc/profile
export ZOOKEEPER_HOME=/usr/hadoop/zookeeper-3.4.10 |
# source /etc/profile
配置Zookeeper
# cd /usr/hadoop/zookeeper-3.4.10/conf# cp zoo_sample.cfg zoo.cfg# vim zoo.cfg
tickTime=2000 |
创建文件夹
# mkdir -p /hadoop/zookeeper/zkdata# mkdir /hadoop/zookeeper/zklog
创建myid
在/hadoop/zookeeper/zkdata下创建文件myid
编辑内容为当前server数值(1,2,3),需要与上面zoo.cfg中的配置相对应:
master1节点 -> 1
master2节点 -> 2
worker1节点 -> 3

Hadoop安装与配置
解压
# tar -zxvf hadoop-2.7.3.tar.gz -C /usr/hadoop/
进入配置文件目录# cd /usr/hadoop/hadoop-2.7.3/etc/hadoop/
配置core-site.xml
<!-- 指定hdfs nameservice --> |
配置hdfs-site.xml
说明: 启用 NameNode HA的话,不再需要开启Secondary NameNode
<property> |
配置yarn-site.xml
<!-- 启用RM高可用 --> |
配置marped-site.xml
<!-- 指定mr框架为yarn --> |
配置hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131 |
配置slaves
指定DataNode节点(hostname)
worker1 |
将配置好的Hadoop复制到其他节点
# scp -r hadoop-2.7.3 root@master2:/usr/hadoop/...
配置环境变量
# vim /etc/profile
export HADOOP_PREFIX=/usr/hadoop/hadoop-2.7.3 |
# source /etc/profile
集群启动
启动Zookeeper
在master1,master2,worker1上执行:# zkServer.sh start
查看状态# zkServer.sh status,一个leader,两个flower


启动JournalNode
在master1,master2,worker1上执行:# hadoop-daemon.sh start journalnode
格式化HDFS
在master1上格式化namenode:# hdfs namenode -format
在master1上启动namenode:# hadoop-daemon.sh start namenode
在master2上格式化namenode:# hdfs namenode -bootstrapStandby
格式化zkfc
在master1上执行:# hdfs zkfc -formatZK
启动HDFS
在master1上执行:# start-dfs.sh
启动Yarn
在master1上执行:# start-yarn.sh
在master2上执行:# yarn-daemon.sh start resourcemanager
启动完成
Hadoop已经启动完成,可以访问网页:namenode-ip:50070来查看集群状态并浏览集群文件
验证NameNode高可用
首先分别访问:master1:50070和master2:50070网页,查看这两个节点的状态:

可以看到,master1节点为active状态。
然后我们手动kill掉master1的namenode服务:
去master2:50070网页查看发现master2已经变为active状态:
我们再手动启动master1的namenode服务:# hadoop-daemon.sh start namenode
去master1:50070网页查看,master1处于standby状态
自动故障切换验证成功!!!
OVER
至此,Hadoop的部署已经完成,本文给出的配置只是最简单、最基础的配置,其它详细参数配置请参考官网:Apache Hadoop 2.7.3 Doc
当然你也可以测试一下MR任务的执行,跑一个WordCount,这里就不演示了。