前言
本节内容主要介绍一下hadoop集群下实现HDFS高可用的自动故障转移,HDFS高可用的自动故障转移主要通过zookeeper实现故障的监控和主节点的切换。自动故障转移为 HDFS 部署增加了两个新组件:ZooKeeper 和 ZKFailoverController (ZKFC)进程。ZooKeeper 是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。在开始本节内容之前,我们需要提前安装好zookeeper集群,可参考作者往期博客内容。

正文
- 集群规划
|-------------|-------------|-------------|
| hadoop101 | hadoop102 | hadoop103 |
| NameNode | NameNode | NameNode |
| JournalNode | JournalNode | JournalNode |
| DataNode | DataNode | DataNode |
| Zookeeper | Zookeeper | Zookeeper |
| ZKFC | ZKFC | ZKF |
[hadoop集群高可用hdfs]
- 在core-site.xml文件中增加zkfc要连接的zkServer地址
core-site.xml配置
<!-- 把多个 NameNode 的地址组装成一个集群 mycluster --> <property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <!-- 指定hadoop数据的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data</value> </property> <!-- 配置HDFS网页登录使用的静态用户为hadoop --> <property> <name>hadoop.http.staticuser.user</name> <value>hadoop</value> </property> <!-- 指定 zkfc 要连接的 zkServer 地址 --> <property> <name>ha.zookeeper.quorum</name> <value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value> </property>
- 在hdfs-site.xml中增加故障转移的配置
hdfs-site.xml配置
dfs.namenode.name.dir file://${hadoop.tmp.dir}/nn dfs.datanode.data.dir file://${hadoop.tmp.dir}/dn dfs.journalnode.edits.dir ${hadoop.tmp.dir}/jn dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2,nn3 dfs.namenode.rpc-address.mycluster.nn1 hadoop101:8020 dfs.namenode.rpc-address.mycluster.nn2 hadoop102:8020 dfs.namenode.rpc-address.mycluster.nn3 hadoop103:8020 dfs.namenode.http-address.mycluster.nn1 hadoop101:9870 dfs.namenode.http-address.mycluster.nn2 hadoop102:9870 dfs.namenode.http-address.mycluster.nn3 hadoop103:9870 dfs.namenode.shared.edits.dir qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/mycluster dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /home/hadoop/.ssh/id_rsa
<!-- 启用 nn 故障自动转移 --> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
- 使用hsync分发修改的配置文件
- 启动zookeeper集群
- 启动 Zookeeper集群后,然后再初始化HA在Zookeeper集群中状态
命令:hdfs zkfc -formatZK
- 启动HDFS服务
- 命令:start-dfs.sh
- 关闭hadoop102的active的节点,查看故障是否会转移
当前激活的节点是hadoop102
关闭hadoop102的namenode节点
- 发现故障并未转移,每个服务需要独立安装psmisc,实现服务通信,命令:yum install psmisc -y
- 当前激活节点变为hadoop103,hadoop101为备用节点,hadoop102无法访问,实现了故障转移
结语
关于hadoop集群之HDFS高可用自动故障转移的内容到这里就结束了,我们下期见。。。。。。








- 当前激活节点变为hadoop103,hadoop101为备用节点,hadoop102无法访问,实现了故障转移