Inline 

> On Mar 15, 2023, at 2:11 PM, Wei-Chiu Chuang <weic...@apache.org> wrote:
> 
> hsync/hflush, or any input/output stream APIs for that matter, can be
> probed using StreamCapabilities.hasCapabilitiy() API.
> 
> lease recovery isn't (DistributedFIleSystem.recoverLease()). safe mode
> check isn't. There are a number of HDFS specific APIs that HBase uses.
> 
> I'm all for abstracting out FS implementation details. But it would be an
> overkill to try and add every single FS specific APIs to the generic
> FileSystem API interface.
> 
> One idea that Stephen had was to add a RecoverableFileSystem interface in
> Hadoop which adds lease recovery capability, and then HDFS or Ozone can
> implement this interface.

Yes, please. 

> 
> In a less ideal world, I imagine we could have one hbase module for
> utilities that does FS specific tasks. That way it is future proofing.

Also a good idea. 

> 
>> On Wed, Mar 15, 2023 at 12:50 PM Andrew Purtell <apurt...@apache.org> wrote:
>> 
>> Does Hadoop have a marker interface that lets an application know its
>> FileSystem instances can support hsync/hflush? Ideally all we should need
>> to do is test with instanceof for that marker and use reflection (in the
>> worst case) to get a handle to the hsync or hflush method, and then call
>> it. This approach should be taken wherever we have a requirement to use a
>> special WAL specific API provided by the underlying FileSystem, so we can
>> abstract it sufficiently to not require a direct dependency on Ozone or S3A
>> or any non HDFS filesystem.
>> 
>> On Wed, Mar 15, 2023 at 12:31 PM Tak Lon (Stephen) Wu <tak...@apache.org>
>> wrote:
>> 
>>> Hi team,
>>> 
>>> Recently, Wei-Chiu and I have been discussing about if HBase can use
>>> Ozone as another storage as WAL (see the hsync and hflush JIRAs [1])
>>> and HFile, for HFile it’s pluggable by configuring the file system to
>>> use Ozone File System (Ozone)
>>> 
>>> But we found that the WAL it’s a bit different, especially
>>> RecoverLeaseFSUtils#recoverFileLease [2], it has one check about if
>>> the file system is an instance of HDFS, and thus WAL recovery to
>>> execute file lease recovery from RS crashes. Here, if we would like to
>>> add Ozone, it does not matter by importing as a direct dependency to
>>> perform similar lease recovery or via reflection by class name in
>>> plaintext String, we still need to somehow introduce Ozone to be
>>> another supported file system. (we can discuss how we can implement
>>> better as well)
>>> 
>>> We also found other places e.g. FSUtils and HFileSystem have used
>>> DistributedFileSystem, but it should be able to move them into either
>>> hbase-asyncfs or a new FS related component to separate the use of
>>> different supported file systems.
>>> 
>>> So, we’re wondering if anyone would have any objections to adding
>>> Ozone as a dependency to hbase-asyncfs? or if you have a better idea
>>> how this could be added without adding Ozone as dependency, please
>>> feel free to comment on this thread.
>>> 
>>> 
>>> [1] Ozone is working on support for hsync and hflush,
>>> https://issues.apache.org/jira/browse/HDDS-7593,
>>> https://issues.apache.org/jira/browse/HDDS-4353
>>> [2] RecoverLeaseFSUtils#recoverFileLease,
>>> 
>>> 
>> https://github.com/apache/hbase/blob/master/hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/util/RecoverLeaseFSUtils.java#L53-L63
>>> 
>>> Thanks,
>>> Stephen
>>> 
>> 
>> 
>> --
>> Best regards,
>> Andrew
>> 
>> Unrest, ignorance distilled, nihilistic imbeciles -
>>    It's what we’ve earned
>> Welcome, apocalypse, what’s taken you so long?
>> Bring us the fitting end that we’ve been counting on
>>   - A23, Welcome, Apocalypse
>> 

Reply via email to