You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (Jira)" <ji...@apache.org> on 2019/09/06 04:47:00 UTC
[jira] [Commented] (HBASE-22888) Use separate classe to deal with
streaming read and pread
[ https://issues.apache.org/jira/browse/HBASE-22888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16923925#comment-16923925 ]
Anoop Sam John commented on HBASE-22888:
----------------------------------------
A nice find. So now if there is a stream reader is created, it will create new HFileReader which in turn do loading of the FFT, Meta blocks, load on startup blocks etc. Also if prefect cache is needed, it will again do the prefetch read into cache !.
On closing the stream reader, it would have cancelled the cache prefetch if it was still in progress
Checking the E2E reader creation flow, I can see it will again call the CP hooks around the StoreFileReader creation! May be even that is not needed really?
I like the way we have 2 HFileReader impls now. You can clearly do the extra steps for Stream reader (ie. While creation, create a new FSReaderImpl and on close, close that alone.
{code}
dataBlockIndexReader.copyFields(reader.getDataBlockIndexReader());
metaBlockIndexReader.copyFields(reader.getMetaBlockIndexReader());
{code}
Do we really need to do this copy? The stream reader's block index reader can directly refer to the pread HFileReader's block index reader? More over can we do this clone stuff within the HFileReader itself? If HFileReader having an API like cloneForNewStreamRead() (Pardon the name) , we can do all the cone stuff etc within itself. Same way would have been best for StoreFileReader also so that we can avoid the CP hooks calls (?)
Again this is a nice catch
> Use separate classe to deal with streaming read and pread
> ---------------------------------------------------------
>
> Key: HBASE-22888
> URL: https://issues.apache.org/jira/browse/HBASE-22888
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 2.0.0
> Reporter: chenxu
> Assignee: chenxu
> Priority: Major
>
> When switching pread to stream read, new HFileReaderImpl will be create, but the two different readers do not share informations with each other. maybe we can divide HFileReaderImpl into two different class, such as HFilePreadReader and HFileStreamReader. When constructing HFileStreamReader, it will copy some stuffs (fileInfo, index, etc) from an already existing Reader, and no need to do prefetch operations.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)