Return-Path: X-Original-To: apmail-ignite-dev-archive@minotaur.apache.org Delivered-To: apmail-ignite-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CFEE017A98 for ; Mon, 2 Mar 2015 16:58:03 +0000 (UTC) Received: (qmail 39812 invoked by uid 500); 2 Mar 2015 16:57:57 -0000 Delivered-To: apmail-ignite-dev-archive@ignite.apache.org Received: (qmail 39774 invoked by uid 500); 2 Mar 2015 16:57:57 -0000 Mailing-List: contact dev-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list dev@ignite.incubator.apache.org Received: (qmail 39763 invoked by uid 99); 2 Mar 2015 16:57:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Mar 2015 16:57:57 +0000 X-ASF-Spam-Status: No, hits=-1997.8 required=5.0 tests=ALL_TRUSTED,HTML_MESSAGE,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Mon, 02 Mar 2015 16:57:55 +0000 Received: (qmail 39638 invoked by uid 99); 2 Mar 2015 16:57:35 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Mar 2015 16:57:35 +0000 Received: from mail-ob0-f182.google.com (mail-ob0-f182.google.com [209.85.214.182]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 60DEF1A02BD for ; Mon, 2 Mar 2015 16:57:35 +0000 (UTC) Received: by mail-ob0-f182.google.com with SMTP id nt9so32082435obb.13 for ; Mon, 02 Mar 2015 08:57:34 -0800 (PST) X-Gm-Message-State: ALoCoQnBeJVUPHP9wT8USafLPkFUnKIw2h5H6azjwcsAV3o49Qlszq5KfF8k8pd50Q0SVG8uWpzi X-Received: by 10.182.60.197 with SMTP id j5mr19765709obr.85.1425315454470; Mon, 02 Mar 2015 08:57:34 -0800 (PST) MIME-Version: 1.0 Received: by 10.202.223.133 with HTTP; Mon, 2 Mar 2015 08:56:54 -0800 (PST) In-Reply-To: References: From: Dmitriy Setrakyan Date: Mon, 2 Mar 2015 08:56:54 -0800 Message-ID: Subject: Re: Ignite File System (re)design. To: "dev@ignite.incubator.apache.org" Content-Type: multipart/alternative; boundary=089e013a2b2c5b7ab80510511d6c X-Virus-Checked: Checked by ClamAV on apache.org --089e013a2b2c5b7ab80510511d6c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I like it. On Mon, Mar 2, 2015 at 5:12 AM, Vladimir Ozerov wrote: > HI all, > > We spend some time on discussions about file system and Hadoop APIs. Ther= e > were two possible ways to improve current non-obvious API. > First idea was to leave API more or less the same with only some cosmetic > changes, mainly class names. > Second idea was to remove all secondary file system configuration > parameters from IgfsConfiguration and move it to Hadoop module. Then IGFS > could be wired up with Hadoop secondary file system with help of some > private interface which are not exposed to users. > > I think the first solution is better because currently secondary file > system in IGFS is a kind of extension point. User is free to implement hi= s > own secondary storage and use it in pretty the same way as store is used = in > cache. I do not see any sensible reasons why we should remove this > extension point and hide it in Hadoop module. Therefore, I designed new A= PI > using the first approach and the draft put into the branch ignite-386. > Please feel free to review and comment it. > > I'll also briefly go through the new design here: > > Core module: > 1) o.a.i.IgniteFileSystem - user interface to work with our native file > system. Obtained using Ignite.fileSystem() method > Based on "IgniteFs" and "Igfs" interfaces in current implementation > > 2) o.a.i.filesystem.SecondaryFileSystem - API for creating secondary file > systems for IGFS. > Based on "Igfs" interface in current implementation. > > Note that there is no more direct link between IgniteFileSystem and > SecondaryFileSystem, as these are completely different entities. > > 3) o.a.i.configuration.FileSystemConfiguration - configuration bean for > IgniteFileSystem. It has setter > "setSecondaryFileSystem(SecondaryFileSystem)". > > Hadoop module: > 1) There are 4 map-reduce classes under o.a.i.hadoop.mapreduce package. > Their packages reflect corresponding packages in Hadoop API. E.g.: > org.apache.ignite.[hadoop.mapreduce.protocol.IgniteHadoopClientProtocol] > implements org.apache.[hadoop.mapreduce.protocol.ClientProtocol]. > > 2) Two file system implementations named "IgniteHadoopFileSystem" for v1 > and v2 Hadoops. > > 3) IgniteHadoopSecondaryFileSystem - implementation of SecondaryFileSyste= m > from core module, which is capable of delegating native IGFS calls to > underlying Hadoop FileSystem. > It is named "IgfsHadoopFileSystemWrapper" in current implementation. > > Let me give you an example of how user is going to configure it now. > > 1) Ignite configuration: > > > > class=3D"org.apache.ignite.configuration.FileSystemConfiguration"> > > > class=3D"=C3=B6rg.apache.ignite.hadoop.fs.IgniteHadoopSecondaryFileSystem= "> > > > > > > > > > 2) core-site.xml: > > > fs.default.name > igfs:/// > > > fs.igfs.impl > > org.apache.ignite.igfs.hadoop.v1.IgfsHadoopFileSystem > > > fs.AbstractFileSystem.igfs.impl > > org.apache.ignite.igfs.hadoop.v2.IgfsHadoopFileSystem > > > > Seems pretty clear and consistent to me. > > Thoughts? > > Vladimir. > --089e013a2b2c5b7ab80510511d6c--