1、NameNode
—FSNamesystem:
——FSDirectory 目录树
———INodeDirectory节点目录
————List<INode> 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访问
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/192508.html