1. An apparatus comprising: at least one processor; a memory coupled to the at least one processor; at least one split rule residing in the memory for at least one of the first plurality of streaming operators, wherein the at least one split rule specifies at least one of: a plurality of operators to keep together; and a plurality of operators to keep apart; a first streaming application residing in the memory and executed by the at least one processor, the first streaming application comprising a flow graph that includes a second 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 first streaming application, and when performance of the first streaming application needs to be improved, the streams manager determines at least one applicable split rule for the second plurality of operators, determines from the at least one applicable split rule how to split the flow graph of the first streaming application to create a first portion to be deployed to at least one virtual machine, requests a cloud manager to provision the at least one virtual machine, and when the cloud manager provisions the at least one virtual machine, the streams manager modifies the flow graph to deploy the first portion to the at least one virtual machine.