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的写入。
下图是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的写入。
相关文章推荐
- <hadoop学习历程>--笔记心得4-HDFS文件读写流程
- 文件读写学习笔记
- 孙鑫VC学习笔记:第十二讲 (二) 用C语言函数读写文件
- Hadoop学习总结之二:HDFS读写过程解析
- PHP学习笔记——文件读写
- Hadoop编程学习(四):使用FileSystem类进行文件读写及查看文件信息
- python文件读写实例学习笔记
- Hadoop学习总结之二:HDFS读写过程解析
- nginx 源码学习笔记(十三)——文件读写和配置文件读取
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习笔记(七):使用distcp并行拷贝大数据文件
- 孙鑫VC学习笔记:第十二讲 用C++函数读写文件
- C++Builder学习笔记5.1(连接数据库,读写配置文件,加载DLL)
- 孙鑫VC学习笔记:第十二讲 (三) 用C++函数读写文件
- Hadoop Core 学习笔记(一) SequenceFile文件写入和读取Writable数据
- 文件读写 学习笔记
- Python学习笔记--文件读写
- Hadoop学习总结之二:HDFS读写过程解析
- Hadoop学习笔记(六):Hadoop读写文件时内部工作机制
- QT sqlite3数据库读取、容器操作、文件读写——学习笔记。