HDFS1.0源代码解析—DataNode端数据存储和管理DataStorage和FSDataset解析
本部分主要介绍DN中的数据的存储和管理,我们知道从逻辑上来看我们把数据存储到HDFS这个文件系统中,但是具体数据在每个DN上是如何存储的呢,这其中就牵扯到几个比较大的类DataStorage、Storage、FSDataset等等。一开始读DN源代码这部分就搞得不是很清楚,现在理一下思路,也算给刚开始看得童鞋一些提示。
在配置hdfs-site.xml的时候我们会配置这样一个选项
37 private FSVolume volume; // volume where the block belongs 38 private File file; // block file 39 private boolean detached; // copy-on-write done for block这是每个block在DN上具体存储在哪个FSVolume的那个路径的信息。这样我们就明白了volumeMap的作用,因为客户端从NN获取是block对象类型的信息而想要获得具体的数据必须知道该block在DN的具体位置,那么volumeMap就是起到这样一个映射转换的作用。
至此FSDataset中的一些比较关键的函数已经介绍完毕,通过上边的介绍可以发现FSDataset才是管理NN数据的核心。
最后欢迎大家交流、批评指正!