1、名词解释:
NameNode:
①、整个文件系统的管理节点。维护着整个文件系统的文件目录,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
②、文件包括:
fsimage:元数据镜像文件。存储某一段NameNode内存元数据信息。
edits:擦偶走日志文件。
fstime:保存最近一次的checkpoint的时间。
DataNode:
①、DataNode根据客户端的请求对文件系统执行读写操作。
②、它们还根据NameNode的指令执行诸如块的创建,删除和复制的操作。
Block:
一般用户数据存储在HDFS的文件中。文件系统中的文件将会分成一个或多个段和/或存储在各个数据节点中。这些文件段被称为块。换句话说,HDFS可以读取或写入的最小数据量称为块。默认块是128MB,dfs.block.size可以根据需要进行更改。
2、数据写入流程:
图析:
- 客户端向NameNode发送文件上传申请。
- NameNode返回Block存储DataNode地址等信息。
- 客户端写入文件到DataNode中。
- 当客户端写入一份数据之后,DataNode之间会异步的进行Block复制。
- 当最后面的DataNode上写完Block后,都会发送一个最终确认信息给前一个DataNode。
- DataNode反馈给客户端,数据写入完毕。
- 客户端向NameNode发送最终的Block确认信息。
3、数据读取流程:
图析:
- 客户端发送读取数据的请求给NameNode。
- NameNode反馈数据的DataNode存储地址及副本存储地址。
- 客户端直接在DataNode上读取数据。
4、总结:
- 简单的根据自己的理解画了一些HDFS的读写流程,如有不对,望大神指出。
- 了解原理,使我们更加深刻的理解HDFS设计。
- 入门新手,请大神多多指点指点。