
hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作。在hadoop1时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是hadoop1中的单点问题,也是hadoop1不可靠的表现。hadoop2就解决了这个问题。
hadoop2.2.0中HDFS的高可靠指的是可以同时启动2个NameNode。其中一个处于工作状态,另一个处于随时待命状态。这样,当一个NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动切换到另一个NameNode提供服务。
这些NameNode之间通过共享数据,保证数据的状态一致。多个NameNode之间共享数据,可以通过Nnetwork File System或者Quorum Journal Node。前者是通过linux共享的文件系统,属于操作系统的配置;后者是hadoop自身的东西,属于软件的配置。
集群启动时,可以同时启动2个NameNode。这些NameNode只有一个是active的,另一个属于standby状态。active状态意味着提供服务,standby状态意味着处于休眠状态,只进行数据同步,时刻准备着提供服务。
1.部署环境
本次安装hadoop HA集群环境:linux centos6.5 位系统,jdk1.7.0_79,hadoop集群分别部署在三台服务器上,依次命名为master,node1,node2
2.Hadoop配置
Hadoop-HA部署组要修改core-site.xml和hdfs-site.xml两文件
2.1 core-site.xml
配置block大小128M
配置hadoop文件目录
配置hdfs路口
配置zookeeper地址
2.2 hdfs-site.xml
配置namenode目录
配置datanode目录
文件副本数
HA服务名
HA namenode 服务器名
配置hadoop1端口
配置hadoop2端口
HA自动切换配置
配置journalnode
配置journalnode目录
配置ssh
3.首次启动hadoop顺序
以下为节点分布图,master,node1,node2为三台服务器
| master | node1 | node2 | |
| namenode | 1 | 1 | |
| datenode | 1 | 1 | |
| Zookeerer(QuorumPeerMain) | 1 | 1 | 1 |
| DFSZKFailoverController | 1 | 1 | |
| JournalNode | 1 | 1 | 1 |
详细过程与hadoop分布式部署配置免密登陆一样
3,2 启动zookeeper
在master,node1,node2三台服务器上启动zookeeper
在zookeeper的bin目录下执行以下命令启动zookeeper
./zkService.sh start
查看各台服务器状态
3.3启动journalnode
在master,node1,node2三台服务器上启动journalnode
在hadoop的sbin目录下执行以下命名启动journalnode
./hadoop-daemon.sh start journalnode
3.4 创建命名空间
在master主节点上创建zkfc命名空间(只需在主节点)
在hadoop的bin目录下执行以下命令
./hdfs zkfc -formatZK
3.5 启动两个namenode所在服务器上zkfc
根据节点分布图在master和node1上启动zkfc
在hadoop的sbin目录下执行以下命令启动
./hadoop-daemon.sh start zkfc
3.6 在主节点master上namenode格式化
Master服务器上,在hadoop的bin目录下执行以下命令
./hadoop namenode -format
3.7 启动master上namenode节点
在master上hadoop的sbin目录下执行以下命令
./hadoop-daemon.sh start namenode
3.8 在备namenode节点拷贝主namenode节点格式化文件
在node1服务器hadoop的bin目录下执行以下命令,将主节点格式化文件拷贝过来
./hdfs namenode -bootstrapStandby
3.9 启动备namenode
进入hadoop的sbin目录启动namenode
./hadoop-daemon.sh start namenode
3.10 启动datenode
启动master,node1,node2三台服务器上datanode,进入hadoop的sbin目录启动datenode
./hadoop-daemon.sh start datanode
3.11 总结
以上所有操作为首次启动hadoop的hdfs过程,以后启动hdfs只需 start-dfs.sh或者 start-all.sh命令即可。
4.测试HA部署
分别登陆namenode web端界面,查看namenode状态
master服务器上namenode状态为active
node1服务器上namenode状态为standby
手动切换
将node1切换到master服务器上,执行以下命令
./hadoop-2.2.0/bin/hdfs haadmin -failover hadoop2 hadoop1
