YARN-4201. AMBlacklist does not work for minicluster. Contributed by Jun Gong.
(cherry picked from commit 049c6e8dc0
)
This commit is contained in:
parent
85b5481d87
commit
9988b57e71
|
@ -872,6 +872,8 @@ Release 2.8.0 - UNRELEASED
|
||||||
YARN-4140. RM container allocation delayed incase of app submitted to
|
YARN-4140. RM container allocation delayed incase of app submitted to
|
||||||
Nodelabel partition. (Bibin A Chundatt via wangda)
|
Nodelabel partition. (Bibin A Chundatt via wangda)
|
||||||
|
|
||||||
|
YARN-4201. AMBlacklist does not work for minicluster. (Jun Gong via zxu)
|
||||||
|
|
||||||
Release 2.7.2 - UNRELEASED
|
Release 2.7.2 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -94,6 +94,7 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.event.RMAppAt
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl;
|
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeFinishedContainersPulledByAMEvent;
|
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeFinishedContainersPulledByAMEvent;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.Allocation;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.Allocation;
|
||||||
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppAttemptAddedSchedulerEvent;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppAttemptAddedSchedulerEvent;
|
||||||
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppAttemptRemovedSchedulerEvent;
|
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.AppAttemptRemovedSchedulerEvent;
|
||||||
|
@ -1811,7 +1812,13 @@ public class RMAppAttemptImpl implements RMAppAttempt, Recoverable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAMNodeToBlackList(NodeId nodeId) {
|
private void addAMNodeToBlackList(NodeId nodeId) {
|
||||||
blacklistedNodesForAM.addNode(nodeId.getHost().toString());
|
SchedulerNode schedulerNode = scheduler.getSchedulerNode(nodeId);
|
||||||
|
if (schedulerNode != null) {
|
||||||
|
blacklistedNodesForAM.addNode(schedulerNode.getNodeName());
|
||||||
|
} else {
|
||||||
|
LOG.info(nodeId + " is not added to AM blacklist for "
|
||||||
|
+ applicationAttemptId + ", because it has been removed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -604,6 +604,7 @@ public abstract class AbstractYarnScheduler
|
||||||
SchedContainerChangeRequest decreaseRequest,
|
SchedContainerChangeRequest decreaseRequest,
|
||||||
SchedulerApplicationAttempt attempt);
|
SchedulerApplicationAttempt attempt);
|
||||||
|
|
||||||
|
@Override
|
||||||
public SchedulerNode getSchedulerNode(NodeId nodeId) {
|
public SchedulerNode getSchedulerNode(NodeId nodeId) {
|
||||||
return nodes.get(nodeId);
|
return nodes.get(nodeId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -352,4 +352,13 @@ public interface YarnScheduler extends EventHandler<SchedulerEvent> {
|
||||||
* @return maximum priority of cluster
|
* @return maximum priority of cluster
|
||||||
*/
|
*/
|
||||||
Priority getMaxClusterLevelAppPriority();
|
Priority getMaxClusterLevelAppPriority();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get SchedulerNode corresponds to nodeId.
|
||||||
|
*
|
||||||
|
* @param nodeId the node id of RMNode
|
||||||
|
*
|
||||||
|
* @return SchedulerNode corresponds to nodeId
|
||||||
|
*/
|
||||||
|
SchedulerNode getSchedulerNode(NodeId nodeId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -383,6 +383,21 @@ public class TestAMRestart {
|
||||||
public void testAMBlacklistPreventsRestartOnSameNode() throws Exception {
|
public void testAMBlacklistPreventsRestartOnSameNode() throws Exception {
|
||||||
YarnConfiguration conf = new YarnConfiguration();
|
YarnConfiguration conf = new YarnConfiguration();
|
||||||
conf.setBoolean(YarnConfiguration.AM_BLACKLISTING_ENABLED, true);
|
conf.setBoolean(YarnConfiguration.AM_BLACKLISTING_ENABLED, true);
|
||||||
|
testAMBlacklistPreventRestartOnSameNode(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(timeout = 100000)
|
||||||
|
public void testAMBlacklistPreventsRestartOnSameNodeForMinicluster()
|
||||||
|
throws Exception {
|
||||||
|
YarnConfiguration conf = new YarnConfiguration();
|
||||||
|
conf.setBoolean(YarnConfiguration.AM_BLACKLISTING_ENABLED, true);
|
||||||
|
conf.setBoolean(YarnConfiguration.RM_SCHEDULER_INCLUDE_PORT_IN_NODE_NAME,
|
||||||
|
true);
|
||||||
|
testAMBlacklistPreventRestartOnSameNode(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void testAMBlacklistPreventRestartOnSameNode(YarnConfiguration conf)
|
||||||
|
throws Exception{
|
||||||
MemoryRMStateStore memStore = new MemoryRMStateStore();
|
MemoryRMStateStore memStore = new MemoryRMStateStore();
|
||||||
memStore.init(conf);
|
memStore.init(conf);
|
||||||
final DrainDispatcher dispatcher = new DrainDispatcher();
|
final DrainDispatcher dispatcher = new DrainDispatcher();
|
||||||
|
|
Loading…
Reference in New Issue