Search in sources :

Example 1 with LocalResourceRequest

use of org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest in project hadoop by apache.

the class DummyContainerManager method createResourceLocalizationService.

@Override
@SuppressWarnings("unchecked")
protected ResourceLocalizationService createResourceLocalizationService(ContainerExecutor exec, DeletionService deletionContext, Context context) {
    return new ResourceLocalizationService(super.dispatcher, exec, deletionContext, super.dirsHandler, context) {

        @Override
        public void handle(LocalizationEvent event) {
            switch(event.getType()) {
                case INIT_APPLICATION_RESOURCES:
                    Application app = ((ApplicationLocalizationEvent) event).getApplication();
                    // Simulate event from ApplicationLocalization.
                    dispatcher.getEventHandler().handle(new ApplicationInitedEvent(app.getAppId()));
                    break;
                case LOCALIZE_CONTAINER_RESOURCES:
                    ContainerLocalizationRequestEvent rsrcReqs = (ContainerLocalizationRequestEvent) event;
                    // simulate localization of all requested resources
                    for (Collection<LocalResourceRequest> rc : rsrcReqs.getRequestedResources().values()) {
                        for (LocalResourceRequest req : rc) {
                            LOG.info("DEBUG: " + req + ":" + rsrcReqs.getContainer().getContainerId());
                            dispatcher.getEventHandler().handle(new ContainerResourceLocalizedEvent(rsrcReqs.getContainer().getContainerId(), req, new Path("file:///local" + req.getPath().toUri().getPath())));
                        }
                    }
                    break;
                case CLEANUP_CONTAINER_RESOURCES:
                    Container container = ((ContainerLocalizationEvent) event).getContainer();
                    // TODO: delete the container dir
                    this.dispatcher.getEventHandler().handle(new ContainerEvent(container.getContainerId(), ContainerEventType.CONTAINER_RESOURCES_CLEANEDUP));
                    break;
                case DESTROY_APPLICATION_RESOURCES:
                    Application application = ((ApplicationLocalizationEvent) event).getApplication();
                    // decrement reference counts of all resources associated with this
                    // app
                    this.dispatcher.getEventHandler().handle(new ApplicationEvent(application.getAppId(), ApplicationEventType.APPLICATION_RESOURCES_CLEANEDUP));
                    break;
                default:
                    fail("Unexpected event: " + event.getType());
            }
        }
    };
}
Also used : Path(org.apache.hadoop.fs.Path) ContainerEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerEvent) LocalResourceRequest(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest) ContainerResourceLocalizedEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerResourceLocalizedEvent) ResourceLocalizationService(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService) ContainerLocalizationRequestEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ContainerLocalizationRequestEvent) ContainerLocalizationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ContainerLocalizationEvent) ApplicationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationEvent) LocalizationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.LocalizationEvent) ContainerLocalizationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ContainerLocalizationEvent) ApplicationLocalizationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ApplicationLocalizationEvent) Container(org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container) ApplicationLocalizationEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ApplicationLocalizationEvent) ApplicationInitedEvent(org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationInitedEvent) Application(org.apache.hadoop.yarn.server.nodemanager.containermanager.application.Application)

Example 2 with LocalResourceRequest

use of org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest in project hadoop by apache.

the class TestLocalResource method testResourceOrder.

@Test
public void testResourceOrder() throws URISyntaxException {
    Random r = new Random();
    long seed = r.nextLong();
    r.setSeed(seed);
    System.out.println("SEED: " + seed);
    long basetime = r.nextLong() >>> 2;
    org.apache.hadoop.yarn.api.records.LocalResource yA = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, FILE, PUBLIC, "^/foo/.*");
    final LocalResourceRequest a = new LocalResourceRequest(yA);
    // Path primary
    org.apache.hadoop.yarn.api.records.LocalResource yB = getYarnResource(new Path("http://yak.org:80/foobaz"), -1, basetime, FILE, PUBLIC, "^/foo/.*");
    LocalResourceRequest b = new LocalResourceRequest(yB);
    assertTrue(0 > a.compareTo(b));
    // timestamp secondary
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime + 1, FILE, PUBLIC, "^/foo/.*");
    b = new LocalResourceRequest(yB);
    assertTrue(0 > a.compareTo(b));
    // type tertiary
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, ARCHIVE, PUBLIC, "^/foo/.*");
    b = new LocalResourceRequest(yB);
    // don't care about order, just ne
    assertTrue(0 != a.compareTo(b));
    // path 4th
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, ARCHIVE, PUBLIC, "^/food/.*");
    b = new LocalResourceRequest(yB);
    // don't care about order, just ne
    assertTrue(0 != a.compareTo(b));
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, ARCHIVE, PUBLIC, null);
    b = new LocalResourceRequest(yB);
    // don't care about order, just ne
    assertTrue(0 != a.compareTo(b));
}
Also used : Path(org.apache.hadoop.fs.Path) LocalResourceRequest(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest) Random(java.util.Random) Test(org.junit.Test)

Example 3 with LocalResourceRequest

use of org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest in project hadoop by apache.

the class TestLocalResource method testResourceEquality.

@Test
public void testResourceEquality() throws URISyntaxException {
    Random r = new Random();
    long seed = r.nextLong();
    r.setSeed(seed);
    System.out.println("SEED: " + seed);
    long basetime = r.nextLong() >>> 2;
    org.apache.hadoop.yarn.api.records.LocalResource yA = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, FILE, PUBLIC, null);
    org.apache.hadoop.yarn.api.records.LocalResource yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, FILE, PUBLIC, null);
    final LocalResourceRequest a = new LocalResourceRequest(yA);
    LocalResourceRequest b = new LocalResourceRequest(yA);
    checkEqual(a, b);
    b = new LocalResourceRequest(yB);
    checkEqual(a, b);
    // ignore visibility
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), -1, basetime, FILE, PRIVATE, null);
    b = new LocalResourceRequest(yB);
    checkEqual(a, b);
    // ignore size
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), 0, basetime, FILE, PRIVATE, null);
    b = new LocalResourceRequest(yB);
    checkEqual(a, b);
    // note path
    yB = getYarnResource(new Path("hdfs://dingo.org:80/foobar"), 0, basetime, ARCHIVE, PUBLIC, null);
    b = new LocalResourceRequest(yB);
    checkNotEqual(a, b);
    // note type
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), 0, basetime, ARCHIVE, PUBLIC, null);
    b = new LocalResourceRequest(yB);
    checkNotEqual(a, b);
    // note timestamp
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), 0, basetime + 1, FILE, PUBLIC, null);
    b = new LocalResourceRequest(yB);
    checkNotEqual(a, b);
    // note pattern
    yB = getYarnResource(new Path("http://yak.org:80/foobar"), 0, basetime + 1, FILE, PUBLIC, "^/foo/.*");
    b = new LocalResourceRequest(yB);
    checkNotEqual(a, b);
}
Also used : Path(org.apache.hadoop.fs.Path) LocalResourceRequest(org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest) Random(java.util.Random) Test(org.junit.Test)

Aggregations

Path (org.apache.hadoop.fs.Path)3 LocalResourceRequest (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourceRequest)3 Random (java.util.Random)2 Test (org.junit.Test)2 Application (org.apache.hadoop.yarn.server.nodemanager.containermanager.application.Application)1 ApplicationEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationEvent)1 ApplicationInitedEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationInitedEvent)1 Container (org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container)1 ContainerEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerEvent)1 ContainerResourceLocalizedEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerResourceLocalizedEvent)1 ResourceLocalizationService (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService)1 ApplicationLocalizationEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ApplicationLocalizationEvent)1 ContainerLocalizationEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ContainerLocalizationEvent)1 ContainerLocalizationRequestEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.ContainerLocalizationRequestEvent)1 LocalizationEvent (org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.event.LocalizationEvent)1