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

Mingjie Lai updated HBASE-2468:
-------------------------------

    Attachment: HBASE-2468-trunk.patch


Basic ideas:
1. At o.a.h.h.client.HConnectionManager.locateRegionInMeta(), prefetch certain 
number of table regions in global region loc cache when scanning META, instead 
of only caching the desired queried table+row region. 
2. For a fresh table load, *all* region locations of the table will be 
prefetched/cached. While after initialization, each miss could fetch ahead some 
number of rows from META. 

Patched files:
- o.a.h.h.client.HConnectionManager: added a new method to perform META table 
prewarm. 
- o.a.h.h.client.MetaScanner: overloaded MetaScanner.metaScan, to support 
scanning meta table within certain steps:
    public static void metaScan(HBaseConfiguration configuration,
      MetaScannerVisitor visitor, byte[] tableName, int rowLimit) 
- o.a.h.h.client.TestFromClientSide: added a test case for region cache
prewarm. 

Potential issues:
- o.a.h.h.client.HTable constructor triggers the cache prewarm right now, by 
calling HConnection.locateRegion(). I was suggested to defer calling 
locateRegion() from HTable constructor, but some of existing unit test cases 
failed because they implicitly rely on the constructor to do something, i.e., 
waiting for a table to be fully created after a table creation. 
- For 2, ``each miss could fetch ahead some number of rows'': right now, this 
number is hard-coded as 10. Is it necessary to make it configurable? 


> Improvements to prewarm META cache on clients
> ---------------------------------------------
>
>                 Key: HBASE-2468
>                 URL: https://issues.apache.org/jira/browse/HBASE-2468
>             Project: Hadoop HBase
>          Issue Type: Improvement
>          Components: client
>            Reporter: Todd Lipcon
>            Assignee: Mingjie Lai
>             Fix For: 0.21.0
>
>         Attachments: HBASE-2468-trunk.patch
>
>
> A couple different use cases cause storms of reads to META during startup. 
> For example, a large MR job will cause each map task to hit meta since it 
> starts with an empty cache.
> A couple possible improvements have been proposed:
>  - MR jobs could ship a copy of META for the table in the DistributedCache
>  - Clients could prewarm cache by doing a large scan of all the meta for the 
> table instead of random reads for each miss
>  - Each miss could fetch ahead some number of rows in META

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to