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

Andrew Purtell commented on HBASE-11747:
----------------------------------------

[~stack] We had an interesting production problem where our monitoring would 
call getClusterStatus, enough monitoring endpoints would do this at once, and 
the total heap demand for assembling the responses on some of our larger 
clusters would crash the active master with OOME. Branch-2 has API changes to 
getClusterStatus that help, you can filter for specific items of interest. 
However at sufficient scale it just won't work. We need incremental reporting, 
incremental query. 

Related, over on 
https://issues.apache.org/jira/browse/PHOENIX-4974?focusedCommentId=16655747&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16655747

{quote}

At some point we should think about optimizing 
{{getRegionLocator(...).getAllRegionLocations()}} for high scale installations. 
For example, we could support incremental queries. Given a timestamp, return 
only the changes in region location since that time. Then the client can 
initialize its cache with an expensive retrieval once, and refresh its cache 
from there with lighter weight incremental queries. Requires reimplementing the 
equivalent of the old Region Historian over in HBase though. We could keep 
historical locations with fairly short TTL in META. Will need splittable META 
for high scale anyhow.

{quote}

> ClusterStatus (heartbeat) is too bulky 
> ---------------------------------------
>
>                 Key: HBASE-11747
>                 URL: https://issues.apache.org/jira/browse/HBASE-11747
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Virag Kothari
>            Priority: Critical
>         Attachments: exceptiontrace
>
>
> Following exception on 0.98 with 1M regions on cluster with 160 region servers
> {code}
> Caused by: java.io.IOException: Call to regionserverhost:port failed on local 
> exception: com.google.protobuf.InvalidProtocolBufferException: Protocol 
> message was too large.  May be malicious.  Use 
> CodedInputStream.setSizeLimit() to increase the size limit.
>       at 
> org.apache.hadoop.hbase.ipc.RpcClient.wrapException(RpcClient.java:1482)
>       at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1454)
>       at 
> org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1654)
>       at 
> org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1712)
>       at 
> org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.getClusterStatus(MasterProtos.java:42555)
>       at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation$5.getClusterStatus(HConnectionManager.java:2132)
>       at 
> org.apache.hadoop.hbase.client.HBaseAdmin$16.call(HBaseAdmin.java:2166)
>       at 
> org.apache.hadoop.hbase.client.HBaseAdmin$16.call(HBaseAdmin.java:2162)
>       at 
> org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
>       ... 43 more
> Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol 
> message was too large.  May be malicious.  Use 
> CodedInputStream.setSizeLimit() to increase the size limit.
>       at 
> com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:110)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to