I think we have even more complex problem here. We have 4 possible meanings of file system: 1) Igfs - thin public interface with base file system operations. Essentially, the only place where it is needed in public API is secondary file system configuration; 2) IgniteFS - rich public interface API with "execute()", "affinity" and other advanced methods. Extends Igfs; 3) IgfsHadoopFileSystem (two classes - for Hadoop v1 and v2) - extension of Hadoop "FileSystem" class; 4) IgfsHadoopFileSystemWrapper - implementation of Igfs which delegates secondary FS calls to some Hadoop FileSystem.
I'm afraid user will have very hard time trying to understand meanings of all that APIs. And there are other problems here: - Hadoop FileSystem implementations typically do not have "Hadoop" in their names because they already extend Hadoop class. E.e. "LocalFileSystem", "S3FileSystem", "DistributedFileSystem", etc.). - IgniteFS is inconsistent with other IGFS public classes. We have "IgniteCompute" main class and related "Compute*" classes. We have "IgniteCache" and related "Cache*" classes. And we have "IgniteFS" and related "Igfs*" classes. I think we must review all IGFS/Hadoop namings here. One idea on how to fix that: 1) *Igfs* is left as is - this is base interface; 2) IgniteFS is renamed to "*IgniteIgfs*", meaning that this is Ignite's implementation of IGFS; 3) IgfsHadoopFileSystemWrapper is renamed to "*HadoopIgfs*", meaning that this another IGFS implementation which works over Hadoop FileSystem; 4) IgfsHadoopFileSystem is renamed to *IgniteFileSystem*, meaning that this is Ignite's implementation of Hadoop FileSystem API. Any thoughts? On Thu, Feb 26, 2015 at 1:21 PM, Vladimir Ozerov <[email protected]> wrote: > HI, > > Currently we have IgfsHadoopFileSystemWrapper class whose sole purpose is > to instantiate Hadoop FileSystem and delegate Igfs calls to it. We use this > class to configure secondary Hadoop file system for Igfs. > > It seems to me that "Wrapper" is wrong suffix here from user perspective, > as this is not a wrapper, but a functional unit which user uses in > configuration. It does not "wraps" anything from user point of view. > > Furthermore, we do have public classes IgfsHadoopFileSystem which have no > realtion to IgfsHadoopFileSystemWrapper, what will also confuse users. > > We need to think about another class name here. May be > "IgfsHadoopFileSystemDelegator" or something like this? > > Any thoughts? > > Vladimir. >
