The reason is that you don't want a socket to the RM machine to be held up - we expect to have thousands of AMs running concurrently. Essentially a blocking call could result in a DoS attack on the RM.
Eventually, YARN will move to async RPC and won't have this quirk.
On Jun 7, 2013, at 8:54 AM, Rahul Bhattacharjee wrote:
> I have a basic question related to RM of Yarn. Why is the allocate container request to RM doesn't always return with containers. The call can actually block and return when containers are available.
> Scenario :
> I launcher AM.
> The AM requests for 5 containers.
> The response returns without any containers.
> I send the request for containers , again and again and the RM returns containers (sometimes less than the number that I have asked for).
> Is this something to do with the heartbeat as the allocate call must return within a predictable time period?
Arun C. Murthy