Hadoop HDFS源码学习笔记(七)--DFSInputStream -- openInfo

原创 2012年03月26日 15:06:03

现详细了解openInfo函数的内部实现,以及修改了什么

首先给出openInfo的调用序列图:


在openInfo函数中,首先会调用DFSClient的callGetBlockLocations,这个函数主要是通过跟namenode的交互,来完成从namenode取得用户请求的file的元数据信息,返回的内容为locatedBlocks

接下来会让DFSInputStream更新当前的locatedBlocks的信息,并且更新lastBlockBeingWrittenLength这个变量记录了当前读取file如果是underconstruction状态的话最后一个block正在写的字节长度

接下来会判断最后一个block是否处于complete状态,如果不是,则会根据元数据提供的block的pipeline来到datanode上获得block的写入长度,并赋值给lastBlockBeingWrittenLength

最后要对当前的currentNode赋值为null,因为currentNode记录的是当前操作的block的当前连接的datanode的info

下面看一下相关的类图:



HDFS命令行操作

1、HDFS Hadoop分布式文件系统,为海量的数据提供了存储。 2、HDFS基本概念 (1)块 HDFS的文件被分成块进行存储,HDFS块的默认大小是64MB,块是文件存储处理的逻辑单元。...

DFSClient技术内幕(读取数据)

以下是本人研究源代码成果, 此文僅献给我和我的小伙伴们,不足之处,欢迎斧正-------------------------------------------------致谢道格等人! 注:h...

HDFS读文件解析

  下图描述了在文件读过程中,client、NameNode和DataNode三者之间是如何互动的。  1.  client调用get方法得到HDFS文件系统的一个实例(DistributedFile...

Hadoop HDFS源码学习笔记(二)

Hadoop文件系统中有一个抽象的文件系统类,HDFS只是其中的一个实现。java抽象类org.apache.hadoop.fs.FileSystem 定义了Hadoop中一个文件系统接口,并且该抽象...

Hadoop HDFS源码学习笔记(六)--fetchBlockByteRange

client端需要从datanode端读取数据,当顺序的读取block的时候,会调用到fetchBlockByteRange函数,该函数中,有一个死循环,在循环内部首先使用函数getBlockAt()...

Hadoop HDFS源码学习笔记(三)

继续上一篇blog,进一步分析FileSystem的API,并完善类图 3、write 数据 FileSystem类有一系列的create方法,其中简单的方法就是给定一个Path对象,然后...

Hadoop HDFS源码学习笔记(四)

一、首先根据HDFS的API写一段程序,然后是用Eclipse进行debug 单步跟踪,从而查看源码执行流程: import java.net.URI; import org.apache.h...

Hadoop源码分析笔记(七):HDFS非远程调用接口

HDFS非远程调用接口         在网络文件系统(NFS)是SUN公司在远程调用(RPC)之上开发的,它的所有文件操作,包括文件/目录API和用于读写文件数据,都通过远程过程调用实现。客户使用...

大数据学习笔记2--hdfs工作原理及源码分析

windows下配置hadoop hadoop 安装包解压,路径不要有特殊字符 lib和bin直接解压出来的不可用,需要自己重新编译 配置环境变量:HADOOP_HOME,path中添加:bin目录 ...

Hadoop源码分析笔记(六):HDFS源代码结构和基于IPC调用接口

HDFS源代码结构         HDFS的源代码都在org.apche.hadoop.hdfs包下。HDFS的源代码分布16个目录下,它们可以分为如下四类。         1、基础包   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hadoop HDFS源码学习笔记(七)--DFSInputStream -- openInfo
举报原因:
原因补充:

(最多只允许输入30个字)