Computing resource allocation for map-reduce job execution comprises determining 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, data blocks and virtual machines (VMs) are selectively placed for locality aware map-reduce job execution on a cluster of computing nodes in a network. 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.