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

来源:互联网 发布:头颅移植手术 知乎 编辑:程序博客网 时间:2024/05/23 00:08
读取文件:

 

下图是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的写入。

1 0