public void handle(JobHistory.RecordTypes recType, Map<Keys, String> values) throws IOException { if (recType.equals(JobHistory.RecordTypes.MapAttempt) || recType.equals(JobHistory.RecordTypes.ReduceAttempt)) { if (failureType.equals(values.get(Keys.TASK_STATUS)) ) { String hostName = values.get(Keys.HOSTNAME); String taskid = values.get(Keys.TASKID); Set<String> tasks = badNodesToNumFailedTasks.get(hostName); if (null == tasks ){ tasks = new TreeSet<String>(); tasks.add(taskid); badNodesToNumFailedTasks.put(hostName, tasks); }else{ tasks.add(taskid); } } } } abstract void setFailureType();
/** * Log a number of keys and values with record. the array length of keys and values * should be same. * @param recordType type of log event * @param keys type of log event * @param values type of log event */ static void log(ArrayList<PrintWriter> writers, RecordTypes recordType, Keys[] keys, String[] values) { StringBuffer buf = new StringBuffer(recordType.name()); buf.append(DELIMITER); for(int i =0; i< keys.length; i++){ buf.append(keys[i]); buf.append("=\""); values[i] = escapeString(values[i]); buf.append(values[i]); buf.append("\""); buf.append(DELIMITER); } buf.append(LINE_DELIMITER_CHAR); for (PrintWriter out : writers) { out.println(buf.toString()); } }
/** * Parse a single line of history. * @param line * @param l * @throws IOException */ private static void parseLine(String line, Listener l, boolean isEscaped) throws IOException{ // extract the record type int idx = line.indexOf(' '); String recType = line.substring(0, idx); String data = line.substring(idx+1, line.length()); Matcher matcher = pattern.matcher(data); while(matcher.find()){ String tuple = matcher.group(0); String []parts = StringUtils.split(tuple, StringUtils.ESCAPE_CHAR, '='); String value = parts[1].substring(1, parts[1].length() -1); if (isEscaped) { value = StringUtils.unEscapeString(value, StringUtils.ESCAPE_CHAR, charsToEscape); } parseBuffer.put(Keys.valueOf(parts[0]), value); } l.handle(RecordTypes.valueOf(recType), parseBuffer); parseBuffer.clear(); }
} else if (recType.equals(JobHistory.RecordTypes.Task)) { String taskId = values.get(Keys.TASKID); } else if (recType.equals(JobHistory.RecordTypes.MapAttempt)) { String attemptId = values.get(Keys.TASK_ATTEMPT_ID); } else if (recType.equals(JobHistory.RecordTypes.ReduceAttempt)) { String attemptId = values.get(Keys.TASK_ATTEMPT_ID);
/** * Log a number of keys and values with record. the array length of keys and values * should be same. * @param recordType type of log event * @param keys type of log event * @param values type of log event */ static void log(ArrayList<PrintWriter> writers, RecordTypes recordType, Keys[] keys, String[] values) { StringBuffer buf = new StringBuffer(recordType.name()); buf.append(DELIMITER); for(int i =0; i< keys.length; i++){ buf.append(keys[i]); buf.append("=\""); values[i] = escapeString(values[i]); buf.append(values[i]); buf.append("\""); buf.append(DELIMITER); } buf.append(LINE_DELIMITER_CHAR); for (PrintWriter out : writers) { LogTask task = new LogTask(out, buf.toString()); fileManager.addWriteTask(task); } }
public void handle(JobHistory.RecordTypes recType, Map<Keys, String> values) throws IOException { String jobTrackerId = values.get(JobHistory.Keys.JOBTRACKERID); String jobid = values.get(Keys.JOBID); if (recType == JobHistory.RecordTypes.Job) { job.handle(values); }if (recType.equals(JobHistory.RecordTypes.Task)) { String taskid = values.get(JobHistory.Keys.TASKID); getTask(taskid).handle(values); } else if (recType.equals(JobHistory.RecordTypes.MapAttempt)) { String taskid = values.get(Keys.TASKID); String mapAttemptId = values.get(Keys.TASK_ATTEMPT_ID); getMapAttempt(jobid, jobTrackerId, taskid, mapAttemptId).handle(values); } else if (recType.equals(JobHistory.RecordTypes.ReduceAttempt)) { String taskid = values.get(Keys.TASKID); String reduceAttemptId = values.get(Keys.TASK_ATTEMPT_ID); getReduceAttempt(jobid, jobTrackerId, taskid, reduceAttemptId).handle(values); } } }
/** * Parse a single line of history. * @param line * @param l * @throws IOException */ private static void parseLine(String line, Listener l, boolean isEscaped) throws IOException{ // extract the record type int idx = line.indexOf(' '); String recType = line.substring(0, idx); String data = line.substring(idx+1, line.length()); Matcher matcher = pattern.matcher(data); Map<Keys,String> parseBuffer = new HashMap<Keys, String>(); while(matcher.find()){ String tuple = matcher.group(0); String []parts = StringUtils.split(tuple, StringUtils.ESCAPE_CHAR, '='); String value = parts[1].substring(1, parts[1].length() -1); if (isEscaped) { value = StringUtils.unEscapeString(value, StringUtils.ESCAPE_CHAR, charsToEscape); } parseBuffer.put(Keys.valueOf(parts[0]), value); } l.handle(RecordTypes.valueOf(recType), parseBuffer); parseBuffer.clear(); }
public void handle(JobHistory.RecordTypes recType, Map<Keys, String> values) throws IOException { String jobTrackerId = values.get(JobHistory.Keys.JOBTRACKERID); String jobid = values.get(Keys.JOBID); if (recType == JobHistory.RecordTypes.Job) { job.handle(values); }if (recType.equals(JobHistory.RecordTypes.Task)) { String taskid = values.get(JobHistory.Keys.TASKID); getTask(taskid).handle(values); } else if (recType.equals(JobHistory.RecordTypes.MapAttempt)) { String taskid = values.get(Keys.TASKID); String mapAttemptId = values.get(Keys.TASK_ATTEMPT_ID); getMapAttempt(jobid, jobTrackerId, taskid, mapAttemptId).handle(values); } else if (recType.equals(JobHistory.RecordTypes.ReduceAttempt)) { String taskid = values.get(Keys.TASKID); String reduceAttemptId = values.get(Keys.TASK_ATTEMPT_ID); getReduceAttempt(jobid, jobTrackerId, taskid, reduceAttemptId).handle(values); } } }
public void handle(JobHistory.RecordTypes recType, Map<Keys, String> values) throws IOException { if (recType.equals(JobHistory.RecordTypes.MapAttempt) || recType.equals(JobHistory.RecordTypes.ReduceAttempt)) { if (failureType.equals(values.get(Keys.TASK_STATUS)) ) { String hostName = values.get(Keys.HOSTNAME); String taskid = values.get(Keys.TASKID); Set<String> tasks = badNodesToNumFailedTasks.get(hostName); if (null == tasks ){ tasks = new TreeSet<String>(); tasks.add(taskid); badNodesToNumFailedTasks.put(hostName, tasks); }else{ tasks.add(taskid); } } } } abstract void setFailureType();
/** * Log a raw record type with keys and values. This is method is generally not used directly. * @param recordType type of log event * @param key key * @param value value */ static void log(PrintWriter out, RecordTypes recordType, Keys key, String value){ value = escapeString(value); out.println(recordType.name() + DELIMITER + key + "=\"" + value + "\"" + DELIMITER + LINE_DELIMITER_CHAR); }
/** * Log a raw record type with keys and values. This is method is generally not used directly. * @param recordType type of log event * @param key key * @param value value */ public static void log(PrintWriter out, RecordTypes recordType, Keys key, String value){ value = escapeString(value); out.println(recordType.name() + DELIMITER + key + "=\"" + value + "\"" + DELIMITER + LINE_DELIMITER_CHAR); }