You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by cn...@apache.org on 2014/02/01 00:05:27 UTC
svn commit: r1563327 - in
/hadoop/common/branches/HDFS-4685/hadoop-yarn-project: ./
hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/
hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/...
Author: cnauroth
Date: Fri Jan 31 23:05:23 2014
New Revision: 1563327
URL: http://svn.apache.org/r1563327
Log:
Merge trunk to HDFS-4685.
Added:
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationMasterService.java
- copied unchanged from r1563325, hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestApplicationMasterService.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java
- copied unchanged from r1563325, hadoop/common/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestSchedulerApplicationAttempt.java
Removed:
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationmasterservice/
Modified:
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/ (props changed)
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Queue.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java
hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/CHANGES.txt Fri Jan 31 23:05:23 2014
@@ -9,6 +9,24 @@ Trunk - Unreleased
YARN-1496. Protocol additions to allow moving apps between queues (Sandy
Ryza)
+ YARN-1498. Common scheduler changes for moving apps between queues (Sandy
+ Ryza)
+
+ IMPROVEMENTS
+
+ OPTIMIZATIONS
+
+ BUG FIXES
+
+ YARN-524 TestYarnVersionInfo failing if generated properties doesn't
+ include an SVN URL. (stevel)
+
+Release 2.4.0 - UNRELEASED
+
+ INCOMPATIBLE CHANGES
+
+ NEW FEATURES
+
YARN-930. Bootstrapping ApplicationHistoryService module. (vinodkv)
YARN-947. Implementing the data objects to be used by the History reader
@@ -70,13 +88,16 @@ Trunk - Unreleased
YARN-987. Added ApplicationHistoryManager responsible for exposing reports to
all clients. (Mayank Bansal via vinodkv)
+ YARN-1630. Introduce timeout for async polling operations in YarnClientImpl
+ (Aditya Acharya via Sandy Ryza)
+
+ YARN-1617. Remove ancient comment and surround LOG.debug in
+ AppSchedulingInfo.allocate (Sandy Ryza)
+
OPTIMIZATIONS
BUG FIXES
- YARN-524 TestYarnVersionInfo failing if generated properties doesn't
- include an SVN URL. (stevel)
-
YARN-935. Correcting pom.xml to build applicationhistoryserver module
successfully. (Zhijie Shen via vinodkv)
@@ -112,7 +133,17 @@ Trunk - Unreleased
YARN-1613. Fixed the typo with the configuration name
YARN_HISTORY_SERVICE_ENABLED. (Akira Ajisaka via vinodkv)
-Release 2.4.0 - UNRELEASED
+ YARN-1618. Fix invalid RMApp transition from NEW to FINAL_SAVING (kasha)
+
+ YARN-1600. RM does not startup when security is enabled without spnego
+ configured (Haohui Mai via jlowe)
+
+ YARN-1642. RMDTRenewer#getRMClient should use ClientRMProxy (kasha)
+
+ YARN-1632. TestApplicationMasterServices should be under
+ org.apache.hadoop.yarn.server.resourcemanager package (Chen He via jeagles)
+
+Release 2.3.0 - UNRELEASED
INCOMPATIBLE CHANGES
@@ -169,6 +200,30 @@ Release 2.4.0 - UNRELEASED
IMPROVEMENTS
+ YARN-305. Fair scheduler logs too many "Node offered to app" messages.
+ (Lohit Vijayarenu via Sandy Ryza)
+
+ YARN-1258. Allow configuring the Fair Scheduler root queue (Sandy Ryza)
+
+ YARN-1288. Make Fair Scheduler ACLs more user friendly (Sandy Ryza)
+
+ YARN-1315. TestQueueACLs should also test FairScheduler (Sandy Ryza)
+
+ YARN-1335. Move duplicate code from FSSchedulerApp and FiCaSchedulerApp
+ into SchedulerApplication (Sandy Ryza)
+
+ YARN-1333. Support blacklisting in the Fair Scheduler (Tsuyoshi Ozawa via
+ Sandy Ryza)
+
+ YARN-1109. Demote NodeManager "Sending out status for container" logs to
+ debug (haosdent via Sandy Ryza)
+
+ YARN-1321. Changed NMTokenCache to support both singleton and an instance
+ usage. (Alejandro Abdelnur via vinodkv)
+
+ YARN-1388. Fair Scheduler page always displays blank fair share (Liyin Liang
+ via Sandy Ryza)
+
YARN-7. Support CPU resource for DistributedShell. (Junping Du via llu)
YARN-905. Add state filters to nodes CLI (Wei Yan via Sandy Ryza)
@@ -334,13 +389,66 @@ Release 2.4.0 - UNRELEASED
YARN-1573. ZK store should use a private password for root-node-acls.
(kasha).
- YARN-1630. Introduce timeout for async polling operations in YarnClientImpl
- (Aditya Acharya via Sandy Ryza)
-
OPTIMIZATIONS
BUG FIXES
+ YARN-1284. LCE: Race condition leaves dangling cgroups entries for killed
+ containers. (Alejandro Abdelnur via Sandy Ryza)
+
+ YARN-1283. Fixed RM to give a fully-qualified proxy URL for an application
+ so that clients don't need to do scheme-mangling. (Omkar Vinit Joshi via
+ vinodkv)
+
+ YARN-879. Fixed tests w.r.t o.a.h.y.server.resourcemanager.Application.
+ (Junping Du via devaraj)
+
+ YARN-1265. Fair Scheduler chokes on unhealthy node reconnect (Sandy Ryza)
+
+ YARN-1044. used/min/max resources do not display info in the scheduler page
+ (Sangjin Lee via Sandy Ryza)
+
+ YARN-1259. In Fair Scheduler web UI, queue num pending and num active apps
+ switched. (Robert Kanter via Sandy Ryza)
+
+ YARN-1295. In UnixLocalWrapperScriptBuilder, using bash -c can cause Text
+ file busy errors (Sandy Ryza)
+
+ YARN-1185. Fixed FileSystemRMStateStore to not leave partial files that
+ prevent subsequent ResourceManager recovery. (Omkar Vinit Joshi via vinodkv)
+
+ YARN-1331. yarn.cmd exits with NoClassDefFoundError trying to run rmadmin or
+ logs. (cnauroth)
+
+ YARN-1330. Fair Scheduler: defaultQueueSchedulingPolicy does not take effect
+ (Sandy Ryza)
+
+ YARN-1022. Unnecessary INFO logs in AMRMClientAsync (haosdent via bikas)
+
+ YARN-1349. yarn.cmd does not support passthrough to any arbitrary class.
+ (cnauroth)
+
+ YARN-1357. TestContainerLaunch.testContainerEnvVariables fails on Windows.
+ (Chuan Liu via cnauroth)
+
+ YARN-1358. TestYarnCLI fails on Windows due to line endings. (Chuan Liu via
+ cnauroth)
+
+ YARN-1343. NodeManagers additions/restarts are not reported as node updates
+ in AllocateResponse responses to AMs. (tucu)
+
+ YARN-1381. Same relaxLocality appears twice in exception message of
+ AMRMClientImpl#checkLocalityRelaxationConflict() (Ted Yu via Sandy Ryza)
+
+ YARN-1407. RM Web UI and REST APIs should uniformly use
+ YarnApplicationState (Sandy Ryza)
+
+ YARN-1438. Ensure container diagnostics includes exception from container
+ launch. (stevel via acmurthy)
+
+ YARN-1138. yarn.application.classpath is set to point to $HADOOP_CONF_DIR
+ etc., which does not work on Windows. (Chuan Liu via cnauroth)
+
YARN-461. Fair scheduler should not accept apps with empty string queue name.
(ywskycn via tucu)
@@ -466,107 +574,8 @@ Release 2.4.0 - UNRELEASED
YARN-1575. Public localizer crashes with "Localized unkown resource"
(jlowe)
- YARN-1642. RMDTRenewer#getRMClient should use ClientRMProxy (kasha)
-
YARN-1629. IndexOutOfBoundsException in MaxRunningAppsEnforcer (Sandy Ryza)
- YARN-1618. Fix invalid RMApp transition from NEW to FINAL_SAVING (kasha)
-
-Release 2.3.0 - UNRELEASED
-
- INCOMPATIBLE CHANGES
-
- NEW FEATURES
-
- IMPROVEMENTS
-
- YARN-305. Fair scheduler logs too many "Node offered to app" messages.
- (Lohit Vijayarenu via Sandy Ryza)
-
- YARN-1258. Allow configuring the Fair Scheduler root queue (Sandy Ryza)
-
- YARN-1288. Make Fair Scheduler ACLs more user friendly (Sandy Ryza)
-
- YARN-1315. TestQueueACLs should also test FairScheduler (Sandy Ryza)
-
- YARN-1335. Move duplicate code from FSSchedulerApp and FiCaSchedulerApp
- into SchedulerApplication (Sandy Ryza)
-
- YARN-1333. Support blacklisting in the Fair Scheduler (Tsuyoshi Ozawa via
- Sandy Ryza)
-
- YARN-1109. Demote NodeManager "Sending out status for container" logs to
- debug (haosdent via Sandy Ryza)
-
- YARN-1321. Changed NMTokenCache to support both singleton and an instance
- usage. (Alejandro Abdelnur via vinodkv)
-
- YARN-1388. Fair Scheduler page always displays blank fair share (Liyin Liang
- via Sandy Ryza)
-
- OPTIMIZATIONS
-
- BUG FIXES
-
- YARN-1284. LCE: Race condition leaves dangling cgroups entries for killed
- containers. (Alejandro Abdelnur via Sandy Ryza)
-
- YARN-1283. Fixed RM to give a fully-qualified proxy URL for an application
- so that clients don't need to do scheme-mangling. (Omkar Vinit Joshi via
- vinodkv)
-
- YARN-879. Fixed tests w.r.t o.a.h.y.server.resourcemanager.Application.
- (Junping Du via devaraj)
-
- YARN-1265. Fair Scheduler chokes on unhealthy node reconnect (Sandy Ryza)
-
- YARN-1044. used/min/max resources do not display info in the scheduler page
- (Sangjin Lee via Sandy Ryza)
-
- YARN-1259. In Fair Scheduler web UI, queue num pending and num active apps
- switched. (Robert Kanter via Sandy Ryza)
-
- YARN-1295. In UnixLocalWrapperScriptBuilder, using bash -c can cause Text
- file busy errors (Sandy Ryza)
-
- YARN-1185. Fixed FileSystemRMStateStore to not leave partial files that
- prevent subsequent ResourceManager recovery. (Omkar Vinit Joshi via vinodkv)
-
- YARN-1331. yarn.cmd exits with NoClassDefFoundError trying to run rmadmin or
- logs. (cnauroth)
-
- YARN-1330. Fair Scheduler: defaultQueueSchedulingPolicy does not take effect
- (Sandy Ryza)
-
- YARN-1022. Unnecessary INFO logs in AMRMClientAsync (haosdent via bikas)
-
- YARN-1349. yarn.cmd does not support passthrough to any arbitrary class.
- (cnauroth)
-
- YARN-1357. TestContainerLaunch.testContainerEnvVariables fails on Windows.
- (Chuan Liu via cnauroth)
-
- YARN-1358. TestYarnCLI fails on Windows due to line endings. (Chuan Liu via
- cnauroth)
-
- YARN-1343. NodeManagers additions/restarts are not reported as node updates
- in AllocateResponse responses to AMs. (tucu)
-
- YARN-1381. Same relaxLocality appears twice in exception message of
- AMRMClientImpl#checkLocalityRelaxationConflict() (Ted Yu via Sandy Ryza)
-
- YARN-1407. RM Web UI and REST APIs should uniformly use
- YarnApplicationState (Sandy Ryza)
-
- YARN-1438. Ensure container diagnostics includes exception from container
- launch. (stevel via acmurthy)
-
- YARN-1138. yarn.application.classpath is set to point to $HADOOP_CONF_DIR
- etc., which does not work on Windows. (Chuan Liu via cnauroth)
-
- YARN-1600. RM does not startup when security is enabled without spnego
- configured (Haohui Mai via jlowe)
-
Release 2.2.0 - 2013-10-13
INCOMPATIBLE CHANGES
Propchange: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Jan 31 23:05:23 2014
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/AppSchedulingInfo.java Fri Jan 31 23:05:23 2014
@@ -64,7 +64,7 @@ public class AppSchedulingInfo {
private Set<String> blacklist = new HashSet<String>();
//private final ApplicationStore store;
- private final ActiveUsersManager activeUsersManager;
+ private ActiveUsersManager activeUsersManager;
/* Allocated by scheduler */
boolean pending = true; // for app metrics
@@ -171,11 +171,10 @@ public class AppSchedulingInfo {
.getNumContainers() : 0;
Resource lastRequestCapability = lastRequest != null ? lastRequest
.getCapability() : Resources.none();
- metrics.incrPendingResources(user, request.getNumContainers()
- - lastRequestContainers, Resources.subtractFrom( // save a clone
- Resources.multiply(request.getCapability(), request
- .getNumContainers()), Resources.multiply(lastRequestCapability,
- lastRequestContainers)));
+ metrics.incrPendingResources(user, request.getNumContainers(),
+ request.getCapability());
+ metrics.decrPendingResources(user, lastRequestContainers,
+ lastRequestCapability);
}
}
}
@@ -262,9 +261,15 @@ public class AppSchedulingInfo {
pending = false;
metrics.runAppAttempt(applicationId, user);
}
- LOG.debug("allocate: user: " + user + ", memory: "
- + request.getCapability());
- metrics.allocateResources(user, 1, request.getCapability());
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("allocate: applicationId=" + applicationId
+ + " container=" + container.getId()
+ + " host=" + container.getNodeId().toString()
+ + " user=" + user
+ + " resource=" + request.getCapability());
+ }
+ metrics.allocateResources(user, 1, request.getCapability(), true);
}
/**
@@ -277,9 +282,6 @@ public class AppSchedulingInfo {
synchronized private void allocateNodeLocal(
SchedulerNode node, Priority priority,
ResourceRequest nodeLocalRequest, Container container) {
- // Update consumption and track allocations
- allocate(container);
-
// Update future requirements
nodeLocalRequest.setNumContainers(nodeLocalRequest.getNumContainers() - 1);
if (nodeLocalRequest.getNumContainers() == 0) {
@@ -306,10 +308,6 @@ public class AppSchedulingInfo {
synchronized private void allocateRackLocal(
SchedulerNode node, Priority priority,
ResourceRequest rackLocalRequest, Container container) {
-
- // Update consumption and track allocations
- allocate(container);
-
// Update future requirements
rackLocalRequest.setNumContainers(rackLocalRequest.getNumContainers() - 1);
if (rackLocalRequest.getNumContainers() == 0) {
@@ -329,10 +327,6 @@ public class AppSchedulingInfo {
synchronized private void allocateOffSwitch(
SchedulerNode node, Priority priority,
ResourceRequest offSwitchRequest, Container container) {
-
- // Update consumption and track allocations
- allocate(container);
-
// Update future requirements
decrementOutstanding(offSwitchRequest);
}
@@ -365,18 +359,24 @@ public class AppSchedulingInfo {
}
}
- synchronized private void allocate(Container container) {
- // Update consumption and track allocations
- //TODO: fixme sharad
- /* try {
- store.storeContainer(container);
- } catch (IOException ie) {
- // TODO fix this. we shouldnt ignore
- }*/
-
- LOG.debug("allocate: applicationId=" + applicationId + " container="
- + container.getId() + " host="
- + container.getNodeId().toString());
+ synchronized public void move(Queue newQueue) {
+ QueueMetrics oldMetrics = queue.getMetrics();
+ QueueMetrics newMetrics = newQueue.getMetrics();
+ for (Map<String, ResourceRequest> asks : requests.values()) {
+ ResourceRequest request = asks.get(ResourceRequest.ANY);
+ if (request != null) {
+ oldMetrics.decrPendingResources(user, request.getNumContainers(),
+ request.getCapability());
+ newMetrics.incrPendingResources(user, request.getNumContainers(),
+ request.getCapability());
+ }
+ }
+ oldMetrics.moveAppFrom(this);
+ newMetrics.moveAppTo(this);
+ activeUsersManager.deactivateApplication(user, applicationId);
+ activeUsersManager = newQueue.getActiveUsersManager();
+ activeUsersManager.activateApplication(user, applicationId);
+ this.queue = newQueue;
}
synchronized public void stop(RMAppAttemptState rmAppAttemptFinalState) {
@@ -386,8 +386,7 @@ public class AppSchedulingInfo {
ResourceRequest request = asks.get(ResourceRequest.ANY);
if (request != null) {
metrics.decrPendingResources(user, request.getNumContainers(),
- Resources.multiply(request.getCapability(), request
- .getNumContainers()));
+ request.getCapability());
}
}
metrics.finishAppAttempt(applicationId, pending, user);
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Queue.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Queue.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Queue.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Queue.java Fri Jan 31 23:05:23 2014
@@ -58,4 +58,6 @@ public interface Queue {
List<QueueUserACLInfo> getQueueUserAclInfo(UserGroupInformation user);
boolean hasAccess(QueueACL acl, UserGroupInformation user);
+
+ public ActiveUsersManager getActiveUsersManager();
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/QueueMetrics.java Fri Jan 31 23:05:23 2014
@@ -280,6 +280,36 @@ public class QueueMetrics implements Met
parent.finishApp(user, rmAppFinalState);
}
}
+
+ public void moveAppFrom(AppSchedulingInfo app) {
+ if (app.isPending()) {
+ appsPending.decr();
+ } else {
+ appsRunning.decr();
+ }
+ QueueMetrics userMetrics = getUserMetrics(app.getUser());
+ if (userMetrics != null) {
+ userMetrics.moveAppFrom(app);
+ }
+ if (parent != null) {
+ parent.moveAppFrom(app);
+ }
+ }
+
+ public void moveAppTo(AppSchedulingInfo app) {
+ if (app.isPending()) {
+ appsPending.incr();
+ } else {
+ appsRunning.incr();
+ }
+ QueueMetrics userMetrics = getUserMetrics(app.getUser());
+ if (userMetrics != null) {
+ userMetrics.moveAppTo(app);
+ }
+ if (parent != null) {
+ parent.moveAppTo(app);
+ }
+ }
/**
* Set available resources. To be called by scheduler periodically as
@@ -324,8 +354,8 @@ public class QueueMetrics implements Met
private void _incrPendingResources(int containers, Resource res) {
pendingContainers.incr(containers);
- pendingMB.incr(res.getMemory());
- pendingVCores.incr(res.getVirtualCores());
+ pendingMB.incr(res.getMemory() * containers);
+ pendingVCores.incr(res.getVirtualCores() * containers);
}
public void decrPendingResources(String user, int containers, Resource res) {
@@ -341,22 +371,25 @@ public class QueueMetrics implements Met
private void _decrPendingResources(int containers, Resource res) {
pendingContainers.decr(containers);
- pendingMB.decr(res.getMemory());
- pendingVCores.decr(res.getVirtualCores());
+ pendingMB.decr(res.getMemory() * containers);
+ pendingVCores.decr(res.getVirtualCores() * containers);
}
- public void allocateResources(String user, int containers, Resource res) {
+ public void allocateResources(String user, int containers, Resource res,
+ boolean decrPending) {
allocatedContainers.incr(containers);
aggregateContainersAllocated.incr(containers);
allocatedMB.incr(res.getMemory() * containers);
allocatedVCores.incr(res.getVirtualCores() * containers);
- _decrPendingResources(containers, Resources.multiply(res, containers));
+ if (decrPending) {
+ _decrPendingResources(containers, res);
+ }
QueueMetrics userMetrics = getUserMetrics(user);
if (userMetrics != null) {
- userMetrics.allocateResources(user, containers, res);
+ userMetrics.allocateResources(user, containers, res, decrPending);
}
if (parent != null) {
- parent.allocateResources(user, containers, res);
+ parent.allocateResources(user, containers, res, decrPending);
}
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/SchedulerApplicationAttempt.java Fri Jan 31 23:05:23 2014
@@ -57,7 +57,7 @@ import com.google.common.collect.Multise
*/
@Private
@Unstable
-public abstract class SchedulerApplicationAttempt {
+public class SchedulerApplicationAttempt {
private static final Log LOG = LogFactory
.getLog(SchedulerApplicationAttempt.class);
@@ -91,7 +91,7 @@ public abstract class SchedulerApplicati
protected Map<Priority, Long> lastScheduledContainer =
new HashMap<Priority, Long>();
- protected final Queue queue;
+ protected Queue queue;
protected boolean isStopped = false;
protected final RMContext rmContext;
@@ -431,4 +431,25 @@ public abstract class SchedulerApplicati
this.appSchedulingInfo
.transferStateFromPreviousAppSchedulingInfo(appAttempt.appSchedulingInfo);
}
+
+ public void move(Queue newQueue) {
+ QueueMetrics oldMetrics = queue.getMetrics();
+ QueueMetrics newMetrics = newQueue.getMetrics();
+ String user = getUser();
+ for (RMContainer liveContainer : liveContainers.values()) {
+ Resource resource = liveContainer.getContainer().getResource();
+ oldMetrics.releaseResources(user, 1, resource);
+ newMetrics.allocateResources(user, 1, resource, false);
+ }
+ for (Map<NodeId, RMContainer> map : reservedContainers.values()) {
+ for (RMContainer reservedContainer : map.values()) {
+ Resource resource = reservedContainer.getReservedResource();
+ oldMetrics.unreserveResource(user, resource);
+ newMetrics.reserveResource(user, resource);
+ }
+ }
+
+ appSchedulingInfo.move(newQueue);
+ this.queue = newQueue;
+ }
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSLeafQueue.java Fri Jan 31 23:05:23 2014
@@ -33,6 +33,7 @@ import org.apache.hadoop.yarn.api.record
import org.apache.hadoop.yarn.api.records.QueueACL;
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ActiveUsersManager;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppUtils;
import org.apache.hadoop.yarn.util.resource.Resources;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplication;
@@ -54,11 +55,14 @@ public class FSLeafQueue extends FSQueue
private long lastTimeAtMinShare;
private long lastTimeAtHalfFairShare;
+ private final ActiveUsersManager activeUsersManager;
+
public FSLeafQueue(String name, FairScheduler scheduler,
FSParentQueue parent) {
super(name, scheduler, parent);
this.lastTimeAtMinShare = scheduler.getClock().getTime();
this.lastTimeAtHalfFairShare = scheduler.getClock().getTime();
+ activeUsersManager = new ActiveUsersManager(getMetrics());
}
public void addApp(FSSchedulerApp app, boolean runnable) {
@@ -245,4 +249,9 @@ public class FSLeafQueue extends FSQueue
public int getNumRunnableApps() {
return runnableAppScheds.size();
}
+
+ @Override
+ public ActiveUsersManager getActiveUsersManager() {
+ return activeUsersManager;
+ }
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FSParentQueue.java Fri Jan 31 23:05:23 2014
@@ -33,7 +33,7 @@ import org.apache.hadoop.yarn.api.record
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.util.resource.Resources;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt;
+import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ActiveUsersManager;
@Private
@Unstable
@@ -194,4 +194,10 @@ public class FSParentQueue extends FSQue
childQueue.collectSchedulerApplications(apps);
}
}
+
+ @Override
+ public ActiveUsersManager getActiveUsersManager() {
+ // Should never be called since all applications are submitted to LeafQueues
+ return null;
+ }
}
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java Fri Jan 31 23:05:23 2014
@@ -184,6 +184,11 @@ public class FifoScheduler extends Abstr
public boolean hasAccess(QueueACL acl, UserGroupInformation user) {
return getQueueAcls().get(acl).isUserAllowed(user);
}
+
+ @Override
+ public ActiveUsersManager getActiveUsersManager() {
+ return activeUsersManager;
+ }
};
@Override
Modified: hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java?rev=1563327&r1=1563326&r2=1563327&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java (original)
+++ hadoop/common/branches/HDFS-4685/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/TestQueueMetrics.java Fri Jan 31 23:05:23 2014
@@ -73,7 +73,7 @@ public class TestQueueMetrics {
checkApps(queueSource, 1, 1, 0, 0, 0, 0, true);
metrics.setAvailableResourcesToQueue(Resources.createResource(100*GB, 100));
- metrics.incrPendingResources(user, 5, Resources.createResource(15*GB, 15));
+ metrics.incrPendingResources(user, 5, Resources.createResource(3*GB, 3));
// Available resources is set externally, as it depends on dynamic
// configurable cluster/queue resources
checkResources(queueSource, 0, 0, 0, 0, 0, 100*GB, 100, 15*GB, 15, 5, 0, 0, 0);
@@ -81,7 +81,7 @@ public class TestQueueMetrics {
metrics.runAppAttempt(app.getApplicationId(), user);
checkApps(queueSource, 1, 0, 1, 0, 0, 0, true);
- metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2));
+ metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2), true);
checkResources(queueSource, 6*GB, 6, 3, 3, 0, 100*GB, 100, 9*GB, 9, 2, 0, 0, 0);
metrics.releaseResources(user, 1, Resources.createResource(2*GB, 2));
@@ -171,7 +171,7 @@ public class TestQueueMetrics {
metrics.setAvailableResourcesToQueue(Resources.createResource(100*GB, 100));
metrics.setAvailableResourcesToUser(user, Resources.createResource(10*GB, 10));
- metrics.incrPendingResources(user, 5, Resources.createResource(15*GB, 15));
+ metrics.incrPendingResources(user, 5, Resources.createResource(3*GB, 3));
// Available resources is set externally, as it depends on dynamic
// configurable cluster/queue resources
checkResources(queueSource, 0, 0, 0, 0, 0, 100*GB, 100, 15*GB, 15, 5, 0, 0, 0);
@@ -181,7 +181,7 @@ public class TestQueueMetrics {
checkApps(queueSource, 1, 0, 1, 0, 0, 0, true);
checkApps(userSource, 1, 0, 1, 0, 0, 0, true);
- metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2));
+ metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2), true);
checkResources(queueSource, 6*GB, 6, 3, 3, 0, 100*GB, 100, 9*GB, 9, 2, 0, 0, 0);
checkResources(userSource, 6*GB, 6, 3, 3, 0, 10*GB, 10, 9*GB, 9, 2, 0, 0, 0);
@@ -232,7 +232,7 @@ public class TestQueueMetrics {
metrics.setAvailableResourcesToQueue(Resources.createResource(100*GB, 100));
parentMetrics.setAvailableResourcesToUser(user, Resources.createResource(10*GB, 10));
metrics.setAvailableResourcesToUser(user, Resources.createResource(10*GB, 10));
- metrics.incrPendingResources(user, 5, Resources.createResource(15*GB, 15));
+ metrics.incrPendingResources(user, 5, Resources.createResource(3*GB, 3));
checkResources(queueSource, 0, 0, 0, 0, 0, 100*GB, 100, 15*GB, 15, 5, 0, 0, 0);
checkResources(parentQueueSource, 0, 0, 0, 0, 0, 100*GB, 100, 15*GB, 15, 5, 0, 0, 0);
checkResources(userSource, 0, 0, 0, 0, 0, 10*GB, 10, 15*GB, 15, 5, 0, 0, 0);
@@ -242,7 +242,7 @@ public class TestQueueMetrics {
checkApps(queueSource, 1, 0, 1, 0, 0, 0, true);
checkApps(userSource, 1, 0, 1, 0, 0, 0, true);
- metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2));
+ metrics.allocateResources(user, 3, Resources.createResource(2*GB, 2), true);
metrics.reserveResource(user, Resources.createResource(3*GB, 3));
// Available resources is set externally, as it depends on dynamic
// configurable cluster/queue resources