[ 
https://issues.apache.org/jira/browse/HDDS-922?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Elek, Marton updated HDDS-922:
------------------------------
    Attachment: HDDS-922.002.patch

> Create isolated classloder to use ozonefs with any older hadoop versions
> ------------------------------------------------------------------------
>
>                 Key: HDDS-922
>                 URL: https://issues.apache.org/jira/browse/HDDS-922
>             Project: Hadoop Distributed Data Store
>          Issue Type: Improvement
>          Components: Ozone Filesystem
>            Reporter: Elek, Marton
>            Assignee: Elek, Marton
>            Priority: Major
>         Attachments: HDDS-922.001.patch, HDDS-922.002.patch
>
>
> As of now we create a shaded ozonefs artifact which includes all the required 
> class files to use ozonefs (Hadoop compatible file system for Ozone)
> But the shading process of this artifact is very easy, it includes all the 
> class files but no relocation rules (package name renaming) are configured. 
> With this approach ozonefs can be used from the compatible hadoop version 
> (this is hadoop 3.1 only, I guess) but can't be used with any older hadoop 
> version as it requires the newer version of hadoop-common.
> I tried to configure a full shading (with relocation) but it's not a simple 
> task. For example a pure (non-relocated) Configuration is required by the 
> ozonefs itself, but an other, newer Configuration class is required by the 
> ozone client code which is a dependency of OzoneFileSystem So we need a 
> relocated and a non-relocated class in the same time.
> I tried out a different approach: I moved out all of the ozone specific 
> classes from the OzoneFileSystem to an adapter class (OzoneClientAdapter). In 
> case of an older hadoop version the adapter class itself can be loaded with 
> an isolated classloader. The isolated classloader can load all the required 
> classes from the jar file from a specific path. It doesn't require any 
> specific package relocation as the default class loader doesn't load these 
> classes. 
> The OzoneFileSystem (in case of older hadoop version) can load the adapter 
> with the isolated classloader and only a few classes should be shared between 
> the normal and isolated classloader (the interface of the adapter and the 
> types in the method signatures). All of the other ozone classes and the newer 
> hadoop dependencies will be hidden by the isolated classloader.
> This patch is more like a proof of concept, I would like to start a 
> discussion about this approach. I successfully used the generated artifact to 
> use ozonefs from spark 2.4 default distribution (which includes hadoop 2.7). 
> For a final patch I would add some check to use the ozonefs without any 
> classpath separation by default. (could be configured or chosen by 
> automatically)
> For using spark (+ hadoop 2.7 + kubernetes scheduler) together with ozone, 
> you can check this screencast: 
> https://www.youtube.com/watch?v=cpRJcSHIEdM&t=8s



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to