前言
Ozone作为又一个全新的存储系统,它在底层存储结构上和HDFS有着不小的区别,用户往Ozone内读写数据的方式也有所不同。不过为了兼容目前Hadoop FileSystem的读写,Ozone实现了一个叫做OzoneFileSystem的功能。通过使用OzoneFileSystem,用户能够使用往常Hadoop FileSystem的通用接口进行Ozone内对象数据的读写。不过OzoneFileSystem的做法只是在Ozone读写外层包装处理了下,核心本质还是在读写基于K-V存储的Ozone对象数据。在某些例如rename,list,delete等等这些操作上需要进行整个db的scan,效率显然不会太高。基于OzoneFileSystem实现的操作效率问题,Ozone社区设计提出了全新的按照文件原生结构的FileSystem namespace的metadata结构。它能有效的解决现有OzoneFileSystem实现上的不足之处。
OzoneFileSystem的不足之处
OzoneFileSystem是社区为了兼容,实现了基于Ozone存储架构之上的Hadoop兼容性文件系统。用户在配置了OzoneFileSystem配置后,就可以在无须动用现有Hadoop FileSystem读写代码的情况下,完成Ozone数据的读写。
但正如上面前言所述,OzoneFileSystem只是做了Ozone读写的包装处理,来达到兼容的效果。其核心本质依然是在读写基于K-V存储的Ozone db keyTable表的结构。
这里我们来看看目前Ozone key table的存储结构(实际Ozone对象存储的一张表):
KeyName | KeyInfo |
---|---|
/vol1/buck1/a/b/c/d/file1 | … | <