Repository: incubator-eagle Updated Branches: refs/heads/master 6ec928941 -> ab3ed13e1
[EAGLE-728] Application can't load application.properties when running local mode EAGLE-728 Application can't load application.properties when running local mode - Use hard code, and overwrite it if user passes this configuration form web ui. https://issues.apache.org/jira/browse/EAGLE-728 Author: chitin <chitin1...@gmail.com> Closes #612 from chitin/EAGLE-728-2. Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/ab3ed13e Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/ab3ed13e Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/ab3ed13e Branch: refs/heads/master Commit: ab3ed13e18c85fa3fd64a08a070aaf24391aeb1e Parents: 6ec9289 Author: chitin <chitin1...@gmail.com> Authored: Wed Nov 9 10:47:06 2016 +0800 Committer: wujinhu <wujinhu...@126.com> Committed: Wed Nov 9 10:47:06 2016 +0800 ---------------------------------------------------------------------- .../jpm/mr/history/parser/JHFEventReaderBase.java | 2 +- .../eagle/jpm/mr/running/MRRunningJobApplication.java | 3 ++- .../eagle/jpm/mr/running/parser/MRJobParser.java | 8 ++++++-- .../jpm/mr/running/storm/MRRunningJobParseBolt.java | 8 ++++++-- .../jpm/spark/history/crawl/JHFSparkEventReader.java | 2 +- .../java/org/apache/eagle/jpm/util/Constants.java | 4 ++++ .../apache/eagle/jpm/util/JobNameNormalization.java | 14 ++++---------- 7 files changed, 24 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-mr-history/src/main/java/org/apache/eagle/jpm/mr/history/parser/JHFEventReaderBase.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-mr-history/src/main/java/org/apache/eagle/jpm/mr/history/parser/JHFEventReaderBase.java b/eagle-jpm/eagle-jpm-mr-history/src/main/java/org/apache/eagle/jpm/mr/history/parser/JHFEventReaderBase.java index e48370d..80cdb1c 100644 --- a/eagle-jpm/eagle-jpm-mr-history/src/main/java/org/apache/eagle/jpm/mr/history/parser/JHFEventReaderBase.java +++ b/eagle-jpm/eagle-jpm-mr-history/src/main/java/org/apache/eagle/jpm/mr/history/parser/JHFEventReaderBase.java @@ -200,7 +200,7 @@ public abstract class JHFEventReaderBase extends JobEntityCreationPublisher impl } if (jobDefId == null) { - this.jobDefId = JobNameNormalization.getInstance().normalize(jobName); + this.jobDefId = JobNameNormalization.getInstance(this.appConfig.getConfig()).normalize(jobName); } else { LOG.debug("Got JobDefId from job configuration for " + id + ": " + jobDefId); this.jobDefId = jobDefId; http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplication.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplication.java b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplication.java index bfdde13..e5c7c87 100644 --- a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplication.java +++ b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/MRRunningJobApplication.java @@ -66,7 +66,8 @@ public class MRRunningJobApplication extends StormApplication { mrRunningJobConfig.getEagleServiceConfig(), mrRunningJobConfig.getEndpointConfig(), mrRunningJobConfig.getZkStateConfig(), - confKeyKeys), + confKeyKeys, + config), tasks).setNumTasks(tasks).fieldsGrouping(spoutName, new Fields("appId")); return topologyBuilder.createTopology(); } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/parser/MRJobParser.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/parser/MRJobParser.java b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/parser/MRJobParser.java index 945e8ce..7b90dfc 100644 --- a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/parser/MRJobParser.java +++ b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/parser/MRJobParser.java @@ -18,6 +18,7 @@ package org.apache.eagle.jpm.mr.running.parser; +import com.typesafe.config.Config; import org.apache.eagle.jpm.mr.running.MRRunningJobConfig; import org.apache.eagle.jpm.mr.running.recover.MRRunningJobManager; import org.apache.eagle.jpm.mr.runningentity.JobConfig; @@ -79,6 +80,7 @@ public class MRJobParser implements Runnable { private static final int TOP_BOTTOM_TASKS_BY_ELAPSED_TIME = 10; private static final int FLUSH_TASKS_EVERY_TIME = 5; private static final int MAX_TASKS_PERMIT = 5000; + private Config config; static { OBJ_MAPPER.configure(JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS, true); @@ -88,7 +90,8 @@ public class MRJobParser implements Runnable { MRRunningJobConfig.EagleServiceConfig eagleServiceConfig, AppInfo app, Map<String, JobExecutionAPIEntity> mrJobMap, MRRunningJobManager runningJobManager, ResourceFetcher rmResourceFetcher, - List<String> configKeys) { + List<String> configKeys, + Config config) { this.app = app; this.mrJobEntityMap = new HashMap<>(); this.mrJobEntityMap = mrJobMap; @@ -107,6 +110,7 @@ public class MRJobParser implements Runnable { this.rmResourceFetcher = rmResourceFetcher; this.finishedTaskIds = new HashSet<>(); this.configKeys = configKeys; + this.config = config; } public void setAppInfo(AppInfo app) { @@ -195,7 +199,7 @@ public class MRJobParser implements Runnable { jobExecutionAPIEntity.setTags(new HashMap<>(commonTags)); jobExecutionAPIEntity.getTags().put(MRJobTagName.JOB_ID.toString(), id); jobExecutionAPIEntity.getTags().put(MRJobTagName.JOB_NAME.toString(), mrJob.getName()); - String jobDefId = JobNameNormalization.getInstance().normalize(mrJob.getName()); + String jobDefId = JobNameNormalization.getInstance(this.config).normalize(mrJob.getName()); jobExecutionAPIEntity.getTags().put(MRJobTagName.JOD_DEF_ID.toString(), jobDefId); if (mrJobConfigs.get(id) != null) { JobConfig jobConfig = mrJobConfigs.get(id); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/storm/MRRunningJobParseBolt.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/storm/MRRunningJobParseBolt.java b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/storm/MRRunningJobParseBolt.java index 9ebc1a7..e2767d8 100644 --- a/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/storm/MRRunningJobParseBolt.java +++ b/eagle-jpm/eagle-jpm-mr-running/src/main/java/org/apache/eagle/jpm/mr/running/storm/MRRunningJobParseBolt.java @@ -18,6 +18,7 @@ package org.apache.eagle.jpm.mr.running.storm; +import com.typesafe.config.Config; import org.apache.eagle.jpm.mr.running.MRRunningJobConfig; import org.apache.eagle.jpm.mr.running.parser.MRJobParser; import org.apache.eagle.jpm.mr.running.recover.MRRunningJobManager; @@ -49,16 +50,19 @@ public class MRRunningJobParseBolt extends BaseRichBolt { private MRRunningJobConfig.EagleServiceConfig eagleServiceConfig; private ResourceFetcher resourceFetcher; private List<String> configKeys; + private Config config; public MRRunningJobParseBolt(MRRunningJobConfig.EagleServiceConfig eagleServiceConfig, MRRunningJobConfig.EndpointConfig endpointConfig, MRRunningJobConfig.ZKStateConfig zkStateConfig, - List<String> configKeys) { + List<String> configKeys, + Config config) { this.eagleServiceConfig = eagleServiceConfig; this.endpointConfig = endpointConfig; this.runningMRParsers = new HashMap<>(); this.zkStateConfig = zkStateConfig; this.configKeys = configKeys; + this.config = config; } @Override @@ -79,7 +83,7 @@ public class MRRunningJobParseBolt extends BaseRichBolt { MRJobParser applicationParser; if (!runningMRParsers.containsKey(appInfo.getId())) { applicationParser = new MRJobParser(endpointConfig, eagleServiceConfig, - appInfo, mrJobs, runningJobManager, this.resourceFetcher, configKeys); + appInfo, mrJobs, runningJobManager, this.resourceFetcher, configKeys, this.config); runningMRParsers.put(appInfo.getId(), applicationParser); LOG.info("create application parser for {}", appInfo.getId()); } else { http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-spark-history/src/main/java/org/apache/eagle/jpm/spark/history/crawl/JHFSparkEventReader.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-spark-history/src/main/java/org/apache/eagle/jpm/spark/history/crawl/JHFSparkEventReader.java b/eagle-jpm/eagle-jpm-spark-history/src/main/java/org/apache/eagle/jpm/spark/history/crawl/JHFSparkEventReader.java index 82b7607..a4ac77e 100644 --- a/eagle-jpm/eagle-jpm-spark-history/src/main/java/org/apache/eagle/jpm/spark/history/crawl/JHFSparkEventReader.java +++ b/eagle-jpm/eagle-jpm-spark-history/src/main/java/org/apache/eagle/jpm/spark/history/crawl/JHFSparkEventReader.java @@ -674,7 +674,7 @@ public class JHFSparkEventReader { if (null != assignedName) { return assignedName; } else { - return JobNameNormalization.getInstance().normalize(jobName); + return JobNameNormalization.getInstance(this.config.getConfig()).normalize(jobName); } } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/Constants.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/Constants.java b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/Constants.java index 73100a9..038618f 100644 --- a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/Constants.java +++ b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/Constants.java @@ -187,4 +187,8 @@ public class Constants { public static final String HADOOP_HISTORY_TOTAL_METRIC_FORMAT = "hadoop.%s.history.%s"; public static final String HADOOP_HISTORY_MINUTE_METRIC_FORMAT = "hadoop.%s.history.minute.%s"; + + public static final String JOB_NAME_NORMALIZATION_RULES_KEY_DEFAULT = "^(.*)[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]{2}$ => " + + "$1~ ; ^(oozie:launcher):T=(.*):W=(.*):A=(.*):ID=(?:.*)$ => $1-$2-$3-$4~ ; ^(.*)([0-9]{10})$ => $1~ ; " + + "^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$ => uuid~ ; ^(.*)(?:[0-9]{8}/[0-9]{2}_[0-9]{2})$ => $1~"; } http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab3ed13e/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/JobNameNormalization.java ---------------------------------------------------------------------- diff --git a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/JobNameNormalization.java b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/JobNameNormalization.java index b3673ea..0b38c67 100644 --- a/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/JobNameNormalization.java +++ b/eagle-jpm/eagle-jpm-util/src/main/java/org/apache/eagle/jpm/util/JobNameNormalization.java @@ -29,7 +29,6 @@ import java.util.regex.Pattern; public class JobNameNormalization { private static Logger LOG = LoggerFactory.getLogger(JobNameNormalization.class); - private static JobNameNormalization instance = new JobNameNormalization(); private static final String JOB_NAME_NORMALIZATION_RULES_KEY = "job.name.normalization.rules.key"; private static final String PARAMETERIZED_PREFIX = "\\$"; private static final String MULTIPLE_RULE_DILIMITER = ";"; @@ -59,16 +58,11 @@ public class JobNameNormalization { String target; } - private JobNameNormalization() { + private JobNameNormalization(Config conf) { try { // load normalization rules - Config conf = ConfigFactory.load(); String key = JOB_NAME_NORMALIZATION_RULES_KEY.toLowerCase(); - String value = conf.getString(key); - if (value == null) { - LOG.info("no job name normalization rules are loaded"); - return; - } + String value = conf.getString(key) != null ? conf.getString(key) : Constants.JOB_NAME_NORMALIZATION_RULES_KEY_DEFAULT; // multiple rules are concatenated with semicolon, i.e. ; String[] rules = value.split(MULTIPLE_RULE_DILIMITER); for (String rule : rules) { @@ -82,8 +76,8 @@ public class JobNameNormalization { } } - public static JobNameNormalization getInstance() { - return instance; + public static JobNameNormalization getInstance(Config config) { + return new JobNameNormalization(config); } private void addRule(String rule) {