HDFS重点(读写流程)

一、HDFS的组成

  • NameNode 

       处理读写请求

  • SecondNamenode

       帮助namenode合并元数据

  • Datanode

       存储真正的数据

二、HDFS的读写流程

HDFS的读流程

1、客户端通过DistributeFileSystem向NameNode请求上传文件
2、NameNode查看文件是否存在,倘若没则向客户端响应
3、客户端请求上传第一个block,并请求返回这三个dataNode节点
4、客户端通过FSDatainputStreamdn1发送请求,dn1调用dn2,dn2调用dn3,直到通道建成
5、dn1、dn2、dn3逐级应答客户端
6、客户端向dn1发送第一个packet,dn1-->dn2-->dn3依次传递
7、根据文件大小判断是否继续上传block

 

HDFS的写流程

1、客户端向NameNode发出写文件请求
2、检查是否已存在文件、检查权限。若通过检查,直接将操作写入EditLog,并返回输出流对象
3、client端按128MB的块切分文件
4、client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送最近的第一个DataNode节点,多个节点形成通道
5、client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode
6、每个DataNode写完一个块后,会返回确认信息
7、写完数据,关闭输输出流发送完成信号给NameNode
8、(注:发送完成信号的时机取决于集群是强一致性还是最终一致性,强一致性则需要所有DataNode写完后才向NameNode汇报。最终一致性则其中任意一个DataNode写完后就能单独向NameNode汇报,HDFS一般情况下都是强调强一致性

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章