|
@@ -20,6 +20,7 @@ package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline
|
|
|
import org.apache.commons.io.FilenameUtils;
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.PhoenixHBaseAccessor;
|
|
|
+import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.TimelineMetricHAController;
|
|
|
import org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.discovery.TimelineMetricMetadataManager;
|
|
|
|
|
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
|
@@ -29,12 +30,12 @@ import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.ti
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_HOUR_CHECKPOINT_CUTOFF_MULTIPLIER;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_HOUR_DISABLED;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_HOUR_SLEEP_INTERVAL;
|
|
|
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_CHECKPOINT_CUTOFF_MULTIPLIER;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_MINUTE_CHECKPOINT_CUTOFF_MULTIPLIER;
|
|
|
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_DISABLED;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_MINUTE_DISABLED;
|
|
|
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_SLEEP_INTERVAL;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_MINUTE_SLEEP_INTERVAL;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_CHECKPOINT_CUTOFF_MULTIPLIER;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_DISABLED;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_SECOND_SLEEP_INTERVAL;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.CLUSTER_AGGREGATOR_TIMESLICE_INTERVAL;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.DEFAULT_CHECKPOINT_LOCATION;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.HOST_AGGREGATOR_DAILY_CHECKPOINT_CUTOFF_MULTIPLIER;
|
|
@@ -48,6 +49,13 @@ import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.ti
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.HOST_AGGREGATOR_MINUTE_SLEEP_INTERVAL;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.USE_GROUPBY_AGGREGATOR_QUERIES;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_AGGREGATE_DAILY;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_AGGREGATE_HOURLY;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_AGGREGATE_MINUTE;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_AGGREGATE_SECOND;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_RECORD_DAILY;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_RECORD_HOURLY;
|
|
|
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.availability.AggregationTaskRunner.AGGREGATOR_NAME.METRIC_RECORD_MINUTE;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.METRICS_AGGREGATE_DAILY_TABLE_NAME;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.METRICS_AGGREGATE_HOURLY_TABLE_NAME;
|
|
|
import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.query.PhoenixTransactSQL.METRICS_AGGREGATE_MINUTE_TABLE_NAME;
|
|
@@ -86,7 +94,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 5 mins
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineMetricAggregatorMinute
|
|
|
- (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -104,7 +113,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorMinute",
|
|
|
+ METRIC_RECORD_MINUTE,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -112,12 +121,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorMinute",
|
|
|
+ METRIC_RECORD_MINUTE,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -125,7 +135,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l);
|
|
|
+ 120000l,
|
|
|
+ haController);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -133,7 +144,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 1 hour
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineMetricAggregatorHourly
|
|
|
- (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -151,7 +163,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorHourly",
|
|
|
+ METRIC_RECORD_HOURLY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -159,12 +171,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 3600000l
|
|
|
+ 3600000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorHourly",
|
|
|
+ METRIC_RECORD_HOURLY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -172,7 +185,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 3600000l);
|
|
|
+ 3600000l,
|
|
|
+ haController);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -180,7 +194,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 1 day
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineMetricAggregatorDaily
|
|
|
- (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ (PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -198,7 +213,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorDaily",
|
|
|
+ METRIC_RECORD_DAILY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -206,12 +221,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 3600000l
|
|
|
+ 3600000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricHostAggregator(
|
|
|
- "TimelineMetricHostAggregatorDaily",
|
|
|
+ METRIC_RECORD_DAILY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -219,7 +235,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
hostAggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 3600000l);
|
|
|
+ 3600000l,
|
|
|
+ haController);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -229,7 +246,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineClusterAggregatorSecond(
|
|
|
PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
- TimelineMetricMetadataManager metadataManager) {
|
|
|
+ TimelineMetricMetadataManager metadataManager,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -252,7 +270,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
// Second based aggregation have added responsibility of time slicing
|
|
|
return new TimelineMetricClusterAggregatorSecond(
|
|
|
- "TimelineClusterAggregatorSecond",
|
|
|
+ METRIC_AGGREGATE_SECOND,
|
|
|
metadataManager,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
@@ -262,7 +280,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
120000l,
|
|
|
- timeSliceIntervalMillis
|
|
|
+ timeSliceIntervalMillis,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -271,7 +290,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 5 mins
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineClusterAggregatorMinute(
|
|
|
- PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -291,7 +311,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorMinute",
|
|
|
+ METRIC_AGGREGATE_MINUTE,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -299,12 +319,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorMinute",
|
|
|
+ METRIC_AGGREGATE_MINUTE,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -312,7 +333,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -321,7 +343,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 1 hour
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineClusterAggregatorHourly(
|
|
|
- PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -341,7 +364,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorHourly",
|
|
|
+ METRIC_AGGREGATE_HOURLY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -349,12 +372,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorHourly",
|
|
|
+ METRIC_AGGREGATE_HOURLY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -362,7 +386,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -371,7 +396,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
* Interval : 1 day
|
|
|
*/
|
|
|
public static TimelineMetricAggregator createTimelineClusterAggregatorDaily(
|
|
|
- PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf) {
|
|
|
+ PhoenixHBaseAccessor hBaseAccessor, Configuration metricsConf,
|
|
|
+ TimelineMetricHAController haController) {
|
|
|
|
|
|
String checkpointDir = metricsConf.get(
|
|
|
TIMELINE_METRICS_AGGREGATOR_CHECKPOINT_DIR, DEFAULT_CHECKPOINT_LOCATION);
|
|
@@ -391,7 +417,7 @@ public class TimelineMetricAggregatorFactory {
|
|
|
|
|
|
if (useGroupByAggregator(metricsConf)) {
|
|
|
return new org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.v2.TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorDaily",
|
|
|
+ METRIC_AGGREGATE_DAILY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -399,12 +425,13 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return new TimelineMetricClusterAggregator(
|
|
|
- "TimelineClusterAggregatorDaily",
|
|
|
+ METRIC_AGGREGATE_DAILY,
|
|
|
hBaseAccessor, metricsConf,
|
|
|
checkpointLocation,
|
|
|
sleepIntervalMillis,
|
|
@@ -412,7 +439,8 @@ public class TimelineMetricAggregatorFactory {
|
|
|
aggregatorDisabledParam,
|
|
|
inputTableName,
|
|
|
outputTableName,
|
|
|
- 120000l
|
|
|
+ 120000l,
|
|
|
+ haController
|
|
|
);
|
|
|
}
|
|
|
}
|