HDFS --- DataNode startup service initialize

来源:互联网 发布:创建网络连接 编辑:程序博客网 时间:2024/06/05 14:37

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初始化主要完成以下几个任务:
  • 读取DataNode的存储目录信息;
  • 获取本地系统的内存信息;
  • 初始化DataStorage 对像;
  • 启动DataXceiver服务器;
  • 启动infoServer 服务器;
  • 启动IPC服务器;
  • 初始化BlockPoolManager对像;
  • 初始化ReadaheadPool信息。

启动DataXceiver 服务器


该服务主要是用来处理对于Block的读写操作,为了实现高效,在这里使用流方式读写文件系统。

启动IPC服务