The recent emergence of cloud computing is making the vision of utility computing realizable, i.e., computing resources and services from a cloud can be delivered, utilized, and paid for in the same fashion as utilities like water or electricity. Current cloud service providers have taken some steps towards supporting the true pay-as-you-go or a utility-like pricing model, and current research points towards more fine-grained allocation and pricing of resources in the future. In such environments, resource provisioning becomes a challenging problem, since one needs to avoid both underprovisioning (leading to application slowdown) and overprovisioning (leading to unnecessary resource costs). In this paper, we consider this problem in the context of streaming applications. In these applications, since the data is generated by external sources, the goal is to carefully allocate resources so that the processing rate can match the rate of data arrival. We have developed a solution that can handle unexpected data rates, including the transient rates. We evaluate our approach using two streaming applications in a virtualized environment.