Pankaj Kumar created HBASE-25277:
------------------------------------

             Summary: postScannerFilterRow impacts Scan performance a lot in 
HBase 2.x
                 Key: HBASE-25277
                 URL: https://issues.apache.org/jira/browse/HBASE-25277
             Project: HBase
          Issue Type: Bug
          Components: Coprocessors, scan
            Reporter: Pankaj Kumar
            Assignee: Pankaj Kumar


In our test we observed Scan performance is degraded by more than 60% in 
HBase-2.x as compared to 1.3.x.  As per the flamegraph report, RS spent 31% of 
the time in postScannerFilterRow, however the coprocessors (AccessController, 
VisibilityController & ConstraintProcessor) does nothing in that hook.

HBASE-14489 added the logic to avoid the call to postScannerFilterRow when not 
needed which is not working as expected in HBase 2.x. AccessController, 
VisibilityController & ConstraintProcessor override the postScannerFilterRow 
with dummy (same as RegionObserver) implementation, so 
RegionCoprocessorHost.hasCustomPostScannerFilterRow will be TRUE and call the 
hook for all configured CPs while processing each row .  Suppose we have 
configured 5 region CPs and there are 1 M rows in table, then there will be 1 * 
5 M dummy call to postScannerFilterRow during whole table scan.
We need to remove postScannerFilterRow hook from these CPs as these are not 
doing anything.

Another problem is in RegionCoprocessorHost.hasCustomPostScannerFilterRow init 
logic, currently it is always TRUE even though we remove postScannerFilterRow 
hook from AccessController, VisibilityController & ConstraintProcessor, because 
we are finding  postScannerFilterRow until  it is found (we look in configured 
CP's super class also) or clazz is NULL.

https://github.com/apache/hbase/blob/035c192eb665469ce0c071db86c78f4a873c123b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java#L301

Supper class of Object (super class of AccessController) will be NULL, so 
RegionCoprocessorHost.hasCustomPostScannerFilterRow will be set as TRUE
https://github.com/apache/hbase/blob/035c192eb665469ce0c071db86c78f4a873c123b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java#L279



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

Reply via email to