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

Ronald Macmaster updated HBASE-18409:
-------------------------------------
        Fix Version/s: 3.0.0
    Affects Version/s:     (was: 2.0.0-alpha-1)
                       3.0.0
               Status: Patch Available  (was: Open)

The patch refactors the original MetricsConnection in the hbase-client module 
to report metrics via the Hadoop metrics2 system. 

Originally, metrics were reported privately through a codahale JMXReporter in 
the MetricsConnection class. The MetricsConnection class also recorded metrics 
using the codahale metrics classes rather than the hbase-metrics classes. These 
classes prove to be inflexible for the extendability and customization that 
hbase-client needs. 

Now, the MetricsConnection delegates updates to metrics to the metrics2 system. 
It does this through the addition of two new classes, MetricsClientSource and 
MetricsClientSourceImpl in the hbase-hadoop-compat and hbase-hadoop2-compat 
modules respectively. The new model closely resembles the architecture for 
collecting and reporting metrics from the Zookeeper client, master, and region 
server daemons. 

The patch unifies the concept of metrics reporting behind a single API.
Once the native infrastructure for metrics reporting via hbase-metrics is 
completed, metrics2 sources and sinks can be phased out accordingly. 

> Migrate Client Metrics from codahale to hbase-metrics
> -----------------------------------------------------
>
>                 Key: HBASE-18409
>                 URL: https://issues.apache.org/jira/browse/HBASE-18409
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client, java, metrics
>    Affects Versions: 3.0.0
>            Reporter: Ronald Macmaster
>              Labels: newbie
>             Fix For: 3.0.0
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> Currently, the metrics for hbase-client are tailored for reporting via a 
> client-side JMX server.
> The MetricsConnection handles the metrics management and reporting via the 
> metrics platform from codahale. 
> This approach worked well for hbase-1.3.1 when the metrics platform was still 
> relatively young, but it could be improved by using the new 
> hbase-metrics-api. 
> Now that we have an actual hbase-metrics-api that master, regionserver, 
> zookeeper, and other daemons use, it would be good to also allow the client 
> to leverage the metrics-api. 
> Then, the client could also report its metrics via Hadoop's metrics2 if 
> desired or through another platform that utilizes the hbase-metrics-api. 
> If left alone, client metrics will continue to be only barely visible through 
> a client-side JMX server.
> The migration to the new metrics-api could be done by simply changing the 
> Metrics data types from codahale types to hbase-metrics types without 
> changing the metrics signatures of MetricsConnection unless completely 
> necessary. 
> The codahale MetricsRegistry would also have to be exchanged for a 
> hbase-metrics MetricsRegistry. 
> I found this to be a necessary change after attempting to implement my own 
> Reporter to use within the MetricsConnection class.
> I was attempting to create a HadoopMetrics2Reporter that extends the codahale 
> ScheduledReporter and reports the MetricsConnection metrics to Hadoop's 
> metrics2 system. 
> The already existing infrastructure in the hbase-metrics and 
> hbase-metrics-api projects could be easily leveraged for a cleaner solution.
> If completed successfully, users could instead access their client-side 
> metrics through the hbase-metrics-api. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to