[ 
https://issues.apache.org/jira/browse/HDFS-15533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17178124#comment-17178124
 ] 

Uma Maheswara Rao G commented on HDFS-15533:
--------------------------------------------

[~ayushtkn], This is specifically for HDFS users as HDFS specific APIs are used 
directly in components like Hive/Hbase. Example, encryption APIs are specific 
to HDFS only and application used them. So, when HDFS want to use 
ViewFileSystemOverloadScheme, we can not avoid class cast or API compat issues 
easily. This is an attempt for HDFS users to use ViewFileSystemOverloadScheme 
via  ViewDistributedFileSystem to get API compatibility. For other fs users can 
continue to use  ViewFileSystemOverloadScheme, as they might not have many 
local implementations like in HDFS. Currently we have two key 
features(Encryption, EC) in HDFS, which APIs were not added in FileSystem 
interface.

Eventually we can bring such key feature APIs into FileSystem if there is an 
interest. However, that will take some time to make upstream projects try and 
integrate such newly added APIs ( they might need to mess-up with reflection to 
check API availability).
I have updated PR to demonstrate the idea. Please take a look at it.

 

> Provide DFS API compatible class, but use ViewFileSystemOverloadScheme inside
> -----------------------------------------------------------------------------
>
>                 Key: HDFS-15533
>                 URL: https://issues.apache.org/jira/browse/HDFS-15533
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: dfs, viewfs
>    Affects Versions: 3.4.0
>            Reporter: Uma Maheswara Rao G
>            Assignee: Uma Maheswara Rao G
>            Priority: Major
>
> I have been working on a thought from last week is that, we wanted to provide 
> DFS compatible APIs with mount functionality. So, that existing DFS 
> applications can work with out class cast issues.
> When we tested with other components like Hive and HBase, I noticed some 
> classcast issues.
> {code:java}
> HBase example:
> java.lang.ClassCastException: 
> org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme cannot be cast to 
> org.apache.hadoop.hdfs.DistributedFileSystemjava.lang.ClassCastException: 
> org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme cannot be cast to 
> org.apache.hadoop.hdfs.DistributedFileSystem at 
> org.apache.hadoop.hbase.util.FSUtils.getDFSHedgedReadMetrics(FSUtils.java:1748)
>  at 
> org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperImpl.<init>(MetricsRegionServerWrapperImpl.java:146)
>  at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.handleReportForDutyResponse(HRegionServer.java:1594)
>  at 
> org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:1001)
>  at java.lang.Thread.run(Thread.java:748){code}
> {code:java}
> Hive:
> |io.AcidUtils|: Failed to get files with ID; using regular API: Only 
> supported for DFS; got class 
> org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme{code}
> SO, here the implementation details are like follows:
> We extended DistributedFileSystem and created a class called " 
> ViewDistributedFileSystem"
> This vfs=ViewFirstibutedFileSystem, try to initialize 
> ViewFileSystemOverloadScheme. If success call will delegate to  vfs. If fails 
> to initialize due to no mount points, or other errors, it will just fallback 
> to regular DFS init. If users does not configure any mount, system will 
> behave exactly like today's DFS. If there are mount points, vfs functionality 
> will come under DFS.
> I will a patch and will post it in some time.
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to