1、NameNode

---FSNamesystem:

------FSDirectory 目录树

---------INodeDirectory节点目录

------------List children子节点)

---------------INodeDirectory

---------------INodeFile

------------------BlockInfo[]文件块(一个文件块包括所有的DataNode 存储信息)

---------------------Object[] triplets 存储(DatanodeStorageInfo包话{DatanodeDescriptor,DatanodeStorage})

---------------------BlockCollection保存的是INodeFile 

---------------INodeSymlink

---------INodeMap 

------BlockManager hdfs块管理器

---------DatanodeManager(注册、删除、添加)

------------HostFileManager 读取include/exclude 文件,精细化管理DataNode上架,下架

------------NetworkTopology 网络拓扑图,用于机架感知

---------HeartbeatManager 心跳包管理器,与DataNode 保持通信

---------BlockTokenSecretManager 块安全验证管理器

---------BlocksMap 块映射[BlockInfo]存储所有块的信息

------LeaseManager 租约管理器

---NameNodeRpcServer 对外提供的所有RPC接口调用

---NameNodeHttpServer 对外提供的web 访问

---HAContext{NameNodeHAContext}用于NameNode HA 高可用性

---HAState包括ActiveState、BackupState、StandbyState 三种状态


2、DataNode

---BlockPoolManager

------List<BPOfferService>

---------BPServiceActor 注册、心跳、接收块、删除块、更新块、坏块报告等

---FsDatasetSpi {FsDatasetImpl}数据节点,对所有目录数据块文件操作

---DataXceiverServer 数据节点,数据接收、发送服务

---DataBlockScanner 数据节点块扫描器

---DirectoryScanner 数据节点目录扫描器

---BlockPoolTokenSecretManager

---HttpServer2 对外提供的Web访问