以下是在CentOS上实现HDFS高可用性的核心方案,基于ZooKeeper和JournalNode实现故障自动切换:
集群规划
基础环境准备
ZooKeeper集群配置
conf/zoo.cfg中配置集群信息(如server.1=node1:2888:3888)。dataDir目录下创建myid文件,写入唯一ID(如节点1写1)。zkServer.sh start。HDFS高可用配置
hdfs-site.xml:
dfs.nameservices:指定集群名称(如mycluster)。dfs.ha.namenodes.mycluster:列出NameNode节点(如nn1,nn2)。dfs.namenode.rpc-address/http-address:配置Active和Standby节点的RPC和HTTP地址。dfs.namenode.shared.edits.dir:指向JournalNode集群(如qjournal://node1:8485;node2:8485;node3:8485/mycluster)。dfs.client.failover.proxy.provider:设置为ConfiguredFailoverProxyProvider,启用自动故障转移。core-site.xml:
fs.defaultFS:指向集群名称(如hdfs://mycluster)。初始化与启动
hdfs namenode -format,初始化元数据。hdfs namenode -bootstrapStandby,同步元数据。hdfs --daemon start journalnode。hdfs zkfc -formatZK,并设置开机自启。验证与测试
hdfs dfsadmin -report查看集群状态,确认NameNode状态为active/standby。监控与维护
关键组件说明:
参考来源: