在CentOS上实现HDFS高可用性需配置NameNode主备、JournalNode、ZooKeeper等组件,核心步骤如下:
- 集群规划:至少准备3台CentOS节点(1主2备NameNode,可兼任JournalNode),确保网络互通。
- 配置NameNode
- 修改
hdfs-site.xml:设置dfs.nameservices(集群名)、dfs.ha.namenodes(主备NameNode标识)、dfs.namenode.rpc-address(主备节点RPC地址)、dfs.namenode.shared.edits.dir(JournalNode共享存储路径)等参数。 - 格式化NameNode:在主节点执行
hdfs namenode -format,并同步元数据到备节点hdfs namenode -bootstrapStandby。
- 修改
- 部署JournalNode
- 至少配置3个JournalNode节点,用于存储NameNode编辑日志,确保主备数据一致。
- 在
hdfs-site.xml中指定JournalNode目录dfs.journalnode.edits.dir,并启动JournalNode服务。
- 集成ZooKeeper
- 配置ZooKeeper集群监控NameNode状态,实现故障自动转移。
- 在
core-site.xml中设置ha.zookeeper.quorum为ZooKeeper节点地址。
- 启动与验证
- 启动顺序:ZooKeeper → JournalNode → NameNode(先主后备)→ DataNode。
- 验证:通过
hdfs dfsadmin -report查看节点状态,模拟主节点故障,确认备节点自动接管。
关键组件作用:
- NameNode主备:主节点处理客户端请求,备节点实时同步元数据,故障时快速切换。
- JournalNode:存储NameNode编辑日志,确保主备数据一致性。
- ZooKeeper:监控NameNode状态,触发故障转移。
注意事项:
- 配置前备份原始配置文件,避免误操作。
- 定期监控集群状态,确保JournalNode和ZooKeeper服务正常。
- 可结合监控工具(如Prometheus)实时观测集群健康状况。
参考来源: