1. An apparatus comprising: at least one processor; a memory coupled to the at least one processor; a streaming application residing in the memory and executed by the at least one processor, the streaming application comprising a flow graph that includes a plurality of operators that process a plurality of data tuples; and a streams manager residing in the memory and executed by the at least one processor, the streams manager monitoring performance of the streaming application, and when the streams manager determines an under-performing operator relative to other operators and the under-performing operator of the streaming application can be optimized, sending a request to a cloud manager to provision at least one virtual machine, wherein the request specifies a location restriction that provides input for the cloud manger to determine a physical location for a preferred virtual machine based on physical location attributes of the preferred virtual machine; the cloud manager determines physical locations attributes of candidate virtual machines and determines the preferred virtual machine from the candidate virtual machines based on the physical location attributes in the request, the cloud manager provisions the preferred virtual machine; and wherein the streams manager modifies the flow graph to move the under-performing operator of the streaming application to the preferred virtual machine determined by the cloud manager based on physical location attributes of the preferred virtual machine meeting the location restriction sent in the request wherein the streams manager sends a notification to the cloud manager that the flow graph has been modified to make the cloud manager aware of the change for load balancing; and wherein the physical location attributes comprise: climate, cooling cost, data regulation environment, and a security attribute of the physical machine hosting the virtual machine that indicates a high level of security for the physical location hosting the virtual machine.