hadoop文件读写过程

读入过程:

1.客户端通过RPC与Namenode通信,namenode返回一个输入流(FSDataInputStream对象)供客户端调用read方法不断读取数据。

2.输入流对象封装DFSInputStream对象,该对象管理着namenode和datanoded I/O,接着DFSInputStream连接到存储着所要读取的文件块的距离客户端最近的datanode的数据输出给客户端,读取完成后,继续寻找下一个数据块的datanode的位置。

3.在读取的过程中如果发生错误,则会DFSInputStream会尝试从另外一个邻近的datanode读取,同时记录这个出故障的datanode以此保证下一次不会再从故障的节点读取数据。

4.客户端获取数据完毕后调用FSDataInputStream的close方法关闭输入流。

写入过程:

1.客户端通过RPC与NameNode通信(FSDataInputStream),namenode确保客户端索要创建的文件是否存在,如果不存在在返回给客户端一个输出流,若文件已经存在则抛出异常;

2.客户端将文件切分成数据块,并将数据块放入输出流的一个队列(data quene)里面,同时从namenode中获取数据可存放的节点信息,数据开始在节点间存放(存放的节点通过一条管线连接)并复制副本到下一个节点直到副本复制完成,这时队列里的数据才会被清空,如果节点间副本复制失败,则有正常的节点之一通知namenode,此时namenode并不会寻找新的节点,而是继续写入下一个数据包并删除故障节点;

3.当数据包都写入完成后,客户端关闭数据流并等待namenode记录完数据包的副本文件位置后,删除说有数据包;

4.namenode会不断监测文件块的副本满足不满足副本数量条件,多删少补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值