Overview
DataNode HDFS中存储数据Block的地方, 每个HDFS的布署可以有一个或多个Datanode, DataNode是一个逻辑节点,一台物理机器可以布署一个DataNode节点,也可以布署多个。 每个Datanode只与一个NameNode通信,同时Datanode也可与与其它的Datanode或客户端直接通信,与其它的Datanode通信主要是做数据的Replication, 与在客户端通信主要是为客户端提供数据服务。DataNode维护一张表,Block -->Stream of Bytes( of BLOCK_SIZE or less), 这张表存楮在本地存储介质上, DataNode在启动的时以及后续的操作过程中会向Namenode报告 这张表中的信息,Namenode不可以直接向Datanode发送操作信息,所以 Datanode一旦启动,会一直向NameNode 发送Heartbeat消息,并根据Namenode的响应执行相应的操作。
DataNode主要启动了以下几个服务线程:
DataXceiver:这是一个TCP Socket server 线程,用来接收客户端的对数据读写的请求;
IndoServer:这是一个HTTP Server,用来 查看当前DataNode的状态 信息;
IpcServer: 实现了InterDatanodeProtocol 和 ClientDatanodeProtocol 的一个RPC Server。
DataNode 初始化
- 读取DataNode的存储目录信息;
- 获取本地系统的内存信息;
- 初始化DataStorage 对像;
- 启动DataXceiver服务器;
- 启动infoServer 服务器;
- 启动IPC服务器;
- 初始化BlockPoolManager对像;
- 初始化ReadaheadPool信息。