腹黑易少的宠妻方程:Hadoop_DataNode_代码分析(1)

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 08:36:03

(1)StorageInfo类是通用存储信息的类,通用的意思是NameNode和DataNode上面文件目录结构共有的信息,这些信息包括layoutVersion(应用软件的版本和文件目录的版本一致),namespaceID(Storage的ID,作用还不清楚),cTime(就是创建时间),这些信息显然是非易失性的,应该放在目录的VERSION文件中。

(2)从Storage类的注释中可知,Local storage可以有多个目录,每个目录有相同的VERSION文件,其中保存Local storage information,包括(type of the node, the storage layout version,the namespace id, the fs state creation time)。服务程序(DataNode或者NameNode,因为Storage对两者通用)启动时会对所有目录上锁。StorageDirectory是Storage类中的内部类,用来表示上述的一个目录。

(3)DataStorage类继承Storage用于DataNode。Block(BlockID,generationStamp数据块的版本号,numBytes数据块的大小)。DataBlockInfo类用来包含对Block的操作而不仅仅抽象属性,其中FSVolume表示Block所在的目录(Storage.StorageDirectory)。当然还有一个File对象指向实际的Block,detachBlock把DataBlockInfo中的blockdetach掉,使得File可以安全读,因为file硬链接可能大于一,所以需要复制,在Windows下面没有明白这个函数的代码是如何执行的,模拟的结果是错的。但是Linux下面应该是正确。