Skip to content

Latest commit

 

History

History
executable file
·
46 lines (24 loc) · 2.42 KB

6.HDFS高可用性.md

File metadata and controls

executable file
·
46 lines (24 loc) · 2.42 KB

HDFS高可用

  • Checkpoint流程

    checkpoint

    • HDFS的namenode包含Primary Namenode和Secondary Namenode

    • Primary Namenode和Secondary Namenode都包含fsimage文件和edits文件.

    • fsimage文件记录文件系统元数据的永久性检查点,包含文件系统中的所有目录和文件id的序列化信息.

    • edits文件记录文件系统的写操作.

    • 实际生产环境中,Primary Namenode会持续生成edits log文件,里面记录的事物条数达到一定的阈值后会触发归档流程,edits log文件会生成多个edits文件.

    • Secondary Namenode根据设置好的checkpoint阈值(应该就是一个条件吧)定期从Primary Namenode上下载fsimage文件和归档好的edits log文件进行merge(合并)操作,生成新的fsimage文件,并将这个fsimage文件上传到Primary Namenode,这样就能确保Primary Namenode始终持有最新的fsimage文件.

    • 这样的流程有个问题:Secondary Namenode不能持有Primary Namenode上未归档的edits事务,如果出现PNN宕机,SNN是无法恢复未归档的edits事务的,这就会造成数据丢失.

    • PNN重新启动加载fsimage的等待过程很长,会导致整个服务处于不可用的状态.

  • zookeeper

    zookeeper

    • 引入zookeeper可以解决上述可用性差的问题.

    • zookeeper中也存在两个namenode,只不过除了主namenode,另一个叫Standby Namenode,会时刻进行数据的同步,保证与主Namenode数据一致.

    • 只有active Namenode可以将自己的edits log写入到journalNod组成的QJM中,Standby Namenode定期从QJM中读取.

  • ZKFC 使用Zookeeper来选主,监控NN,触发NN状态切换

  • QJM:由多个JournalNode组成的Quorum集群,实现分布式日志的高可用性

  • ANN(Active Namenode)将元数据editlog发布到QJM集群中,SNN(Standby Namenode)从QJM集群上读取集群的EditLog,应用自己的元数据.

  • 高可用参数配置

    参数配置