You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by vi...@apache.org on 2011/04/20 07:38:59 UTC
svn commit: r1095271 [1/2] - in /hadoop/mapreduce/branches/MR-279:
mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/
mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/
...
Author: vinodkv
Date: Wed Apr 20 05:38:57 2011
New Revision: 1095271
URL: http://svn.apache.org/viewvc?rev=1095271&view=rev
Log:
Introducing web-UI for NodeManager and linking it from RM UI. Contributed by Vinod Kumar Vavilapalli.
Added:
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ResourceView.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerPage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMController.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMView.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebParams.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NodePage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/webapp/TestNMWebServer.java
Removed:
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/WebServer.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ApplicationID.java
Modified:
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRMContainerAllocator.java
hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeManagerInfo.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeManagerInfoPBImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto
hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/BuilderUtils.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/RegisterNodeManagerRequest.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/RegisterNodeManagerRequestPBImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/proto/yarn_server_common_service_protos.proto
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/CMgrCompletedAppsEvent.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NMConfig.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdater.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/Application.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/ApplicationImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/LocalRMInterface.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeStatusUpdater.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ClientRMService.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/ApplicationsManagerImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/Container.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/NodeInfo.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/RMResourceTrackerImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/Application.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/NodeManagerImpl.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/LeafQueue.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/NodesPage.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/Application.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/MockNodes.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/NodeManager.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/applicationsmanager/TestApplicationCleanup.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestNMExpiry.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestRMNMRPCResponseId.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/v2/app/job/impl/TaskAttemptImpl.java Wed Apr 20 05:38:57 2011
@@ -121,7 +121,7 @@ public abstract class TaskAttemptImpl im
EventHandler<TaskAttemptEvent> {
private static final Log LOG = LogFactory.getLog(TaskAttemptImpl.class);
- private final RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
+ private final static RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
protected final Configuration conf;
protected final Path jobFile;
@@ -610,7 +610,7 @@ public abstract class TaskAttemptImpl im
}
container.setLocalResource(
name.toUri().getPath(),
- BuilderUtils.newLocalResource(
+ BuilderUtils.newLocalResource(recordFactory,
uris[i], type,
visibilities[i]
? LocalResourceVisibility.PUBLIC
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRMContainerAllocator.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRMContainerAllocator.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRMContainerAllocator.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/TestRMContainerAllocator.java Wed Apr 20 05:38:57 2011
@@ -209,8 +209,8 @@ public class TestRMContainerAllocator {
nodeId.setId(0);
Resource resource = recordFactory.newRecordInstance(Resource.class);
resource.setMemory(memory);
- NodeManager nodeManager = new NodeManagerImpl(nodeId, nodeName,
- RMResourceTrackerImpl.resolve(nodeName), resource
+ NodeManager nodeManager = new NodeManagerImpl(nodeId, nodeName,
+ "localhost:0", RMResourceTrackerImpl.resolve(nodeName), resource
);
scheduler.addNode(nodeManager); // Node registration
return nodeManager;
Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/TypeConverter.java Wed Apr 20 05:38:57 2011
@@ -362,7 +362,7 @@ public class TypeConverter {
}
public static TaskTrackerInfo fromYarn(NodeManagerInfo node) {
- TaskTrackerInfo taskTracker = new TaskTrackerInfo(node.getNodeName());
+ TaskTrackerInfo taskTracker = new TaskTrackerInfo(node.getNodeAddress());
return taskTracker;
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeManagerInfo.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeManagerInfo.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeManagerInfo.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeManagerInfo.java Wed Apr 20 05:38:57 2011
@@ -1,8 +1,10 @@
package org.apache.hadoop.yarn.api.records;
public interface NodeManagerInfo {
- String getNodeName();
- void setNodeName(String nodeName);
+ String getNodeAddress();
+ void setNodeAddress(String nodeAddress);
+ String getHttpAddress();
+ void setHttpAddress(String httpAddress);
String getRackName();
void setRackName(String rackName);
Resource getUsed();
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeManagerInfoPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeManagerInfoPBImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeManagerInfoPBImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeManagerInfoPBImpl.java Wed Apr 20 05:38:57 2011
@@ -41,9 +41,15 @@ public class NodeManagerInfoPBImpl exten
}
@Override
- public String getNodeName() {
+ public String getNodeAddress() {
NodeManagerInfoProtoOrBuilder p = viaProto ? proto : builder;
- return (p.hasNodeName()) ? p.getNodeName() : null;
+ return (p.hasNodeAddress()) ? p.getNodeAddress() : null;
+ }
+
+ @Override
+ public String getHttpAddress() {
+ NodeManagerInfoProtoOrBuilder p = viaProto ? proto : builder;
+ return (p.hasHttpAddress()) ? p.getHttpAddress() : null;
}
@Override
@@ -81,13 +87,23 @@ public class NodeManagerInfoPBImpl exten
}
@Override
- public void setNodeName(String nodeName) {
+ public void setNodeAddress(String nodeAddress) {
+ maybeInitBuilder();
+ if (nodeAddress == null) {
+ builder.clearNodeAddress();
+ return;
+ }
+ builder.setNodeAddress(nodeAddress);
+ }
+
+ @Override
+ public void setHttpAddress(String httpAddress) {
maybeInitBuilder();
- if (nodeName == null) {
- builder.clearNodeName();
+ if (httpAddress == null) {
+ builder.clearHttpAddress();
return;
}
- builder.setNodeName(nodeName);
+ builder.setHttpAddress(httpAddress);
}
@Override
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/proto/yarn_protos.proto Wed Apr 20 05:38:57 2011
@@ -115,11 +115,12 @@ message ApplicationProto {
}
message NodeManagerInfoProto {
- optional string nodeName = 1;
- optional string rackName = 2;
- optional ResourceProto used = 3;
- optional ResourceProto capability = 4;
- optional int32 numContainers = 5;
+ optional string nodeAddress = 1;
+ optional string httpAddress = 2;
+ optional string rackName = 3;
+ optional ResourceProto used = 4;
+ optional ResourceProto capability = 5;
+ optional int32 numContainers = 6;
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/BuilderUtils.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/BuilderUtils.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/BuilderUtils.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/BuilderUtils.java Wed Apr 20 05:38:57 2011
@@ -19,11 +19,14 @@
package org.apache.hadoop.yarn.util;
import java.net.URI;
+import java.util.Comparator;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
-import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+import org.apache.hadoop.yarn.factories.RecordFactory;
/**
* Builder utilities to construct various objects.
@@ -31,10 +34,20 @@ import org.apache.hadoop.yarn.factory.pr
*/
public class BuilderUtils {
- public static LocalResource newLocalResource(URI uri,
- LocalResourceType type, LocalResourceVisibility visibility,
+ public static class ApplicationIdComparator implements
+ Comparator<ApplicationId> {
+
+ @Override
+ public int compare(ApplicationId a1, ApplicationId a2) {
+ return a1.compareTo(a2);
+ }
+
+ }
+
+ public static LocalResource newLocalResource(RecordFactory recordFactory,
+ URI uri, LocalResourceType type, LocalResourceVisibility visibility,
long size, long timestamp) {
- LocalResource resource = RecordFactoryProvider.getRecordFactory(null).newRecordInstance(LocalResource.class);
+ LocalResource resource = recordFactory.newRecordInstance(LocalResource.class);
resource.setResource(ConverterUtils.getYarnUrlFromURI(uri));
resource.setType(type);
resource.setVisibility(visibility);
@@ -43,4 +56,30 @@ public class BuilderUtils {
return resource;
}
+ public static ApplicationId newApplicationId(RecordFactory recordFactory,
+ long clustertimestamp, CharSequence id) {
+ ApplicationId applicationId =
+ recordFactory.newRecordInstance(ApplicationId.class);
+ applicationId.setId(Integer.valueOf(id.toString()));
+ applicationId.setClusterTimestamp(clustertimestamp);
+ return applicationId;
+ }
+
+ public static ApplicationId newApplicationId(RecordFactory recordFactory,
+ long clusterTimeStamp, int id) {
+ ApplicationId applicationId =
+ recordFactory.newRecordInstance(ApplicationId.class);
+ applicationId.setId(id);
+ applicationId.setClusterTimestamp(clusterTimeStamp);
+ return applicationId;
+ }
+
+ public static ContainerId newContainerId(RecordFactory recordFactory,
+ ApplicationId applicationId, int containerId) {
+ ContainerId id = recordFactory.newRecordInstance(ContainerId.class);
+ id.setAppId(applicationId);
+ id.setId(containerId);
+ return id;
+ }
+
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java Wed Apr 20 05:38:57 2011
@@ -18,10 +18,13 @@
package org.apache.hadoop.yarn.util;
+import static org.apache.hadoop.yarn.util.StringHelper._split;
+
import java.net.URI;
import java.net.URISyntaxException;
import java.text.NumberFormat;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
@@ -29,8 +32,10 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.URL;
+import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+
/**
* This class contains a set of utilities which help converting data structures
* from/to 'serializableFormat' to/from hadoop/nativejava data structures.
@@ -38,6 +43,8 @@ import org.apache.hadoop.yarn.factory.pr
*/
public class ConverterUtils {
+ public static final String APPLICATION_PREFIX = "application";
+
/**
* return a hadoop path from a given url
*
@@ -111,11 +118,28 @@ public class ConverterUtils {
public static String toString(ApplicationId appId) {
StringBuilder sb = new StringBuilder();
- sb.append("application_").append(appId.getClusterTimestamp()).append("_");
+ sb.append(APPLICATION_PREFIX + "_").append(appId.getClusterTimestamp())
+ .append("_");
sb.append(appIdFormat.get().format(appId.getId()));
return sb.toString();
}
+ public static ApplicationId toApplicationId(RecordFactory recordFactory,
+ String appIdStr) {
+ Iterator<String> it = _split(appIdStr).iterator();
+ it.next(); // prefix. TODO: Validate application prefix
+ return toApplicationId(recordFactory, it);
+ }
+
+ private static ApplicationId toApplicationId(RecordFactory recordFactory,
+ Iterator<String> it) {
+ ApplicationId appId =
+ recordFactory.newRecordInstance(ApplicationId.class);
+ appId.setClusterTimestamp(Long.parseLong(it.next()));
+ appId.setId(Integer.parseInt(it.next()));
+ return appId;
+ }
+
public static String toString(ContainerId cId) {
StringBuilder sb = new StringBuilder();
ApplicationId appId = cId.getAppId();
@@ -124,4 +148,16 @@ public class ConverterUtils {
sb.append(containerIdFormat.get().format(cId.getId()));
return sb.toString();
}
+
+ public static ContainerId toContainerId(RecordFactory recordFactory,
+ String containerIdStr) {
+ Iterator<String> it = _split(containerIdStr).iterator();
+ it.next(); // prefix. TODO: Validate container prefix
+ ApplicationId appID = toApplicationId(recordFactory, it);
+ ContainerId containerId =
+ recordFactory.newRecordInstance(ContainerId.class);
+ containerId.setAppId(appID);
+ containerId.setId(Integer.parseInt(it.next()));
+ return containerId;
+ }
}
\ No newline at end of file
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/RegisterNodeManagerRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/RegisterNodeManagerRequest.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/RegisterNodeManagerRequest.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/RegisterNodeManagerRequest.java Wed Apr 20 05:38:57 2011
@@ -1,11 +1,33 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
package org.apache.hadoop.yarn.server.api.protocolrecords;
import org.apache.hadoop.yarn.api.records.Resource;
public interface RegisterNodeManagerRequest {
- public abstract String getNode();
- public abstract Resource getResource();
+ String getHost();
+ int getContainerManagerPort();
+ int getHttpPort();
+ Resource getResource();
- public abstract void setNode(String node);
- public abstract void setResource(Resource resource);
+ void setHost(String host);
+ void setContainerManagerPort(int port);
+ void setHttpPort(int port);
+ void setResource(Resource resource);
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/RegisterNodeManagerRequestPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/RegisterNodeManagerRequestPBImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/RegisterNodeManagerRequestPBImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/RegisterNodeManagerRequestPBImpl.java Wed Apr 20 05:38:57 2011
@@ -77,21 +77,52 @@ public class RegisterNodeManagerRequestP
builder.clearResource();
this.resource = resource;
}
+
+ @Override
+ public int getContainerManagerPort() {
+ RegisterNodeManagerRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (!p.hasContainerManagerPort()) {
+ return 0;
+ }
+ return (p.getContainerManagerPort());
+ }
+
+ @Override
+ public void setContainerManagerPort(int port) {
+ maybeInitBuilder();
+ builder.setContainerManagerPort(port);
+ }
+
+ @Override
+ public int getHttpPort() {
+ RegisterNodeManagerRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (!p.hasHttpPort()) {
+ return 0;
+ }
+ return (p.getHttpPort());
+ }
+
+ @Override
+ public void setHttpPort(int httpPort) {
+ maybeInitBuilder();
+ builder.setHttpPort(httpPort);
+ }
+
@Override
- public String getNode() {
+ public String getHost() {
RegisterNodeManagerRequestProtoOrBuilder p = viaProto ? proto : builder;
- if (!p.hasNode()) {
+ if (!p.hasHost()) {
return null;
}
- return (p.getNode());
+ return (p.getHost());
}
@Override
- public void setNode(String node) {
+ public void setHost(String host) {
maybeInitBuilder();
- if (node == null)
- builder.clearNode();
- builder.setNode((node));
+ if (host == null)
+ builder.clearHost();
+ builder.setHost((host));
}
private ResourcePBImpl convertFromProtoFormat(ResourceProto p) {
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/proto/yarn_server_common_service_protos.proto
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/proto/yarn_server_common_service_protos.proto?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/proto/yarn_server_common_service_protos.proto (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-common/src/main/proto/yarn_server_common_service_protos.proto Wed Apr 20 05:38:57 2011
@@ -7,8 +7,10 @@ import "yarn_protos.proto";
import "yarn_server_common_protos.proto";
message RegisterNodeManagerRequestProto {
- optional string node = 1;
- optional ResourceProto resource = 2;
+ optional string host = 1;
+ optional int32 container_manager_port = 2;
+ optional int32 http_port = 3;
+ optional ResourceProto resource = 4;
}
message RegisterNodeManagerResponseProto {
optional RegistrationResponseProto registration_response = 1;
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/CMgrCompletedAppsEvent.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/CMgrCompletedAppsEvent.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/CMgrCompletedAppsEvent.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/CMgrCompletedAppsEvent.java Wed Apr 20 05:38:57 2011
@@ -26,7 +26,7 @@ import org.apache.hadoop.yarn.server.nod
public class CMgrCompletedAppsEvent extends ContainerManagerEvent {
- private List<ApplicationId> appsToCleanup;
+ private final List<ApplicationId> appsToCleanup;
public CMgrCompletedAppsEvent(List<ApplicationId> appsToCleanup) {
super(ContainerManagerEventType.FINISH_APPS);
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NMConfig.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NMConfig.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NMConfig.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NMConfig.java Wed Apr 20 05:38:57 2011
@@ -32,6 +32,11 @@ public class NMConfig {
/** host:port address to which to bind to **/
public static final String NM_BIND_ADDRESS = NM_PREFIX + "address";
+ public static final String DEFAULT_NM_HTTP_BIND_ADDRESS = "localhost:9999";
+
+ /** host:port address to which webserver has to bind to **/
+ public static final String NM_HTTP_BIND_ADDRESS = NM_PREFIX + "http-address";
+
public static final String DEFAULT_NM_LOCALIZER_BIND_ADDRESS = "0.0.0.0:4344";
public static final String NM_LOCALIZER_BIND_ADDRESS =
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java Wed Apr 20 05:38:57 2011
@@ -37,13 +37,14 @@ import org.apache.hadoop.yarn.api.record
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher;
import org.apache.hadoop.yarn.event.Dispatcher;
-import org.apache.hadoop.yarn.factories.RecordFactory;
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
import org.apache.hadoop.yarn.server.YarnServerConfig;
import org.apache.hadoop.yarn.server.api.records.NodeHealthStatus;
import org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl;
import org.apache.hadoop.yarn.server.nodemanager.containermanager.application.Application;
import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitor;
+import org.apache.hadoop.yarn.server.nodemanager.webapp.WebServer;
import org.apache.hadoop.yarn.service.CompositeService;
import org.apache.hadoop.yarn.service.Service;
@@ -62,7 +63,7 @@ public class NodeManager extends Composi
addService(del);
// NodeManager level dispatcher
- Dispatcher dispatcher = new AsyncDispatcher();
+ AsyncDispatcher dispatcher = new AsyncDispatcher();
NodeHealthCheckerService healthChecker = null;
if (NodeHealthCheckerService.shouldRun(conf)) {
@@ -84,10 +85,12 @@ public class NodeManager extends Composi
createContainerManager(context, exec, del, nodeStatusUpdater);
addService(containerManager);
- Service webServer = createWebServer();
+ Service webServer =
+ createWebServer(context, containerManager.getContainersMonitor());
addService(webServer);
dispatcher.register(ContainerManagerEventType.class, containerManager);
+ addService(dispatcher);
}
protected NodeStatusUpdater createNodeStatusUpdater(Context context,
@@ -105,8 +108,9 @@ public class NodeManager extends Composi
return new ContainerManagerImpl(context, exec, del, nodeStatusUpdater);
}
- protected WebServer createWebServer() {
- return new WebServer();
+ protected WebServer createWebServer(Context nmContext,
+ ResourceView resourceView) {
+ return new WebServer(nmContext, resourceView);
}
protected void doSecureLogin() throws IOException {
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdater.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdater.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdater.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdater.java Wed Apr 20 05:38:57 2011
@@ -24,7 +24,7 @@ public interface NodeStatusUpdater exten
byte[] getRMNMSharedSecret();
- String getNodeName();
+ String getContainerManagerBindAddress();
void sendOutofBandHeartBeat();
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeStatusUpdaterImpl.java Wed Apr 20 05:38:57 2011
@@ -18,6 +18,7 @@
package org.apache.hadoop.yarn.server.nodemanager;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Iterator;
@@ -63,14 +64,17 @@ public class NodeStatusUpdaterImpl exten
private final Object heartbeatMonitor = new Object();
- private Context context;
- private Dispatcher dispatcher;
+ private final Context context;
+ private final Dispatcher dispatcher;
private long heartBeatInterval;
private ResourceTracker resourceTracker;
private String rmAddress;
private Resource totalResource;
- private String nodeName;
+ private String containerManagerBindAddress;
+ private String hostName;
+ private int containerManagerPort;
+ private int httpPort;
private NodeId nodeId;
private byte[] secretKeyBytes = new byte[0];
private boolean isStopped;
@@ -102,15 +106,24 @@ public class NodeStatusUpdaterImpl exten
@Override
public void start() {
- String bindAddress =
+ String cmBindAddressStr =
getConfig().get(NMConfig.NM_BIND_ADDRESS,
NMConfig.DEFAULT_NM_BIND_ADDRESS);
- InetSocketAddress addr = NetUtils.createSocketAddr(bindAddress);
+ InetSocketAddress cmBindAddress =
+ NetUtils.createSocketAddr(cmBindAddressStr);
+ String httpBindAddressStr =
+ getConfig().get(NMConfig.NM_HTTP_BIND_ADDRESS,
+ NMConfig.DEFAULT_NM_HTTP_BIND_ADDRESS);
+ InetSocketAddress httpBindAddress =
+ NetUtils.createSocketAddr(httpBindAddressStr);
try {
- this.nodeName =
- addr.getAddress().getLocalHost().getHostAddress() + ":"
- + addr.getPort();
- LOG.info("Configured ContainerManager Address is " + this.nodeName);
+ this.hostName = InetAddress.getLocalHost().getHostAddress();
+ this.containerManagerPort = cmBindAddress.getPort();
+ this.httpPort = httpBindAddress.getPort();
+ this.containerManagerBindAddress =
+ this.hostName + ":" + this.containerManagerPort;
+ LOG.info("Configured ContainerManager Address is "
+ + this.containerManagerBindAddress);
// Registration has to be in start so that ContainerManager can get the
// perNM tokens needed to authenticate ContainerTokens.
registerWithRM();
@@ -143,7 +156,9 @@ public class NodeStatusUpdaterImpl exten
LOG.info("Connected to ResourceManager at " + this.rmAddress);
RegisterNodeManagerRequest request = recordFactory.newRecordInstance(RegisterNodeManagerRequest.class);
- request.setNode(this.nodeName);
+ request.setHost(this.hostName);
+ request.setContainerManagerPort(this.containerManagerPort);
+ request.setHttpPort(this.httpPort);
request.setResource(this.totalResource);
RegistrationResponse regResponse =
this.resourceTracker.registerNodeManager(request).getRegistrationResponse();
@@ -152,13 +167,13 @@ public class NodeStatusUpdaterImpl exten
this.secretKeyBytes = regResponse.getSecretKey().array();
}
- LOG.info("Registered with ResourceManager as " + this.nodeName
+ LOG.info("Registered with ResourceManager as " + this.containerManagerBindAddress
+ " with total resource of " + this.totalResource);
}
@Override
- public String getNodeName() {
- return this.nodeName;
+ public String getContainerManagerBindAddress() {
+ return this.containerManagerBindAddress;
}
@Override
@@ -192,7 +207,7 @@ public class NodeStatusUpdaterImpl exten
// Clone the container to send it to the RM
org.apache.hadoop.yarn.api.records.Container c = container.cloneAndGetContainer();
- c.setHostName(this.nodeName);
+ c.setHostName(this.containerManagerBindAddress);
applicationContainers.add(c);
++numActiveContainers;
LOG.info("Sending out status for container: " + c);
@@ -206,7 +221,7 @@ public class NodeStatusUpdaterImpl exten
}
}
- LOG.debug(this.nodeName + " sending out status for " + numActiveContainers
+ LOG.debug(this.containerManagerBindAddress + " sending out status for " + numActiveContainers
+ " containers");
NodeHealthStatus nodeHealthStatus = this.context.getNodeHealthStatus();
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ResourceView.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ResourceView.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ResourceView.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/ResourceView.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,26 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager;
+
+public interface ResourceView {
+
+ long getVmemAllocatedForContainers();
+
+ long getPmemAllocatedForContainers();
+}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/ContainerManagerImpl.java Wed Apr 20 05:38:57 2011
@@ -90,6 +90,7 @@ public class ContainerManagerImpl extend
private static final Log LOG = LogFactory.getLog(ContainerManagerImpl.class);
final Context context;
+ private final ContainersMonitor containersMonitor;
private Server server;
private InetSocketAddress cmAddr;
private final ResourceLocalizationService rsrcLocalizationSrvc;
@@ -103,7 +104,7 @@ public class ContainerManagerImpl extend
protected AsyncDispatcher dispatcher;
- private DeletionService deletionService;
+ private final DeletionService deletionService;
public ContainerManagerImpl(Context context, ContainerExecutor exec,
DeletionService deletionContext, NodeStatusUpdater nodeStatusUpdater) {
@@ -132,9 +133,9 @@ public class ContainerManagerImpl extend
auxiluaryServices.register(this);
addService(auxiluaryServices);
- ContainersMonitor containersMonitor =
+ this.containersMonitor =
new ContainersMonitorImpl(exec, dispatcher);
- addService(containersMonitor);
+ addService(this.containersMonitor);
dispatcher.register(ContainerEventType.class,
new ContainerEventDispatcher());
@@ -147,6 +148,10 @@ public class ContainerManagerImpl extend
addService(dispatcher);
}
+ public ContainersMonitor getContainersMonitor() {
+ return this.containersMonitor;
+ }
+
protected ResourceLocalizationService createResourceLocalizationService(
ContainerExecutor exec, DeletionService deletionContext) {
return new ResourceLocalizationService(this.dispatcher, exec,
@@ -179,7 +184,7 @@ public class ContainerManagerImpl extend
// RM gives the shared secret in registration during StatusUpdter#start()
// itself.
this.containerTokenSecretManager.setSecretKey(
- this.nodeStatusUpdater.getNodeName(),
+ this.nodeStatusUpdater.getContainerManagerBindAddress(),
this.nodeStatusUpdater.getRMNMSharedSecret());
}
server =
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/Application.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/Application.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/Application.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/Application.java Wed Apr 20 05:38:57 2011
@@ -24,9 +24,11 @@ import java.util.Map;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.Credentials;
import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.LocalResource;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.event.EventHandler;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container;
public interface Application extends EventHandler<ApplicationEvent> {
@@ -39,6 +41,8 @@ public interface Application extends Eve
String getUser();
+ Map<ContainerId, Container> getContainers();
+
ApplicationId getAppId();
ApplicationState getApplicationState();
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/ApplicationImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/ApplicationImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/ApplicationImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/application/ApplicationImpl.java Wed Apr 20 05:38:57 2011
@@ -115,6 +115,11 @@ public class ApplicationImpl implements
}
@Override
+ public Map<ContainerId, Container> getContainers() {
+ return this.containers;
+ }
+
+ @Override
public Map<String, String> getEnvironment() {
return env;
}
@@ -346,10 +351,10 @@ public class ApplicationImpl implements
if (app.containers.isEmpty()) {
// All containers are cleanedup.
app.handleAppFinishWithContainersCleanedup();
- return ApplicationState.FINISHING_CONTAINERS_WAIT;
+ return ApplicationState.APPLICATION_RESOURCES_CLEANINGUP;
}
- return ApplicationState.APPLICATION_RESOURCES_CLEANINGUP;
+ return ApplicationState.FINISHING_CONTAINERS_WAIT;
}
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitor.java Wed Apr 20 05:38:57 2011
@@ -19,9 +19,10 @@
package org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor;
import org.apache.hadoop.yarn.event.EventHandler;
+import org.apache.hadoop.yarn.server.nodemanager.ResourceView;
import org.apache.hadoop.yarn.service.Service;
public interface ContainersMonitor extends Service,
- EventHandler<ContainersMonitorEvent> {
+ EventHandler<ContainersMonitorEvent>, ResourceView {
}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java Wed Apr 20 05:38:57 2011
@@ -465,6 +465,16 @@ public class ContainersMonitorImpl exten
}
@Override
+ public long getVmemAllocatedForContainers() {
+ return this.maxVmemAllottedForContainers;
+ }
+
+ @Override
+ public long getPmemAllocatedForContainers() {
+ return this.maxPmemAllottedForContainers;
+ }
+
+ @Override
public void handle(ContainersMonitorEvent monitoringEvent) {
if (!(doCheckPhysicalMemory() || doCheckVirtualMemory())) {
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllApplicationsPage.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,101 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES_ID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit;
+
+import java.util.Map.Entry;
+
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.application.Application;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.BODY;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY;
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+
+import com.google.inject.Inject;
+
+public class AllApplicationsPage extends NMView {
+
+ @Override protected void preHead(Page.HTML<_> html) {
+ commonPreHead(html);
+ setTitle("Applications running on this node");
+ set(DATATABLES_ID, "applications");
+ set(initID(DATATABLES, "applications"), appsTableInit());
+ setTableStyles(html, "applications");
+ }
+
+ private String appsTableInit() {
+ return tableInit().
+ // applicationid, applicationstate
+ append(", aoColumns:[null, null]} ").toString();
+ }
+
+ @Override
+ protected Class<? extends SubView> content() {
+ return AllApplicationsBlock.class;
+ }
+
+ public static class AllApplicationsBlock extends HtmlBlock implements
+ NMWebParams {
+
+ private final Context nmContext;
+
+ @Inject
+ public AllApplicationsBlock(Context nmContext) {
+ this.nmContext = nmContext;
+ }
+
+ @Override
+ protected void render(Block html) {
+
+ TBODY<TABLE<BODY<Hamlet>>> tableBody =
+ html
+ .body()
+ .table("#applications")
+ .thead()
+ .tr()
+ .td()._("ApplicationId")._()
+ .td()._("ApplicationState")._()
+ ._()
+ ._()
+ .tbody();
+ for (Entry<ApplicationId, Application> entry : this.nmContext
+ .getApplications().entrySet()) {
+ ApplicationId appId = entry.getKey();
+ Application app = entry.getValue();
+ String appIdStr = ConverterUtils.toString(appId);
+ tableBody
+ .tr()
+ .td().a(url($(NM_HTTP_URL), "yarn", "application", appIdStr), appIdStr)._()
+ .td()._(app.getApplicationState())
+ ._()
+ ._();
+ }
+ tableBody._()._()._();
+ }
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/AllContainersPage.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,100 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES_ID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit;
+
+import java.util.Map.Entry;
+
+import org.apache.hadoop.yarn.api.records.ContainerId;
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.BODY;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TBODY;
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+
+import com.google.inject.Inject;
+
+public class AllContainersPage extends NMView {
+
+ @Override protected void preHead(Page.HTML<_> html) {
+ commonPreHead(html);
+ setTitle("All containers running on this node");
+ set(DATATABLES_ID, "containers");
+ set(initID(DATATABLES, "containers"), containersTableInit());
+ setTableStyles(html, "containers");
+ }
+
+ private String containersTableInit() {
+ return tableInit().
+ // containerid, containerid, log-url
+ append(", aoColumns:[null, null, {bSearchable:false}]} ").toString();
+ }
+
+ @Override
+ protected Class<? extends SubView> content() {
+ return AllContainersBlock.class;
+ }
+
+ public static class AllContainersBlock extends HtmlBlock implements
+ NMWebParams {
+
+ private final Context nmContext;
+
+ @Inject
+ public AllContainersBlock(Context nmContext) {
+ this.nmContext = nmContext;
+ }
+
+ @Override
+ protected void render(Block html) {
+ TBODY<TABLE<BODY<Hamlet>>> tableBody = html.body()
+ .table("#containers")
+ .thead()
+ .tr()
+ .td()._("ContainerId")._()
+ .td()._("ContainerState")._()
+ .td()._("logs-url")._()
+ ._()
+ ._().tbody();
+ for (Entry<ContainerId, Container> entry : this.nmContext
+ .getContainers().entrySet()) {
+ ContainerId containerId = entry.getKey();
+ Container container = entry.getValue();
+ String containerIdStr = ConverterUtils.toString(containerId);
+ tableBody
+ .tr()
+ .td().a(url($(NM_HTTP_URL), "yarn", "container", containerIdStr),
+ containerIdStr)._()
+ .td()._(container.getContainerState())._()
+ .td()._("TODO")._()
+ ._();
+ }
+ tableBody._()._()._();
+ }
+
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ApplicationPage.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,101 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.DATATABLES_ID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.tableInit;
+
+import java.util.Map;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ContainerId;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.application.Application;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.TABLE;
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+import org.apache.hadoop.yarn.webapp.view.InfoBlock;
+
+import com.google.inject.Inject;
+
+public class ApplicationPage extends NMView implements NMWebParams {
+
+ @Override protected void preHead(Page.HTML<_> html) {
+ commonPreHead(html);
+ set(DATATABLES_ID, "containers");
+ set(initID(DATATABLES, "containers"), containersTableInit());
+ setTableStyles(html, "containers");
+ }
+
+ private String containersTableInit() {
+ return tableInit().append(",aoColumns:[null]}").toString();
+ }
+
+ @Override
+ protected Class<? extends SubView> content() {
+ return ApplicationBlock.class;
+ }
+
+ public static class ApplicationBlock extends HtmlBlock implements
+ NMWebParams {
+
+ private final Context nmContext;
+ private final Configuration conf;
+ private final RecordFactory recordFactory;
+
+ @Inject
+ public ApplicationBlock(Context nmContext, Configuration conf) {
+ this.conf = conf;
+ this.nmContext = nmContext;
+ this.recordFactory = RecordFactoryProvider.getRecordFactory(this.conf);
+ }
+
+ @Override
+ protected void render(Block html) {
+ ApplicationId applicationID =
+ ConverterUtils.toApplicationId(this.recordFactory,
+ $(APPLICATION_ID));
+ Application app = this.nmContext.getApplications().get(applicationID);
+ Map<ContainerId, Container> containers = app.getContainers();
+ info("Application's information")
+ ._("ApplicationId", ConverterUtils.toString(app.getAppId()))
+ ._("ApplicationState", app.getApplicationState().toString())
+ ._("User", app.getUser());
+ TABLE<Hamlet> containersListBody = html._(InfoBlock.class)
+ .table("#containers");
+ for (ContainerId containerId : containers.keySet()) {
+ String containerIdStr = ConverterUtils.toString(containerId);
+ containersListBody
+ .tr().td()
+ .a(url($(NM_HTTP_URL), "yarn", "container", containerIdStr),
+ containerIdStr)
+ ._()._();
+ }
+ containersListBody._();
+ }
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerPage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerPage.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerPage.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/ContainerPage.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,75 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.api.records.ContainerId;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+import org.apache.hadoop.yarn.webapp.view.InfoBlock;
+
+import com.google.inject.Inject;
+
+public class ContainerPage extends NMView implements NMWebParams {
+
+ @Override
+ protected void preHead(Page.HTML<_> html) {
+ commonPreHead(html);
+ setTitle("Container " + $(CONTAINER_ID));
+ set(initID(ACCORDION, "nav"), "{autoHeight:false, active:2}");
+ }
+
+ @Override
+ protected Class<? extends SubView> content() {
+ return ContainerBlock.class;
+ }
+
+ public static class ContainerBlock extends HtmlBlock implements NMWebParams {
+
+ private final Configuration conf;
+ private final Context nmContext;
+ private final RecordFactory recordFactory;
+
+ @Inject
+ public ContainerBlock(Configuration conf, Context nmContext) {
+ this.conf = conf;
+ this.nmContext = nmContext;
+ this.recordFactory = RecordFactoryProvider.getRecordFactory(this.conf);
+ }
+
+ @Override
+ protected void render(Block html) {
+ ContainerId containerID =
+ ConverterUtils.toContainerId(this.recordFactory, $(CONTAINER_ID));
+ Container container = this.nmContext.getContainers().get(containerID);
+ info("Container information")
+ ._("ContainerID", $(CONTAINER_ID))
+ ._("ContainerState", container.getContainerState());
+ html._(InfoBlock.class);
+ }
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMController.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMController.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMController.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMController.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,69 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.util.StringHelper.join;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.server.nodemanager.NMConfig;
+import org.apache.hadoop.yarn.webapp.Controller;
+
+import com.google.inject.Inject;
+
+public class NMController extends Controller implements NMWebParams {
+
+ @Inject
+ public NMController(Configuration nmConf, RequestContext requestContext) {
+ super(requestContext);
+ set(NM_HTTP_URL,
+ join("http://", nmConf.get(NMConfig.NM_HTTP_BIND_ADDRESS,
+ NMConfig.DEFAULT_NM_HTTP_BIND_ADDRESS)));
+ }
+
+ @Override
+ // TODO: What use of this with info() in?
+ public void index() {
+ setTitle(join("NodeManager - ", $(NM_NODENAME)));
+ }
+
+ public void info() {
+ info("NodeManager:\n" + $(NM_HTTP_URL));
+ render(NodePage.class);
+ }
+
+ public void node() {
+ render(NodePage.class);
+ }
+
+ public void allApplications() {
+ render(AllApplicationsPage.class);
+ }
+
+ public void allContainers() {
+ render(AllContainersPage.class);
+ }
+
+ public void application() {
+ render(ApplicationPage.class);
+ }
+
+ public void container() {
+ render(ContainerPage.class);
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMView.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMView.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMView.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMView.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,46 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION_ID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.THEMESWITCHER_ID;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.view.TwoColumnLayout;
+
+public class NMView extends TwoColumnLayout {
+
+ @Override protected void preHead(Page.HTML<_> html) {
+ commonPreHead(html);
+ }
+
+ protected void commonPreHead(Page.HTML<_> html) {
+ html.meta_http("refresh", "10");
+ set(ACCORDION_ID, "nav");
+ set(initID(ACCORDION, "nav"), "{autoHeight:false, active:1}");
+ set(THEMESWITCHER_ID, "themeswitcher");
+ }
+
+ @Override
+ protected Class<? extends SubView> nav() {
+ return NavBlock.class;
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebParams.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebParams.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebParams.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NMWebParams.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,26 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+public interface NMWebParams {
+ public static final String NM_NODENAME = "nm.id";
+ public static final String NM_HTTP_URL = "nm.http-url";
+ public static final String APPLICATION_ID = "nm.appId";
+ public static final String CONTAINER_ID = "nm.containerId";
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NavBlock.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,44 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+
+public class NavBlock extends HtmlBlock implements NMWebParams {
+
+ @Override
+ protected void render(Block html) {
+ html
+ .div("#nav")
+ .h3()._("NodeManager")._() // TODO: Problem if no header like this
+ .ul()
+ .li()
+ .a(url($(NM_HTTP_URL), "yarn", "node"), "Node Information")._()
+ .li()
+ .a(url($(NM_HTTP_URL), "yarn", "allApplications"), "List of Applications")
+ ._()
+ .li()
+ .a(url($(NM_HTTP_URL), "yarn","allContainers"), "List of Containers")._()
+ ._()
+ .h3()._("Tools")._()
+ ._()
+ .div("#themeswitcher")._();
+ }
+
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NodePage.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NodePage.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NodePage.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/NodePage.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,73 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.ACCORDION;
+import static org.apache.hadoop.yarn.webapp.view.JQueryUI.initID;
+
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.ResourceView;
+import org.apache.hadoop.yarn.webapp.SubView;
+import org.apache.hadoop.yarn.webapp.hamlet.Hamlet.HTML;
+import org.apache.hadoop.yarn.webapp.view.HtmlBlock;
+import org.apache.hadoop.yarn.webapp.view.InfoBlock;
+
+import com.google.inject.Inject;
+
+public class NodePage extends NMView {
+
+ @Override
+ protected void commonPreHead(HTML<_> html) {
+ super.commonPreHead(html);
+ set(initID(ACCORDION, "nav"), "{autoHeight:false, active:1}");
+ }
+
+ @Override
+ protected Class<? extends SubView> content() {
+ return NodeBlock.class;
+ }
+
+ public static class NodeBlock extends HtmlBlock {
+
+ private final Context context;
+ private final ResourceView resourceView;
+
+ @Inject
+ public NodeBlock(Context context, ResourceView resourceView) {
+ this.context = context;
+ this.resourceView = resourceView;
+ }
+
+ @Override
+ protected void render(Block html) {
+ info("NodeManager information")
+ ._("Total Vmem allocated for Containers",
+ this.resourceView.getVmemAllocatedForContainers() + "bytes")
+ ._("Total Pmem allocated for Container",
+ this.resourceView.getPmemAllocatedForContainers() + "bytes")
+ ._("NodeHealthyStatus",
+ this.context.getNodeHealthStatus().getIsNodeHealthy())
+ ._("LastNodeHealthTime",
+ this.context.getNodeHealthStatus().getLastHealthReportTime())
+ ._("NodeHealthReport",
+ this.context.getNodeHealthStatus().getHealthReport());
+ html._(InfoBlock.class);
+ }
+ }
+}
Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java?rev=1095271&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/webapp/WebServer.java Wed Apr 20 05:38:57 2011
@@ -0,0 +1,102 @@
+/**
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.apache.hadoop.yarn.server.nodemanager.webapp;
+
+import static org.apache.hadoop.yarn.util.StringHelper.pajoin;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.server.nodemanager.Context;
+import org.apache.hadoop.yarn.server.nodemanager.NMConfig;
+import org.apache.hadoop.yarn.server.nodemanager.ResourceView;
+import org.apache.hadoop.yarn.service.AbstractService;
+import org.apache.hadoop.yarn.webapp.WebApp;
+import org.apache.hadoop.yarn.webapp.WebApps;
+
+public class WebServer extends AbstractService {
+
+ private static final Log LOG = LogFactory.getLog(WebServer.class);
+
+ private final Context nmContext;
+ private final ResourceView resourceView;
+ private WebApp webApp;
+ private String bindAddress;
+
+ public WebServer(Context nmContext, ResourceView resourceView) {
+ super(WebServer.class.getName());
+ this.nmContext = nmContext;
+ this.resourceView = resourceView;
+ }
+
+ @Override
+ public synchronized void init(Configuration conf) {
+ super.init(conf);
+ }
+
+ @Override
+ public synchronized void start() {
+ this.bindAddress = getConfig().get(NMConfig.NM_HTTP_BIND_ADDRESS,
+ NMConfig.DEFAULT_NM_HTTP_BIND_ADDRESS);
+ LOG.info("Instantiating NMWebApp at " + this.bindAddress);
+ try {
+ this.webApp =
+ WebApps.$for("yarn", Context.class, this.nmContext)
+ .at(this.bindAddress).with(getConfig())
+ .start(new NMWebApp(this.resourceView));
+ } catch (Exception e) {
+ String msg = "NMWebapps failed to start.";
+ LOG.error(msg, e);
+ throw new YarnException(msg);
+ }
+ super.start();
+ }
+
+ @Override
+ public synchronized void stop() {
+ if (this.webApp != null) {
+ this.webApp.stop();
+ }
+ super.stop();
+ }
+
+ public class NMWebApp extends WebApp implements NMWebParams {
+
+ private final ResourceView resourceView;
+
+ public NMWebApp(ResourceView resourceView) {
+ this.resourceView = resourceView;
+ }
+
+ @Override
+ public void setup() {
+ bind(ResourceView.class).toInstance(this.resourceView);
+ route("/", NMController.class, "info");
+ route("/node", NMController.class, "node");
+ route("/allApplications", NMController.class, "allApplications");
+ route("/allContainers", NMController.class, "allContainers");
+ route(pajoin("/application", APPLICATION_ID), NMController.class,
+ "application");
+ route(pajoin("/container", CONTAINER_ID), NMController.class,
+ "container");
+ }
+
+ }
+}
Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/LocalRMInterface.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/LocalRMInterface.java?rev=1095271&r1=1095270&r2=1095271&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/LocalRMInterface.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-server/yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/LocalRMInterface.java Wed Apr 20 05:38:57 2011
@@ -36,7 +36,9 @@ public class LocalRMInterface implements
@Override
public RegisterNodeManagerResponse registerNodeManager(RegisterNodeManagerRequest request) throws YarnRemoteException {
- String node = request.getNode();
+ String host = request.getHost();
+ int cmPort = request.getContainerManagerPort();
+ String node = host + ":" + cmPort;
Resource resource = request.getResource();
RegistrationResponse registrationResponse = recordFactory.newRecordInstance(RegistrationResponse.class);
registrationResponse.setNodeId(recordFactory.newRecordInstance(NodeId.class));