[ 
https://issues.apache.org/jira/browse/HADOOP-6728?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910898#action_12910898
 ] 

Luke Lu commented on HADOOP-6728:
---------------------------------

bq. The design is treating jmx and ganglia as first class citizen.

No, the design treats MetricsSource, MetricsSystem and MetricsSink interface as 
first class citizens. The default metrics system *implementation* happens to 
export all metrics source as JMX MBeans. A GangliaSink would be just another 
(though bundled for historical reasons) MetricsSink plugin just as FileSink and 
other Y internal plugins.

bq. it breaks existing API without real value to the customer who already use 
jmx or MetricsContext api.

Currently only RPC and a portion of HDFS metrics are accessible via JMX. The 
new framework enabled *all* metrics (including jvm (from JvmMetrics that 
includes log4j category counts, not just system jvm stuff), mapred, ugi etc.) 
to be accessible via jmx with reduced effort. The main value of the new 
framework is to allow parallel nonblocking MetricsSinks and dynamic 
reconfig/reload metrics plugins *without* server restart. Both (requirements 
from Y ops) are impossible with the current AbstractMetricsContext approach. Y 
ops already enjoy rerouting metrics to different backends dynamically without 
restarting namenode (which takes a long time.) The whole metrics sub system 
with substantial production config options can be restarted in a fraction of a 
second.

bq. Why not web service REST api? 

It's entirely possible to write a MetricsSink plugin that actually does that. 
But it would be redundant as JMX is already available (as a pull model service) 
and there're plenty of JMX to whatever tools available.

bq. I was thinking if the interface could be generalized...

The interface is almost as generalized as it can be. It's basically an 
efficient key-value pair pubsub system. All the servers export metrics in a 
consistent manner, albeit not via a web service which would be a very 
inefficient way of doing metrics for thousands of datanodes and tasktrackers. 
Instead, we can have highly efficient MetricsSink plugins to send compact UDP 
packets to hierarchical metrics aggregators.


> Overhaul metrics framework
> --------------------------
>
>                 Key: HADOOP-6728
>                 URL: https://issues.apache.org/jira/browse/HADOOP-6728
>             Project: Hadoop Common
>          Issue Type: Improvement
>    Affects Versions: 0.20.2
>            Reporter: Luke Lu
>            Assignee: Luke Lu
>             Fix For: 0.22.0
>
>         Attachments: hadoop-6728-y20.104.patch, metrics1-flow.png, 
> metrics2-builder-r2.png, metrics2-builder.png, metrics2-flow.png, 
> metrics2-mutable-r2.png, metrics2-mutable.png, metrics2-record-r2.png, 
> metrics2-record.png, metrics2-uml-r2.png, metrics2-uml.png
>
>
> Per discussions with Arun, Chris, Hong and Rajiv, et al, we concluded that 
> the current metrics framework needs an overhaul to:
> * Allow multiple plugins for different monitoring systems simultaneously (see 
> also: HADOOP-6508).
> * Refresh metrics plugin config without server restart.
> ** Including filtering of metrics per plugin.
> * Support metrics schema for plugins.
> The jira will be resolved when core hadoop components (hdfs, mapreduce) are 
> updated to use the new framework . Updates to external components that use 
> the existing metrics framework will be tracked by different issues.

-- 
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