FederationMetrics:
ViewFileSystem:
主要作用:维护和多个NameNode集群文件路径之间的映射关系。在用户层面不需要区分多个集群。
例配置:
<configuration>
<property>
<name>fs.viewfs.mounttable.test.link./user</name>
<value> hdfs://slave1:9000/user </value>
</property>
<property>
<name>fs.viewfs.mounttable.test.link./tmp</name>
<value> hdfs:/ master:9000/tmp </value>
</property>
<property>
<name>fs.viewfs.mounttable.test.link./data</name>
<value> hdfs://slave2:9000/data</value>
</property>
</configuration>
成员:
ViewFileSystem(): 根据配置文件初始化要映射的集群文件路径。 ViewFileSystem->initialize->InodeTree(根据配置初始化)->createLink
InodeTree<FileSystem>:fsState: 映射HDFS集群路径。
HA(High Availability):
HAState:
BackupNode:
DFSZKFailoverController:
主要作用:继承自ZKFailoverController
成员:
doRun(): 进行初始化 initZK(),initRPC(), initHM(), startRPC(), mainLoop()。
recheckElectability():检查当前服务状态病加入选举
ActiveStandbyElector:
HealthMonitor:doHealthChecks(),进行健康检查
ActiveStandbyElector:
主要作用:
成员:
becomeActive():
becomeStandby():
ZooKeeper zkClient:创建节点,写入NameNode节点信息
processResult():zkClient.create() 的回调函数。如果节点创建成功则执行becomeActive(),如果节点已存在在执行becomeStandby(). 函数调用过程processResult()->becomeActive()->ElectorCallbacks implements ActiveStandbyElectorCallback.becomeActive()->ZKFailoverController.becomeActive()->HAServiceProtocolHelper.transitionToActive()->NameNodeRpcServer.transitionToActive()->NameNode.transitionToActive()