(六)HDFS架构设计及文件读写流程

主从架构

NameNode(NN): 名称节点

DataNode(DN):数据节点

Secondarynamenode(SNN):第二名称节点

rack指的是机架,可以理解为一个网段

1.NameNode:

存储:文件系统的命名空间(存储在内存里),包括:a.文件名称;b.文件目录结构;c.文件属性(权限、创建时间、副本数等);d.文件对应哪些数据块,数据块分配在哪些节点上;

[当然namenode节点不会持久的存储这种映射关系,是通过集群在启动和运时,datanode 定期发送blockReport给namenode,以此namenode在内存中来动态维护的这种 映射关系]

作用:管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件fsimage和编辑日志文editlog。

2.DataNode:

存储:数据块和数据块的校验和(存储在磁盘上)

与NN通信:a.每隔3秒发送一次心跳;b.每隔10次心跳发送一次blockreport

作用:读写文件的数据块

3.Secondarynamenode:

存储:命令空间镜像文件   fsimage+编辑日志editlog

作用:checkpoint(俗称检查点动作):定期合并fsimage+editlog为新的fsimage,然后推送给NN

隔1小时备份一次

4.数据块 block

默认数据块大小:128M

假如一个文件大小为130M,则需要切分为2个块,1个为128M,另一个为2M(注意并不是128M,实际是多大block块就有多大)

5.副本数 replication

默认副本数:3

Question:一个文件大小为260M,请问存储为多大,多少个块?

Answer:若副本数为1,则存储为260M,3个块;

                 若副本数为3,则存储为780M,9个块

6.副本放置策略

7.文件读流程

(1)Client通过FileSystem.open(filePath)方法,去与Namenode进行rpc通信,namenode先校验该路径和文件是否存在,若存在则返回该文件的部分或全部的block列表(也包含该列表各block的分布在Datanode地址的列表),也就是返回FSDataInputStream对象;

(2)Client调用FSDataInputStream对象的read()方法,

a.去与第一个块的最近的datanode进行read,读取完后,会check,假如successful,会关闭 与当前

Datanode通信;(假如check fail,会记录失败的块+Datanode信息,下次就不会读取;那么会去该块的第二个Datanode地址读取);

b.然后去第二个块的最近的Datanode上的进行读取,check后,会关闭与此datanode的通信。

c.假如block列表读取完了,文件还未结束,那么FileSystem会从Namenode获取下一批的block的列表。(当然读操作对于Client端是透明的,感觉就是连续的数据流)

(3)Client调用FSDataInputStream.close()方法,关闭输入流。

8.文件写流程

(1)Client调用FileSystem.create(filePath)方法,去与Namenode进行rpc通信,check该路径的文件是否存在以及有没有权限创建该文件,假如ok,就创建一个新文件,但是并不关联任何block,返回一个FSDataOutputStream对象;(假如not ok,就返回错误信息,所以写代码要try-catch)

(2)Client调用FSDataOutputStream对象的write()方法,会将第一个块写入第一个Datanode,第一个Datanode写完传给第二个节点,第二个写完传给第三节点,当第三个节点写完返回一个ack packet给第二个节点,第二个返回一个ack packet给第一个节点,第一个节点返回ack packet给

FSDataOutputStream对象,意思标识第一个块写完,副本数为3;然后剩余的块依次这样写;

(当然写操作对于Client端也是透明的)

(3)当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存区的数据包;

(4)再调用FileSystem.complete()方法,告诉Namenode节点写入成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容