hadoop-hdfs-journalNode
JournalNode集群(JN集群)是Hadoop HDFS高可用(HA)架构的核心组件,专为消除NameNode单点故障而设计。它通过分布式日志存储确保Active和Standby NameNode间的元数据一致性,在主节点故障时支持无缝切换。以下是其详细解析:
核心功能
JournalNode集群的核心作用是管理元数据变更日志(EditLog)的共享存储 。在非HA模式下,EditLog仅存储在NameNode本地,故障时易丢失数据;而HA模式下,所有元数据变更(如文件创建、删除)通过JN集群同步:
- Active NameNode将EditLog写入JN集群,而非本地磁盘。
- Standby NameNode实时从JN集群读取并重放日志,保持内存元数据同步。
这一机制保障故障切换时数据完整性,避免手动恢复开销 。
工作机制
JN集群采用分布式共识协议(如Paxos)实现高效同步 :
- 写入流程:Active NameNode向JN集群写入EditLog时,需多数节点确认(如3节点集群需至少2节点成功写入),确保日志原子的持久化 。
- 同步流程:Standby NameNode轮询JN集群获取新日志,实时更新自身状态,减少切换延迟至秒级 。
- 故障处理:若部分JN节点宕机,剩余节点继续服务,但少于多数(如3节点仅1节点存活)将阻塞写入,防止脑裂 。
部署架构
JN集群需独立部署于奇数节点(如3、5节点),遵循多数派原则以保证高可用 :
- 节点角色:每个JournalNode进程平等,无主从之分,协同处理日志存储。
- 配置要求:节点需分散