您的位置:首页 > 运维架构

hadoop学习笔记--hadoop读写文件过程

2015-03-09 21:14 225 查看
读取文件:


下图是HDFS读取文件的流程:





这里是详细解释:







1.当客户端开始读取一个文件时,首先客户端从NameNode取得这个文件的前几个block的DataNode信息。(步骤1,2)



2.开始调用read(),read()方法里,首先去读取第一次从NameNode取得的几个Block,当读取完成后,再去NameNode拿下一批Block的DataNode信息。(步骤3,4,5)



3. 调用Close方法完成读取。(步骤6)



当读取一个Block时如果出错了怎么办呢。客户端会去另一个最佳的DataNode上读取这个块,并通知NameNode。



这么一系列复杂的过程对客户端都是透明的。客户端只知道源源不断的从Stream中读取数据。









写入文件:





1. 首先客户端高速NameNode:”我要创建一个文件”。NameNode会进行一系列检查,比如文件是否存在。一旦通过检查,则创建一个文件。这时候客户端就可以写入数据了。(步骤1,2)

2. 客户端在开始写入数据时,会把数据分片,然后放入一个队列。然后NameNode会分配一个DataNode的列表给客户端来写入数据。上图中是三个,也就是数据冗余三份。数据冗余的复制是在DataNode之间完成的。(步骤3,4,5)

3. 当客户端收到全部写入成功的回执(ack packet)之后,这时会把队列中上一个Block的数据删掉。然后进行下一个Block的写入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: