hadoop学习笔记(六):HDFS文件的读写流程

1、HDFS读取文件流程:

 

详解读取流程:

Client调用FileSystem.open()方法:

  1 FileSystem经过RPC与NN通讯,NN返回该文件的部分或所有block列表(含有block拷贝的DN地址)。spa

  2 选取举栗客户端最近的DN创建链接,读取block,返回FSDataInputStreamblog

Client调用输入流的read()方法:

  1 当读到block结尾时,FSDataInputStream关闭与当前DN的链接,并未读取下一个block寻找最近DNit

  2 读取完一个block都会进行checksum验证,若是读取DN时出现错误,客户端会通知NN,而后再从下一个拥有该block拷贝的DN继续读。权限

  3 若是block列表读完后,文件还未结束,FileSystem会继续从NN获取下一批block列表。请求

关闭FSDataInputStream

2、HDFS文件写入流程:

 

 

 详细写入流程:

Client调用FileSystem的create()方法:

  1 FileSystem向NN发出请求,在NN的namespace里面建立一个新的文件,可是并不关联任何块方法

  2 NN检查文件是否已经存在、操做权限。若是检查经过,NN记录新文件信息,并在某一个DN上建立数据块。im

  3 返回FSDataOutputStream,将Client引导至该数据块执行写入操做。通信

Client调用输出流的write()方法:

  HDFS默认将每一个数据块放置3份。FSDataOutputStream将数据首先写到第一节点,第一节点将数据包传送并写入第二节点,第二节点 --> 第三节点。数据

Client调用流的close()方法:

  flush缓冲区的数据包,block完成复制份数后,NN返回成功消息。客户端

相关文章
相关标签/搜索