HDFS HA(High Availability)高可用性
参考文献:
官方文档
全文翻译
Hadoop组件之-HDFS(HA实现细节)
这张图片的个人理解
由于NameNode在Hadoop1只有一个节点,可能存在(SPOF)single point of file单节点故障。包括机器故障,软件硬件升级等。
在Hadoop2砍死你使用两台机器配置为NameNode,在任何时候,只有一个处于Active状态。为了保证两个NameNode节点的数据统一性,1:datanode同时向两个NameNode发送心跳和块报告;2:NameNode中磁盘存储的文件主要有镜像文件和编辑日志,通过JournalNode日志节点保证edits文件的可靠性。如下图:
需要配置的四个地方(遵循官方文档即可)
1.share edits
JournalNode
2.NameNode
Active,Standby
3.Client
Proxy代理(Zookper)
4.fence(篱笆)
同一时刻仅有一个NameNode对外提供服务
隔离方式:
SSHfence:两个NameNode之间相互能够无密码登录
启动HA
#1.在各个journalnode节点上启动journalNode服务
$ sbin/hadoop-daemon.sh start journalnode
#2.在nn1上对其进行格式化并启动
$ bin/hdfs namenode -format
$ sbin/hadoop-daemon.sh start namenode
#3.在nn2上同步nn1上的源数据
$ bin/hdfs namenode -bootstrapStandby
#4.在nn2上启动NameNode节点
$ sbin/hadoop-daemon.sh start namenode
#此时,两个节点都是standby状态
#5.将nn1节点的NameNode设置为activity
$ bin/hdfs haadmin -transitionToActive nn1
#获取状态
$ bin/hdfs haadmin -getServiceState nn1
#6.开启各个节点的DataNode
$ sbin/hadoop-deamon.sh start datanode
集群规划
123 | 124 | 125 |
---|---|---|
NameNode | NameNode | |
ZKFC | ZKFC | |
JournalNode | JournalNode | JournalNode |
不需要SecondaryNameNode,因为不会出现重启情况
Zookeeper用于自动故障转移
配置依据官方文档即可
启动带监控的HDFS HA服务器集群
#1.关闭所有hdfs服务
#2.启动ZK集群
$ bin/zkServer.sh start
#3.初始化HA在ZooKeeper中状态
$ bin/hdfs zkfc -formatZK
#4.启动HDFS文件系统,看到所有的NameNode节点上多了一个DFSZKFailoverController即zkfc启动成功
可以通过kill -9 1234来验证