1. A method of computing resource allocation for map-reduce job execution, the method comprising: determining, using a processor, the volume of input data to the map-phase and the reduce-phase of a map-reduce job prior to execution; based on said determination, using the processor for selectively placing data blocks and virtual machines (VMs) for locality aware map-reduce job execution on a cluster of computing nodes in a network, wherein the network comprises a network tree topology; wherein selectively placing data blocks and VMs comprises: integrally placing the data and the VMs at selected nodes to lower data transfer network hops for a map-phase and a shuffle-phase of the map-reduce job upon execution by the VMs; and selectively placing data blocks and VMs by processing the network tree topology to find shortest subtrees that have a particular number of nodes.