背景
读写分离架构篇HDFS 读写分离(总体架构介绍),我们综述了需要怎么实现读写分离。我们深入了解了社区现在正在实现和完善的方式,就是支持从Standby Namenode(SBN)进行读,而从Active Namenode(ANN)进行写,从而实现HDFS的读写分离,提高NameNode整体的读写性能和吞吐量。
而从本章开始,我们就从源码的角度对其实现进行分析和研究。本篇为源码分析的第一篇,介绍HDFS如何从源码的角度支持从 SBN进行基本的读操作。
ObserverNamenode(Namenode)的启动
引入:ObserverNamenode的概念,也属于SBN,我们先来看看Namenode的启动过程对应的变化:
HdfsServerConstants类中描述了Namenode启动的时候可以有哪些启动参数:
/** Startup options */
enum StartupOption{
FORMAT ("-format"),
CLUSTERID ("-clusterid"),
GENCLUSTERID ("-genclusterid"),
REGULAR ("-regular"),
BACKUP ("-backup"),
CHECKPOINT("-checkpoint"),
UPGRADE ("-upgrade"),
ROLLBACK("-rollback"),
ROLLINGUPGRADE("-rollingUpgrade"),
IMPORT ("-importCheckpoint"),
BOOTSTRAPSTANDBY("-bootstrapStandby"),
INITIALIZESHAREDEDITS("-initializeSharedEdits"),
RECOVER ("-recover"),
FORCE("-force"),
NONINTERACTIVE("-nonInteractive"),
SKIPSHAREDEDITSCHECK(