前面文件介绍了dn的持久化文件与对应的数据结构,本文来介绍写dn的整体架构,以及dn的启动流程。
【整体架构】
如图所示,从功能逻辑上来划分,dn的架构可以分为三层。
最上层为服务层,这一层主要包括三个模块:
RpcServer
对外提供RPC服务,即来自客户端,namenode(后面均简称为nn),其他所有dn的rpc请求处理入口。
DataXceiver
数据传输服务,客户端对block的读写数据传输,以及dn与dn之间数据副本的拷贝都是通过该服务完成的。
DatanodeHttpServer
对外提供http服务,主要用于展示dn内部的一些状态。
底层为数据存储层,dn中的所有服务都是在数据存储的基础上完成的,具体可以分为两个部分:
FsDataset:抽象了dn中数据块的所有操作,可以理解为负责dn中block的创建、读、写、删除等操作与管理,详细参考