17
17
18
18
package org .apache .spark .network .yarn ;
19
19
20
- <<<<<<< HEAD
21
- import com .codahale .metrics .*;
22
- import com .google .common .annotations .VisibleForTesting ;
23
- import com .google .common .collect .ImmutableMap ;
24
- =======
25
20
import java .util .Map ;
26
21
27
22
import com .codahale .metrics .*;
28
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
29
23
import org .apache .hadoop .metrics2 .MetricsCollector ;
30
24
import org .apache .hadoop .metrics2 .MetricsInfo ;
31
25
import org .apache .hadoop .metrics2 .MetricsRecordBuilder ;
32
26
import org .apache .hadoop .metrics2 .MetricsSource ;
33
27
34
- <<<<<<< HEAD
35
- import java .util .Map ;
36
- import java .util .concurrent .TimeUnit ;
37
-
38
- /**
39
- * Modeled off of YARN's NodeManagerMetrics.
40
- */
41
- public class YarnShuffleServiceMetrics implements MetricsSource {
42
-
43
- // Converting from the dropwizard-metrics default of nanoseconds into milliseconds to match how
44
- // MetricsServlet serializes times (to milliseconds) configured via the MetricsModule passed into
45
- // its Jackson ObjectMapper. Without this rate factor applied, the Timer metrics from
46
- // ExternalShuffleBlockManager#ShuffleMetrics with "Millis" suffixes are misleading, as they
47
- // would otherwise contain values in nanoseconds units
48
- private static final double rateFactor = (double ) TimeUnit .MILLISECONDS .toNanos (1L );
49
-
50
- private final MetricSet metricSet ;
51
-
52
- public YarnShuffleServiceMetrics (MetricSet metricSet ) {
53
- =======
54
28
/**
55
29
* Forward {@link org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.ShuffleMetrics}
56
30
* to hadoop metrics system.
@@ -61,7 +35,6 @@ class YarnShuffleServiceMetrics implements MetricsSource {
61
35
private final MetricSet metricSet ;
62
36
63
37
YarnShuffleServiceMetrics (MetricSet metricSet ) {
64
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
65
38
this .metricSet = metricSet ;
66
39
}
67
40
@@ -73,118 +46,64 @@ class YarnShuffleServiceMetrics implements MetricsSource {
73
46
*/
74
47
@ Override
75
48
public void getMetrics (MetricsCollector collector , boolean all ) {
76
- <<<<<<< HEAD
77
- MetricsRecordBuilder metricsRecordBuilder = collector .addRecord ("shuffleService" );
78
- =======
79
49
MetricsRecordBuilder metricsRecordBuilder = collector .addRecord ("sparkShuffleService" );
80
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
81
50
82
51
for (Map .Entry <String , Metric > entry : metricSet .getMetrics ().entrySet ()) {
83
52
collectMetric (metricsRecordBuilder , entry .getKey (), entry .getValue ());
84
53
}
85
54
}
86
55
87
- <<<<<<< HEAD
88
- private static void addSnapshotToMetricRecordBuilder (Snapshot snapshot ,
89
- MetricsRecordBuilder builder ,
90
- String name ,
91
- String metricType ) {
92
-
93
- ImmutableMap <String , Double > doubleValues = ImmutableMap .<String , Double >builder ()
94
- .put ("median" , snapshot .getMedian ())
95
- .put ("mean" , snapshot .getMean ())
96
- .put ("75th" , snapshot .get75thPercentile ())
97
- .put ("95th" , snapshot .get95thPercentile ())
98
- .put ("98th" , snapshot .get98thPercentile ())
99
- .put ("99th" , snapshot .get99thPercentile ())
100
- .put ("999th" , snapshot .get999thPercentile ())
101
- .build ();
102
-
103
- ImmutableMap <String , Long > longValues = ImmutableMap .<String , Long >builder ()
104
- .put ("min" , snapshot .getMin ())
105
- .put ("max" , snapshot .getMax ())
106
- .build ();
107
-
108
- for (Map .Entry <String , Double > entry : doubleValues .entrySet ()) {
109
- builder .addGauge (
110
- new ShuffleServiceMetricsInfo (name + "_" + entry .getKey (),
111
- entry .getKey () + " of " + metricType + " " + name ),
112
- entry .getValue () / rateFactor );
113
- }
114
-
115
- for (Map .Entry <String , Long > entry : longValues .entrySet ()) {
116
- builder .addGauge (
117
- new ShuffleServiceMetricsInfo (name + "_" + entry .getKey (),
118
- entry .getKey () + " of " + metricType + " " + name ),
119
- entry .getValue () / rateFactor );
120
- }
121
-
122
- }
123
-
124
- @ VisibleForTesting
125
- public static void collectMetric (
126
- MetricsRecordBuilder metricsRecordBuilder , String name , Metric metric ) {
127
-
128
- // The metric types used in ExternalShuffleBlockHandler.ShuffleMetrics
129
- if (metric instanceof Timer ) {
130
- Timer t = (Timer ) metric ;
131
- Snapshot snapshot = t .getSnapshot ();
132
- =======
133
56
/**
134
57
* The metric types used in
135
58
* {@link org.apache.spark.network.shuffle.ExternalShuffleBlockHandler.ShuffleMetrics}.
136
59
* Visible for testing.
137
60
*/
138
61
public static void collectMetric (
139
- MetricsRecordBuilder metricsRecordBuilder , String name , Metric metric ) {
62
+ MetricsRecordBuilder metricsRecordBuilder , String name , Metric metric ) {
140
63
141
64
if (metric instanceof Timer ) {
142
65
Timer t = (Timer ) metric ;
143
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
144
66
metricsRecordBuilder
145
- .addCounter (new ShuffleServiceMetricsInfo (name + "_count" , "Count of timer " + name ),
146
- t .getCount ())
147
- .addGauge (
148
- new ShuffleServiceMetricsInfo (name + "_rate15" , "15 minute rate of timer " + name ),
149
- t .getFifteenMinuteRate ())
150
- .addGauge (
151
- new ShuffleServiceMetricsInfo (name + "_rate5" , "5 minute rate of timer " + name ),
152
- t .getFiveMinuteRate ())
153
- .addGauge (
154
- new ShuffleServiceMetricsInfo (name + "_rate1" , "1 minute rate of timer " + name ),
155
- t .getOneMinuteRate ())
156
- .addGauge (new ShuffleServiceMetricsInfo (name + "_rateMean" , "Mean rate of timer " + name ),
157
- t .getMeanRate ());
158
- <<<<<<< HEAD
159
- addSnapshotToMetricRecordBuilder (snapshot , metricsRecordBuilder , name , "timer ");
160
- =======
161
- >>>>>>> 075dd620e32872b5d90a2fa7d09b43b15502182b
67
+ .addCounter (new ShuffleServiceMetricsInfo (
68
+ name + "_count" , "Count of timer " + name ),
69
+ t .getCount ())
70
+ .addGauge (
71
+ new ShuffleServiceMetricsInfo (
72
+ name + "_rate15" , "15 minute rate of timer " + name ),
73
+ t .getFifteenMinuteRate ())
74
+ .addGauge (
75
+ new ShuffleServiceMetricsInfo (
76
+ name + "_rate5" , "5 minute rate of timer " + name ),
77
+ t .getFiveMinuteRate ())
78
+ .addGauge (
79
+ new ShuffleServiceMetricsInfo (
80
+ name + "_rate1" , "1 minute rate of timer " + name ),
81
+ t .getOneMinuteRate ())
82
+ .addGauge (new ShuffleServiceMetricsInfo (
83
+ name + "_rateMean" , "Mean rate of timer " + name ),
84
+ t .getMeanRate ());
162
85
} else if (metric instanceof Meter ) {
163
86
Meter m = (Meter ) metric ;
164
87
metricsRecordBuilder
165
- .addCounter(new ShuffleServiceMetricsInfo(name + " _count ", " Count of meter " + name),
166
- m.getCount())
167
- .addGauge(
168
- new ShuffleServiceMetricsInfo(name + " _rate15 ", " 15 minute rate of meter " + name),
169
- m.getFifteenMinuteRate())
170
- .addGauge(
171
- new ShuffleServiceMetricsInfo(name + " _rate5 ", " 5 minute rate of meter " + name),
172
- m.getFiveMinuteRate())
173
- .addGauge(
174
- new ShuffleServiceMetricsInfo(name + " _rate1 ", " 1 minute rate of meter " + name),
175
- m.getOneMinuteRate())
176
- .addGauge(new ShuffleServiceMetricsInfo(name + " _rateMean ", " Mean rate of meter " + name),
177
- m.getMeanRate());
88
+ .addCounter (new ShuffleServiceMetricsInfo (
89
+ name + "_count" , "Count of meter " + name ),
90
+ m .getCount ())
91
+ .addGauge (
92
+ new ShuffleServiceMetricsInfo (
93
+ name + "_rate15" , "15 minute rate of meter " + name ),
94
+ m .getFifteenMinuteRate ())
95
+ .addGauge (
96
+ new ShuffleServiceMetricsInfo (
97
+ name + "_rate5" , "5 minute rate of meter " + name ),
98
+ m .getFiveMinuteRate ())
99
+ .addGauge (
100
+ new ShuffleServiceMetricsInfo (
101
+ name + "_rate1" , "1 minute rate of meter " + name ),
102
+ m .getOneMinuteRate ())
103
+ .addGauge (new ShuffleServiceMetricsInfo (
104
+ name + "_rateMean" , "Mean rate of meter " + name ),
105
+ m .getMeanRate ());
178
106
} else if (metric instanceof Gauge ) {
179
- <<<<<<< HEAD
180
- Gauge m = (Gauge) metric;
181
- Object gaugeValue = m.getValue();
182
- if (gaugeValue instanceof Integer) {
183
- Integer intValue = (Integer) gaugeValue;
184
- metricsRecordBuilder
185
- .addGauge(new ShuffleServiceMetricsInfo(name, " Integer value of " +
186
- "gauge " + name ), intValue .intValue ());
187
- =======
188
107
final Object gaugeValue = ((Gauge ) metric ).getValue ();
189
108
if (gaugeValue instanceof Integer ) {
190
109
metricsRecordBuilder .addGauge (getShuffleServiceMetricsInfo (name ), (Integer ) gaugeValue );
@@ -197,18 +116,14 @@ public static void collectMetric(
197
116
} else {
198
117
throw new IllegalStateException (
199
118
"Not supported class type of metric[" + name + "] for value " + gaugeValue );
200
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
201
119
}
202
120
}
203
121
}
204
122
205
- <<<<<<< HEAD
206
- =======
207
123
private static MetricsInfo getShuffleServiceMetricsInfo (String name ) {
208
124
return new ShuffleServiceMetricsInfo (name , "Value of gauge " + name );
209
125
}
210
126
211
- >>>>>>> 075 dd620e32872b5d90a2fa7d09b43b15502182b
212
127
private static class ShuffleServiceMetricsInfo implements MetricsInfo {
213
128
214
129
private final String name ;
0 commit comments