HDFS的读流程
RPC:远程过程调用
HDFS Cilent会调用FileSystem.open(filePath)方法,与NN进行RPC通信,返回该文件的block块的列表,返回FSDataInputStream对象
HDFS Client调用 FIleSystem.Read()方法,与第一个块的最近的DN进行读取,如果读取成功则进行下一个块,若不成功则去下一个DN进行读取,以此类推,等到所有的块都读取完毕。
HDFS Cilent 调用 FSDatainputStream.close方法,关闭数据流
HDFS写流程
HDFS Cilent 调用FileSystem.Create()方法,与NN进行RPC通信。
NN会检查是否有文件存在,是否有权限,若都满足则创建文件夹(没有数据,没有block的分布信息)
会根据传过来的文件大小 ,block的大小,副本数,等计算出上传多少块和对应DN节点信息
最终返回FSDataoutputStream对象
HDFS Cilent 回到用FileSystem.Write 方法,根据NN返回的信息,将第一个块的第一个副本给到DN1,写完复制到 DN2,再复制到DN3,当三个副本写完 ,会返回一个ACK(确认字符&#