HDFS中的读写数据流

1.文件的读取: 函数

    首先、客户端铜鼓调用FileSystem对象中的open()函数读取它须要的数据。FileSystemHDFSDistributeFileSystem的一个实例。DistributeFileSystem会经过RPC协议调用NameNode来肯定请求文件所在的位置,对于每一个返回的块都包换块所在的DataNode地址,随后这些返回的DataNode会按照Hadoop定义的集群拓扑结构得出客户端的距离。而后再进行排序,若是客户端自己就是一个DataNode那么它将从本地读取文件。这里要关注的一个设计要点是,客户端经过NameNode引导获取最合适的DataNode地址,而后直接链接DataNode读取数据。这种设计的好处,这能够使HDFS扩展到更大规模的客户端并行处理。这是由于数据的流动全部的DataNode之间分散进行的,同时NameNode的压力也变小。 oop

2.文件写入 spa

①客户端经过调用DistributeFileSystem对象中的Create()建立一个文件,经过RPC()调用在NameNode的文件系统命名空间中建立一个新文件。 设计

NaneNode会经过多种验证保证新的文件不存在文件系统中,而且确保请求客户端有建立按文件的权限。若是成功distributeFileSystem返回一个FSDataOutputStream给客户端写人数据 对象

③当客户端写入数据时,DFSoutputStream会将文件分割成包,而后放入内部队列,DataStreamer,做用是请求NameNode为新的文件包分配合适的DataNode存放副本。 排序

DFSoutputStream同时也会保存在一个包的内部队列,用来等待管道中的DataNode返回确认信息。 队列

hadoop实战第二版》机械工业出版社….. 陆嘉恒著;
相关文章
相关标签/搜索