以下是在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
。监控与维护
关键组件说明:
参考来源: