Please enable JavaScript.
Coggle requires JavaScript to display documents.
HDFS数据读写过程 (写数据的过程 (创建输出流FSDataOutputStream, RPC远程调用名称节点,在文件系统的命名空间中新建一个文件…
HDFS数据读写过程
写数据的过程
创建输出流FSDataOutputStream
RPC远程调用名称节点,在文件系统的命名空间中新建一个文件,名称节点会进行一些检查
DFSOutputStream向名称节点申请保存数据块的数据节点
数据被分成一个个分包,放入DFSOutputStream队列
返回存储到的数据节点的位置,这些数据节点形成一个数据流管道,队列中的分包再打包成数据包,发送给第一个节点,第一个节点再发送给第二个节点,形成流水线复制
数据节点收到数据后,向发送者发送确认包,最后返回给客户端,客户端收到应答,它将对应的分包从内部队列移除
关闭文件
读数据的过程
HDFS客户端
打开文件 FileSystem类
输入流 FSDataInputStream
FSDataInputStream里封装了DFSInputStream,DFSInputStream通过远程调用和名称节点进行沟通,获得数据块存储在哪些节点上
客户端与最近的数据节点的地址进行连接,读取数据
数据读取到客户端, FSDataInputStream关闭和该数据节点的连接
再寻找下一个数据块读取数据
关闭整个输入流
FileSystem是一个通用文件系统的抽象基类,可以被分布式文件系统继承。
Hadoop为FileSystem提供了多种具体实现
FSDataInputStream和FSDataOutputStream:这两个类是HDFS中的输入输出流。分别通过FileSystem的open方法和create方法获得。
http://www.cnblogs.com/liuling/p/2013-6-17-01.html