|
@@ -21,13 +21,13 @@ package org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.hadoop.yarn.api.records.ApplicationId;
|
|
import org.apache.hadoop.yarn.api.records.ApplicationId;
|
|
-import org.apache.hadoop.yarn.api.records.Container;
|
|
|
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
import org.apache.hadoop.yarn.api.records.NodeId;
|
|
import org.apache.hadoop.yarn.api.records.NodeId;
|
|
import org.apache.hadoop.yarn.api.records.Priority;
|
|
import org.apache.hadoop.yarn.api.records.Priority;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerNode;
|
|
|
|
|
|
/**
|
|
/**
|
|
* Utility for logging scheduler activities
|
|
* Utility for logging scheduler activities
|
|
@@ -63,7 +63,7 @@ public class ActivitiesLogger {
|
|
SchedulerApplicationAttempt application, Priority priority,
|
|
SchedulerApplicationAttempt application, Priority priority,
|
|
String diagnostic) {
|
|
String diagnostic) {
|
|
String type = "app";
|
|
String type = "app";
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
@@ -84,18 +84,18 @@ public class ActivitiesLogger {
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
SchedulerApplicationAttempt application, Priority priority,
|
|
SchedulerApplicationAttempt application, Priority priority,
|
|
String diagnostic, ActivityState appState) {
|
|
String diagnostic, ActivityState appState) {
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
String type = "container";
|
|
String type = "container";
|
|
// Add application-container activity into specific node allocation.
|
|
// Add application-container activity into specific node allocation.
|
|
- activitiesManager.addSchedulingActivityForNode(node.getNodeID(),
|
|
|
|
|
|
+ activitiesManager.addSchedulingActivityForNode(node,
|
|
application.getApplicationId().toString(), null,
|
|
application.getApplicationId().toString(), null,
|
|
priority.toString(), ActivityState.SKIPPED, diagnostic, type);
|
|
priority.toString(), ActivityState.SKIPPED, diagnostic, type);
|
|
type = "app";
|
|
type = "app";
|
|
// Add queue-application activity into specific node allocation.
|
|
// Add queue-application activity into specific node allocation.
|
|
- activitiesManager.addSchedulingActivityForNode(node.getNodeID(),
|
|
|
|
|
|
+ activitiesManager.addSchedulingActivityForNode(node,
|
|
application.getQueueName(),
|
|
application.getQueueName(),
|
|
application.getApplicationId().toString(),
|
|
application.getApplicationId().toString(),
|
|
application.getPriority().toString(), ActivityState.SKIPPED,
|
|
application.getPriority().toString(), ActivityState.SKIPPED,
|
|
@@ -121,20 +121,20 @@ public class ActivitiesLogger {
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
SchedulerApplicationAttempt application, RMContainer updatedContainer,
|
|
SchedulerApplicationAttempt application, RMContainer updatedContainer,
|
|
ActivityState activityState) {
|
|
ActivityState activityState) {
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
String type = "container";
|
|
String type = "container";
|
|
// Add application-container activity into specific node allocation.
|
|
// Add application-container activity into specific node allocation.
|
|
- activitiesManager.addSchedulingActivityForNode(node.getNodeID(),
|
|
|
|
|
|
+ activitiesManager.addSchedulingActivityForNode(node,
|
|
application.getApplicationId().toString(),
|
|
application.getApplicationId().toString(),
|
|
updatedContainer.getContainer().toString(),
|
|
updatedContainer.getContainer().toString(),
|
|
updatedContainer.getContainer().getPriority().toString(),
|
|
updatedContainer.getContainer().getPriority().toString(),
|
|
activityState, ActivityDiagnosticConstant.EMPTY, type);
|
|
activityState, ActivityDiagnosticConstant.EMPTY, type);
|
|
type = "app";
|
|
type = "app";
|
|
// Add queue-application activity into specific node allocation.
|
|
// Add queue-application activity into specific node allocation.
|
|
- activitiesManager.addSchedulingActivityForNode(node.getNodeID(),
|
|
|
|
|
|
+ activitiesManager.addSchedulingActivityForNode(node,
|
|
application.getQueueName(),
|
|
application.getQueueName(),
|
|
application.getApplicationId().toString(),
|
|
application.getApplicationId().toString(),
|
|
application.getPriority().toString(), ActivityState.ACCEPTED,
|
|
application.getPriority().toString(), ActivityState.ACCEPTED,
|
|
@@ -157,13 +157,15 @@ public class ActivitiesLogger {
|
|
* update.
|
|
* update.
|
|
*/
|
|
*/
|
|
public static void startAppAllocationRecording(
|
|
public static void startAppAllocationRecording(
|
|
- ActivitiesManager activitiesManager, NodeId nodeId, long currentTime,
|
|
|
|
|
|
+ ActivitiesManager activitiesManager, FiCaSchedulerNode node,
|
|
|
|
+ long currentTime,
|
|
SchedulerApplicationAttempt application) {
|
|
SchedulerApplicationAttempt application) {
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- activitiesManager.startAppAllocationRecording(nodeId, currentTime,
|
|
|
|
- application);
|
|
|
|
|
|
+ activitiesManager
|
|
|
|
+ .startAppAllocationRecording(node.getNodeID(), currentTime,
|
|
|
|
+ application);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -208,7 +210,7 @@ public class ActivitiesLogger {
|
|
public static void recordQueueActivity(ActivitiesManager activitiesManager,
|
|
public static void recordQueueActivity(ActivitiesManager activitiesManager,
|
|
SchedulerNode node, String parentQueueName, String queueName,
|
|
SchedulerNode node, String parentQueueName, String queueName,
|
|
ActivityState state, String diagnostic) {
|
|
ActivityState state, String diagnostic) {
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
@@ -240,7 +242,7 @@ public class ActivitiesLogger {
|
|
public static void finishAllocatedNodeAllocation(
|
|
public static void finishAllocatedNodeAllocation(
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
ActivitiesManager activitiesManager, SchedulerNode node,
|
|
ContainerId containerId, AllocationState containerState) {
|
|
ContainerId containerId, AllocationState containerState) {
|
|
- if (activitiesManager == null) {
|
|
|
|
|
|
+ if (node == null || activitiesManager == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
if (activitiesManager.shouldRecordThisNode(node.getNodeID())) {
|
|
@@ -277,7 +279,7 @@ public class ActivitiesLogger {
|
|
SchedulerNode node, String parentName, String childName,
|
|
SchedulerNode node, String parentName, String childName,
|
|
Priority priority, ActivityState state, String diagnostic, String type) {
|
|
Priority priority, ActivityState state, String diagnostic, String type) {
|
|
|
|
|
|
- activitiesManager.addSchedulingActivityForNode(node.getNodeID(), parentName,
|
|
|
|
|
|
+ activitiesManager.addSchedulingActivityForNode(node, parentName,
|
|
childName, priority != null ? priority.toString() : null, state,
|
|
childName, priority != null ? priority.toString() : null, state,
|
|
diagnostic, type);
|
|
diagnostic, type);
|
|
|
|
|