1.本文目的
通过解析客户端创建文件流程,认知hadoop的HDFS系统的一些功能和概念。
2.主要概念
2.1 NameNode(NN):
HDFS系统核心组件,负责分布式文件系统的名字空间管理、INode表的文件映射管理。如果不开启备份/故障恢复/Federation模式,一般的HDFS系统就只有1个NameNode,当然这样是存在单点故障隐患的。
NN管理两个核心的表:文件到块序列的映射、块到机器序列的映射。
第一个表存储在磁盘中,第二表在NN每次启动后重建。
2.2 NameNodeServer(NNS):
负责NN和其它组件的通信接口的开放(IPC、http)等。
NN通过客户端协议(ClientProtocol)和客户端通信,通过数据节点协议(DataNodeProtocol)和DN通信。
2.3 FSNameSystem:
管理文件系统相关,承担了NN的主要职责。
2.4 DataNode(DN):
分布式文件系统中存放实际数据的节点,存储了一系列的文件块,一个DFS部署中通常有许多DN。
DN和NN,DN和DN,DN和客户端都通过不同的IPC协议进行交互。
通常,DN接受来自NN的指令,比如拷贝、删除文件块。
客户端在通过NN获取了文件块的位置信息后,就可以和DN直接交互,比如读取块、写入块数据等。
DN节点只管理一个核心表:文件块到字节流的映射。
在DN的生命周期中,不断地和NN通信,报告自己所存储的文件块的状态,NN不直接向DN通信,而是应答DN的请求,比如在DN的心跳请求后,回复一些关于复制、删除、恢复文件块的命令(comands)。
DN和外界通信的接口<host:port>
会报告给NN,想和此DN交互的客户端或其它DN可以通过和NN通信来获取这一信息。
2.5 Block
文件块,hadoop文件系统的原语,hadoop分布式文件系统中存储的最小单位。一个hadoop文件就是由一系列分散在不同的DataNode上的block组成。
2.6 BlockLocation
文件块在分布式网络中的位置<host:port>
,也包括一些块的元数据,比如块是否损坏、块的大小、块在文件中的偏移等。
2.7 DFSClient
分布式文件系统的客户端,用户可以获取一个客户端实例和NameNode及DataNode交互,DFSClient通过客户端协议和hadoop文件系统交互。
2.8 Lease
租约,当客户端创建或打开一个文件并准备进行写操作,NameNode会维护一个文件租约,以标记谁正在对此文件进行写操作。客户端需要定时更新租约,否则当租约过期,NN会关闭文件或者将文件的租约交给其它客户端。
2.9 LeaseRenewer
续约管控线程,当一个DFSClient调用申请租约后,如果此线程尚未启动,则启动,并定期向NameNode续约。
三.创建一个文件
当hadoop的分布式集群启动之后,可以通过FS或Shell来创建文件,FS创建文件的命令如下:
//cluser是hadoo