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

Elliott Clark edited comment on HBASE-10436 at 1/29/14 9:37 AM:
----------------------------------------------------------------

First this patch only addresses jmx and not the actual metrics system. (See how 
the other HMaster metrics are exposed; Interfaces in hbase-hadoop-compat and 
implementations in hbase-hadoop1|2-compat)

Secondly, This will synchronize on the online servers list everytime that JMX 
is polled.  That seems pretty onerous for exposing the list of region servers.  
That api already exists; We should have one way of getting that list, not 
multiple.

Thirdly I disagree that the metrics api should be treated like the user api.  
It's not the same at all.  If the HTable interface changes then compatibility 
is broken and users aren't able to get or put data.  If the metrics interface 
changes then some charts aren't filled in.  Those seems very different to me.  
Also there is no concept of deprecation with metrics.  That just isn't ever 
surfaced to users.  We told users the metrics would change very early in 0.95 
so there was notice given in this case. If we can't make changes with 0.96 then 
it will be tough to ever iterate on these.

Finally I feel that since metrics are very closely tied to the internals of 
HBase they should be treated as internal interfaces(limited private annotation 
equivalent).  For example:
* When/If we ever change to have lots of HLogs that will require metrics to 
change.
* Changing the memstore to be all off heap will require re-working the metrics.
* Different RPC servers will have very different metrics (different queues)

Change of the system shouldn't be held up because metrics will change.


was (Author: eclark):
First this patch only addresses jmx and not the actual metrics system. (See how 
the other HMaster metrics are exposed; Interfaces in hbase-hadoop-compat and 
implementations in hbase-hadoop1|2-compat)

Secondly, This will synchronize on the online servers list everytime that JMX 
is polled.  That seems pretty onerous for exposing the list of region servers.  
That api already exists; We should have one way of getting that list, not 
multiple.

Finally I disagree that the metrics api should be treated like the user api.  
It's not the same at all.  If the HTable interface changes then compatibility 
is broken and users aren't able to get or put data.  If the metrics interface 
changes then some charts aren't filled in.  Those seems very different to me.  
Also there is no concept of deprecation with metrics.  That just isn't ever 
surfaced to 

> hbase 0.96+ jmx metrics do not have regionserver info any more.
> ---------------------------------------------------------------
>
>                 Key: HBASE-10436
>                 URL: https://issues.apache.org/jira/browse/HBASE-10436
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.98.0, 0.96.0, 0.99.0
>            Reporter: Jonathan Hsieh
>            Assignee: Jonathan Hsieh
>            Priority: Critical
>         Attachments: hbase-10436.patch
>
>
> HBase 0.96's refactored jmx beans do not contain the master's list of dead 
> region servers and live regionservers with load info.  HBase 0.94 did (though 
> in a single monolithic blob).  
> This JMX interface should be considered as much of an API as the the normal 
> wire or java api.  Dropping values from this was done without deprecation and 
> the removal of this information is a functional regression.
> We should provide the information in the 0.96+ JMX.  HBase 0.94 had a  
> monolithic JMX blob ("hadoop:service=Master,name=Master")  that contained a 
> lot of information, including the regionserver list and the cached 
> regionserver load for each region  found on the master webpage.  0.96+ 
> refactored jmx this into several jmx beans which could be selectively 
> retrieved.  These include:
> * hadoop:service=HBase,name=Master,sub=AssignmentManager
> * hadoop:service=HBase,name=Master,sub=Balancer
> * hadoop:service=HBase,name=Master,sub=Server
> * hadoop:service=HBase,name=Master,sub=FileSystem
> Specifically the (Hadoop:service=HBase,name=Master,sub=Server) listing that 
> used to contain regionservers and deadregionservers in jmx were replaced in   
> with numRegionServers and numDeadRegionservers which only contain counts.  
> I propose just adding another mbean called "RegionServers" under the bean: 
> "hadoop:service=HBase,name=Master,sub=RegionServers"



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to