请说明 HDFS 中 NameNode 与 Secondary NameNode 的职责划分,并解释它们之间的协作方式及各自在集群中的作用。
考察说明
考查对 HDFS 核心组件职责和协作机制的理解,区分主节点与辅助节点。
回答思路
- 【回答框架 1】NameNode 是主节点,负责管理文件系统元数据,包括命名空间、目录树、文件块映射,并处理客户端读写请求;Secondary NameNode 并非备机,而是定期合并编辑日志与镜像,辅助 NameNode 维护元数据。
- 【回答框架 2】协同工作过程:Secondary NameNode 定期触发检查点,请求 NameNode 滚动编辑日志,拉取镜像和日志,在本地合并生成新镜像,再传回 NameNode,NameNode 加载后替换旧镜像。
- 【回答框架 3】Secondary NameNode 主要减轻 NameNode 启动时合并日志的压力,防止日志无限增长;它不提供高可用功能,故障切换需依赖其他机制如 HA。
- 【回答框架 4】实际使用中,若 NameNode 失败,Secondary NameNode 不能直接接管,需手动恢复元数据,存在数据丢失风险;因此生产环境多采用高可用方案。
- 【关键点 1】NameNode 管理元数据,Secondary NameNode 定期合并镜像和编辑日志。
- 【关键点 2】Secondary NameNode 不是热备,不提供服务,只辅助检查点。
- 【关键点 3】合并过程需要滚动编辑日志,传输镜像和日志到 Secondary。
- 【关键点 4】检查点机制可加快 NameNode 重启速度,并控制日志大小。
- 【关键点 5】高可用依赖 Active/Standby NameNode,而非 Secondary。
- 【易错点 1】误以为 Secondary NameNode 可以自动故障转移。
- 【易错点 2】忽视 Secondary NameNode 只支持检查点,不保证元数据实时一致。
- 【易错点 3】混淆检查点与 HA 中的日志同步,二者机制不同。