文件系统hadoop0200源代码剖析源代码

gdwkb ,Jul 10 14:51 , 文章教程 , 评论(0) , 引用(0) , 阅读(106) , 本站原创 | |
文件系统  文件  和文  属性  大年夜  笼统  方法  基本  子类  功用  消息  前缀  定义  号令  两个  结构  缓存  系统  字节  本土  细致  完整性  目次  接口  需求  数据  别的  缓冲区  初始化  局部  要点  标识  客户端  实例  志愿  加载  特征  过程  任务  装备  用户
hadoop0200Yuan∴Dai∴Ma∴Po∴Xi前面!剖析了org.apache.hadoop.fs.Filesystem笼统类!我们曾经了解到!要完成壹个最基本的文件系统都需求包含哪些要点下面细致到某个完成Filesystem的细致完成类!基于该笼统类Filesystem派生的类的秉承联系
org.apache.hadoop.fs.FileSystem  org.apache.hadoop.fs.FilterFileSystem org.apache.hadoop.fs.ChecksumFileSystem org.apache.hadoop.fs.InMemoryFileSystem org.apache.hadoop.fs.LocalFileSystem org.apache.hadoop.fs.HarFileSystem org.apache.hadoop.fs.RawLocalFileSystem
extends  FileSystem
下面剖析FileSystem类的两个间接子类FilterFileSystem与RawLocalFileSystem的完成
FilterFileSystem类
这里!起首剖析FileSystem笼统类的子类org.apache.hadoop.fs.FilterFileSystem类!它是壹个文件系统的完成类!该文件系统包含了壹些其他的Filesystem文件系统!并以这些Filesystem文件系统作为基本的文件系统!能够用来转换数据或者许供给附加功用
该类主如果正在其外部定义了壹个Filesystem属性
protected FileSystem fs。
其完成了基类Filesystem的局部方法!是经过fs间接调用Filesystem笼统类中的方法到达的!仿佛并没有增加任何其它的功用!可是能够作为壹个具有最基本功用的文件系统
RawLocalFileSystem类
RawLocalFileSystem类是完成了FileSystem的API的壹个原生本土文件系统!它的属性以下所示
static final URI NAME = URI.create。 // 用"file:///"来标识该文件系统是壹个本土文件系统 private Path workingDir。 // 用户的以后任务目次
workingDir正在该类的结构方法中!经过获得系统的属性"user.dir"属性初始化的
public RawLocalFileSystem  workingDir = new Path).makeQualified 。  
该类中包含了3个与文件读写相干的外部类!辨别为
TrackingFileInputStream类经过秉承自基类FileSystem类的Statistics statistics属性!来跟踪文件系统中数据运动
LocalFSFileInputStream类包装了壹个FileInputStream流属性!经过结构方法结构壹个TrackingFileInputStream来完成输进流的相干操纵
LocalFSFileOutputStream类包装了壹个FileOutputStream流属性!以来FileOutputStream定义的操纵来完成对文件系统中的输进流的操纵该类还完成了org.apache.hadoop.fs.Syncable接口!使得该文件输进流类能够完成并调用该接口定义的sync方法!完成志愿对基本装备的缓冲区施行同步操纵
还有壹个外部类!是封装文件消息的实体类RawLocalFileStatus!完成了getGroup!setOwner与getOwner!setPermission与getPermission!execCommand等方法!此中set前缀的方法设置对应的消息都是经过施行Shell号令来完成的而get前缀的方法获得对应的消息也是经过施行Shell号令!并调用壹个私有方法loadPermissionInfo加载需要的消息
别的!RawLocalFileSystem秉承完成了FileSystem笼统类中基本的文件操纵!例如文件创立!打开!增除等等
extends FilterFileSystem
下面剖析FilterFileSystem类的两个间接子类ChecksumFileSystem与HarFileSystem的完成
ChecksumFileSystem类
该类是壹个基于校验和的文件系统的笼统类!它秉承自FilterFileSystem类!它的特征就是正在客户端为每壹个原生文件创立壹个校验和文件!扩大年夜名为".crc"!用它能够校验原生文件的完整性
1!增加的属性
这个基于校验和文件的文件系统!增加了以下两个属性
private int bytesPerChecksum = 512。 // 校验和文件的大年夜小 private boolean verifyChecksum = true。 // 可否考据校验和
此中!bytesPerChecksum默许值为512字节!妳能够经过建设Hadoop的core-default.xml文件中的I/O属性io.bytes.per.checksum
lt。propertygt。 lt。namegt。io.bytes.per.checksumlt。/namegt。 lt。valuegt。512lt。/valuegt。 lt。descriptiongt。The number of bytes per checksum. Must not be larger than io.file.buffer.size.lt。/descriptiongt。 lt。/propertygt。
每个校验和文件的大年夜小不克不及比壹个文件所对应的的缓存大年夜!壹个文件的缓存大年夜小经过io.file.buffer.size属性能够正在core-default.xml文件中停止建设
verifyChecksum属性默认为true!表现基于ChecksumFileSystem文件系统的文件!正在读写过程当中!需求检查校验和文件!考据原生文件的完整性
2!校验和文件
ChecksumFileSystem供给了与校验和文件相干的壹些基本的操纵
经过setConf方法!设置文件系统的校验和文件大年夜小
public void setConf  super.setConf。 if   bytesPerChecksum = conf.getInt。  
从基于core-default.xml建设文件的建设类Configuration的实例来获得!默许大年夜小512字节
辨别文件系统中的文件可否是校验和文件前面!剖析了org.apache.hadoop.fs.Filesystem笼统类!我们曾经了解到!要完成壹个最基本的文件系统都需求包含
飞扬黑客网  http://www.gdwkb.cn
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]