HDFS(Hadoop Distributed Files System ,Hadoop分布式文件系统)是一个块结构的文件系统。它将一个文件按块划分成多个子块,并将子块复制多份存储于多个节点上,从而达到容错的效果。
HDFS包含两类节点:NameNode和DataNode。NameNode用于管理元数据,如文件名称,权限,文件地址等;DataNode用于存储实际的数据。NameNode周期性地接受来自DataNode的两种类型消息,分别是心跳消息和块报告消息。DataNode发送心跳消息告知NameNode工作正常,块报告消息包含一个DataNode上所有数据块的列表。
HDFS的读写工作过程:
1.读。客户端向NameNode发送读取文件的请求,NameNode返回读取文件的块位置(标识了持有所有对应文件块数据的DataNode)。接着,客户端将块位置发送给DataNode,获取数据。
2.写。客户端向NameNode发送写入文件的请求,NameNode判断文件是否存在及是否有创建权限。接着,客户端请求NameNode为文件的第一个块选择DataNode,多个节点的DataNode在本地存储数据块后,客户端请求NameNode为文件的第二块选择DataNode,多个节点的DataNode在本地存储数据块后,……,直到所有文件快都在DataNode上存储。最后,客户端告知NameNode文件写操作已完成。