Hi guys, 

I am trying to run an experiment where I want the reducers to be forced 
executing on a specific host. The simplest way I found it is to modify in 
RMContainerAllocator such that whenever there is an 
addContainerReq(ContainerRequest) for a reducer, I simply do: 
addResourceRequest(req.priority, host_X_name, req.capability) and return, 
instead of setting the resourceName to ResourceRequest.ANY. 

Unfortunately when I pass such a ResourceRequest for reducers through a 
makeRemoteRequest, the RM crashes, giving an ugly exception like: 
FATAL org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error in 
handling event type NODE_UPDATE to the scheduler
java.lang.NullPointerException
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue.assignContainers(LeafQueue.java:841)
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue.assignContainersToChildQueues(ParentQueue.java:640)
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue.assignContainers(ParentQueue.java:554)
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.nodeUpdate(CapacityScheduler.java:695)
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.handle(CapacityScheduler.java:739)
    at 
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.handle(CapacityScheduler.java:86)
    at 
org.apache.hadoop.yarn.server.resourcemanager.ResourceManager$SchedulerEventDispatcher$EventProcessor.run(ResourceManager.java:549)
    at java.lang.Thread.run(Thread.java:722)

Do you have other suggestion how I can enforce reducers execution on a certain 
host ? Or do you know what I am doing wrong here ? 

Thanks,
robert

Reply via email to